架构初探-谁动了我的蛋糕(一)、(二)|zo的笔记|青训营笔记

79 阅读5分钟

这是我参与「第五届青训营 」笔记创作活动的第8天。注:笔记大部分图片内容及代码段为青训营课程视频提供,仅交流,不得做个人使用

一、本课主要内容

什么是架构 | 企业级后端架构剖析 | 企业级后端架构的挑战 | 后端架构实战

二、本节详细知识点

什么是架构

  • 架构的定义
  • 架构的问题 单机 | 单体、垂直应用(垂直切分) | SOA、微服务(水平切分)

企业级后端架构剖析
背景 | 云计算 | 云原生

定义

  • 架构,又称软件架构, ·是有关软件整体结构与组件的抽象描述
    ·用于指导软件系统各个方面的设计
  • Q:定义还是太抽象,能不能再通俗一点? 实现一个软件有很多种方法,架构在方法选择上起着至关重要的指导作用
  • Q:架构的重要性? ·地基没打好,大厦容易倒
    ·地基坚实了,大厦才能盖得高
    ·站在巨人肩膀上,才能看得远

架构的问题

兰师傅蛋糕坊要开张了,亟须解决如下问题:
如何做蛋糕
·独家秘方,还是亲自做比较好
如何卖蛋糕 ·刚开始客流量应该不大,边做边卖
看起来问题都解决了,开张!

image.png

单机

软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上
优点: 简单

image.png 问题:
· C10K problem tcp - 高性能网络编程(二):上一个10年,著名的C10K并发连接问题 - 即时通讯开发 - SegmentFault 思否
· 运维需要停服

  • 演进:如何卖更多蛋糕?多雇几个蛋糕师傅

单体、垂直应用|垂直切分

单体架构:分布式部署

image.png 垂直应用架构:按应用垂直切分的单体
优点: 水平扩容;运维不需要停服
问题:职责太多,开发效率不高; 爆炸半径大(一种完整的蛋糕)
演进:如何提高做蛋糕效率? :分工协作

SOA、微服务|水平切分

SOA(Service-0riented Architecture)
1.将应用的不同功能单元抽象为服务
2.定义服务之间的通信标准

image.png 微服务架构:SOA的去中心化演进方向

image.png ——问题:
·数据一致性 :装货台共交付了多少蛋糕?
·高可用 :这么多师傅,如何合作?
·治理 :烤箱坏了,怎么容灾?
·解耦vs过微 :运维成本高了,值当么?

小结

架构的演进初表:好比做蛋糕。
·需求量越来越大,终归要增加人手 | ·越做越复杂,终归要分工合作
架构的演进思路:就像切蛋糕。蛋糕越来越大,一口吃不下终归要切分
竖着切(垂直切分) | 横着切(水平切分)

企业级后端架构剖析

背景

兰师傅蛋糕店经过3年的蓬勃发展,积累了良好的口碑和用户基础,接下来,需要扩大规模。
-店面怎么盘:
买、租
-师傅怎么招: 兰师傅全家出马、招培训班出身的
-是否继续坚持纯手工制作?
-规模大了之后,工作重心应该是?
精进蛋糕制作收益(微观);蛋糕店重点方向梳理&未来规划(宏观)

云计算

云计算是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石。
基础:
虚拟化技术-整租vs合租;编排方案-业主vs租赁平台
架构:
laas (Infrastructure as a Service)·买房子vs房屋租赁平台
PaaS (Platform as a Service)·清包(材料自己买)vs全包(自己只出钱)
SaaS (Software as a Service)·从零培训vs雇佣培训过的师傅
FaaS (Function as a Service)·纯手工制作vs蛋糕机批量生产

image.png

云原生

云原生技术为组织(公司)在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。

image.png 弹性资源:用户使用时感觉自己的资源可无限拓展。自由扩缩。
微服务架构:业务形态多样化成为可能
DecOps:开发、运营等的一整套云上技术栈工具 服务网络:进一步解藕

云原生之弹性计算资源

弹性计算资源类型:
image.png -服务资源调度
·微服务:和面、雕花
·大服务:烤箱(量高,被占用)

-计算资源调度
·在线:热销榜单
·离线:热销榜单更新
-消息队列

·在线:削峰、解耦
·离线:大数据分析

弹性存储资源
类型:
-经典
·对象:宣传视频 ·大数据:用户消费记录
-关系型数据库
·收银记录
-元数据
·服务发现:蛋糕店通讯录
-NoSQL
·KV存储:来个xx蛋糕 总结:将存储资源当成服务一样

云原生之DevOps

DevOps 是云原生时代软件交付的利器,贯穿整个软件开发周期。
结合自动化流程,提高软件开发、交付效率。 image.png

云原生之微服务架构

-通信标准:
HTTP(RESTful API)
RPC (Thrift,gRPC)
-微服务中间件 RPC vs HTTP:
性能 | 服务治理 | 协议可解释性
-云原生场景下,微服务大可不必在业务逻辑中实现符合通信标准的交互逻辑,而是交给框架来做

云原生之服务网格

-服务网格(Service Mesh):
·微服务之间通讯的中间层
·高性能网络代理
·业务代码与治理解耦
-相比较于RPC/HTTP框架:
·异构系统治理统一化
·与业务进程解耦,生命周期易管理

image.png 相当于微服务通讯的中间层

云原生蛋糕店

企业级蛋糕店架构: 售卖、蛋糕制作(肉松、慕斯)、会员激励、满意度分析、研发新品

image.png