这是我参与「第五届青训营 」笔记创作活动的第8天
本篇文章介绍了构架的相关基础知识,主要从什么是构架、企业级后端架剖析、企业级后端构架的挑战、后端构架实战四个方面进行介绍。
1.构架的基本内容
定义:架构又称软件架构,是有关软件整体结构与组件的抽象描述,用于指导软件系统各方面的设计。
对于架构,这边通过一个背景知识来对架构问题进行理解:
问题为:兰师傅蛋糕坊要开张了,亟需解决如下问题:
-
如何做蛋糕,独家秘方,还是亲自做比较好
-
如何卖蛋糕,刚开始客流量应该不大,边做边卖
于是,从该问题的背景进行出发,对架构问题进行充分的理解和学习。
1.1 单机
软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上
它的优点主要是:简单;对于架构的问题主要是:C10K problem;运维需要停服。
1.2 单体、垂直应用|垂直切分
单体架构:分布式部署
垂直应用架构:按应用垂直切分的单体;其主要优点是:水平扩容、运维不需要停服。
存在的问题主要是:职责太多,开发效率不高;爆炸半径大
1.3 SOA、微服务|水平切分
SOA(Service-Oriented Architecture):将应用的不同功能单元抽象为服务、定义服务之间的通信标准
微服务架构:SOA的去中心化演进方向
存在的问题主要是:数据一致性,其对应到背景知识,即:装货台共交付了多少蛋糕?
-
高可用,其对应到背景知识,即:这么多师傅,如何合作?
-
治理,其对应到背景知识,即:烤箱坏了,怎么容灾?
-
解耦vs过微,其对应到背景知识,即:运维成本高了,值当吗?
总结关于架构的内容,主要是:
-
架构的演进初衷:好比做蛋糕。
-
需求量越来越大,终归要增加人手;越做越复杂,终归要分工合作
-
架构的演进思路:就像切蛋糕。蛋糕越来越大,一口吃不下终归要切分:竖着切(垂直切分)、横着切(水平切分)
2.企业级后端架构剖析
首先从做蛋糕的背景知识进行分析,引出问题:
问题一:店面怎么盘:买or租
问题二:师傅怎么招:兰师傅全家出马or招培训班出身的
问题三:是否继续坚持纯手工制作?
问题四:规模大了之后,工作重心应该是?精进蛋糕制作收益or蛋糕店重点方向梳理&未来规划
2.1 云计算
云计算:是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。
从技术问题与实际背景问题进行对比理解:
基础:虚拟化技术-整租vs合租;编排方案-业主vs租赁平台
架构:
-
Iaas(Infrastructure as a Service) 买房子 vs 房屋租赁平台
-
PaaS(Platform as a Service) 清包 vs 全包
-
SaaS(Software as a Service) 从零培训 vs 雇佣培训过的师傅
-
FassS(Function as a Service) 纯手工制作 vs 蛋糕机批量生产
2.2 云原生
云原生技术为组织在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。
云原生主要包括四个方面,如下:
弹性资源:虚拟化容器、快速扩缩容;微服务架构:业务功能单元解耦、统一的通信标准;DevOps:敏捷开发、CI/CD;服务网络:业务与治理解构、业务与治理统一化、复杂治理能力
2.2.1 云原生之弹性计算资源
弹性计算资源类型:
-
服务资源调度
- 微服务:和面、雕花;大服务:烤箱
-
计算资源调度
- 在线:热销榜单;离线:热销榜单更新
-
消息队列
- 在线:削峰、解耦;离线:大数据分析
2.2.2 云原生之弹性存储资源
弹性存储资源类型:
-
经典:对象:宣传视频;大数据:用户消费记录
-
关系型数据库:收银记录
-
元数据:服务发现:蛋糕店通讯录
-
NoSQL:KV:来个xx蛋糕
2.2.3 云原生之微服务架构
通信标准:HTTP(RESTful API)
RPC(Thrift,gRPC)
微服务中间件RPC vs HTTP:性能、服务治理、协议可解释性
云原生场景下,微服务大可不必在业务逻辑中实现符合通信标准的交互逻辑,而是交给框架来做
2.2.4 云原生之服务网格
- 服务网格:
微服务之间通讯的中间层;高性能网络代理;业务代码与治理解耦
- 相比较RPC/HTTP框架:
异构系统治理统一化;与业务进程解耦,生命周期易管理
2.2.5 云原生蛋糕店
企业级蛋糕店架构:售卖、蛋糕制作(肉松、慕斯)、会员激励、满意度分析、研发新品。
3.总结
本文通过各方面根据蛋糕房的例子为背景,更加简单易懂的了解了架构的基础知识。架构对于计算服务有很重要的作用,因此需要更加的理解。
4.引用
本文的主要内容来自于字节内部课程。