架构
这是我参与「第五届青训营」伴学笔记创作活动的第8天
定义
软件架构
- 有关软件整体结构与组件的抽象描述
- 用于指导软件系统各个方面的设计
单机
把所有功能都实现在一个进程里,部署到一台机器。
优点:简单
缺点:C10K problem、运维需要停服。
分布式架构(单体架构、垂直应用架构)
优点:
- 水平扩容
- 运维不需要停服 缺点:
- 职责太多,开发效率低
- 爆炸半径大
SOA架构(Service-Oriented Architecture)
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标准 问题:
- 数据一致性
- 高可用
- 治理
- 解耦 vs 过微
微服务架构
SOA的 去中心化演进方向
后端架构
云计算
通过软件自动化管理,提供计算资源的服务网络 基础:
- 虚拟化技术
- 编排方案 架构:
- IaaS(Infrastructure as a Service)
- PaaS(Platform as a Service)
- SaaS(Software as a Service)
- FaaS(Function as a Service)
云原生
为组织(公司)在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。
- 弹性资源
- 微服务架构
- DevOps
- 服务网格
弹性资源
弹性计算资源
- 服务资源调度
- 计算资源调度
- 消息队列
弹性存储资源
- 经典
- 关系型数据库
- 元数据
- NoSQL
微服务架构
通信标准
- HTTP
- RPC 中间件(RPC VS HTTP)
- 性能
- 服务治理
- 协议可理解性
挑战
基础设施
- 物理资源有限
- 资源利用率受制于部署服务
用户层面
- 网络通信开销大
- 网络抖动导致运维成本大
- 异构环境下,不同实例资源水位不均
离在线资源并池
- 提高物理资源利用率
- 提供更多的弹性资源
微服务亲和性部署
通过将微服务调用形态与资源调度系统结合,将一些调用关系紧密、通信量大的服务部署在同一个机器上,并使用IPC代替RPC的方式,降低网络通信带来的开销