这是我参与「第五届青训营 」笔记创作活动的第5天
架构的定义
有关软件整体结构与组件的抽象描述
单体架构:分布式部署
垂直应用架构:按应用垂直切分的单体
SOA Service-Oriented Architecture:应用的不同功能单元抽象为服务;服务之间需要通信标准
微服务架构
架构演进初衷:需求量越来越大,终归要增加人手
越做越复杂,终归要分工合作
演进思路:
垂直切分:具有横向拓展的能力
水平切分:模块独立性更强,耦合性降低
企业级后端架构剖析
云计算:通过软件自动化管理,提供计算资源的服务网络。
虚拟化技术:整租 vs 合租
编排方案:业主 vs 租赁平台
架构:
- Iaas 买房子 vs 房屋租赁平台
- Paas 自己装修 vs 装修公司
清包:材料自己买,别人装修
全包:只出钱
- Saas 从零培训 vs 雇佣培训过的师傅 弹性资源平台构建的云服务
- Faas 纯手工制作 vs 蛋糕机批量生产
云原生:在公有云、自由云、混合云等动态环境中,构建和运行可以弹性拓展的应用提供了可能。
弹性资源:服务资源、计算资源、消息队列、存储资源
DevOps:服务已经部署到云上,开发和运营相关技术栈
服务网格:业务与治理解构
企业级后端架构的挑战
在线业务特点:
- IO密集型为主
- 潮汐性、实时性
离线业务特点:
- 计算密集型多数
- 非实时性
解决方案:
晚上离线业务池扩展起来,早晨多扩展在线业务池。
自动扩缩容:目的是降低业务成本
- 利用在线业务潮汐性自动扩缩容
另一种解决方案:微服务亲和性部署
核心收益
- 降低业务成本
- 提高服务可用性
满足亲和性条件的容器调度到一台宿主机,微服务中间件与服务网格通过共享内存通信
流量治理
核心收益:
- 提高微服务调用容错性
- 容灾
- 进一步提高开发效率,DevOps发挥到极致
CPU水位负载均衡
IaaS:提供资源探针
如何做架构设计
- 需求先行,弄清楚需要解决什么问题
- 业界调研,业界都有哪些方案可以提供参考
- 技术选项。内部/社区都有哪些基础组件
- 异常情况