这是我参与[第五届青训营]伴学笔记创作活动的第 7 天
一、什么是架构
- 是有关软件整体结构与组件的抽象描述
- 用于指导软件系统各个方面的设计
单机
就是把所有功能都实现在一个进程里,并部署在一台机器上
优点:简单
缺点:C10K问题,运维需要停服
单体架构:分布式部署
垂直应用架构:按垂直应用切分的单体
优点:水平扩容,运维不需停服 缺点:职责太多,开发效率不高;爆炸半径大
SOA (Service-Oriented Architecture)
1.将应用的不同功能单元抽象为服务
2.定义服务之间的通信标准
微服务架构:SOA的去中心化演进方向
问题:数据一致性,高可用,治理,解耦vs过微
二、企业级后端架构剖析
云计算
是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石。
- 基础
- 虚拟化
- 编排
- 架构
- IaaS:基础设施服务,Infrastructure-as-a-service
- PaaS:平台服务,Platform-as-a-service
- SaaS:软件服务,Software-as-a-service
- FaaS:功能即服务,Function -as-a-service
云原生
云原生技术为组织(公司)在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能。
- 弹性资源
- 虚拟化容器
- 快速扩缩容
服务资源调度:微服务,大服务
计算资源调度:在线,离线
存储资源:经典(对象,大数据),关系型数据库(收银记录),元数据(服务发现),NoSQL(kv)
消息队列:在线,离线
- 微服务框架
- 业务功能逻辑单元
- 统一的通信标准
通信标准:HTTP,RPC
微服务中间体 RPC vs HTTP:
- 性能:RPC会进行通信的压缩,一般性能较好
- 服务治理:部分RPC中间件天生具备一定的治理能力
- 协议可解释性:http较好
-
DevOps
- 敏捷开发
- CI/CV
-
服务网络
- 业务与治理解构
- 异构系统的治理统一化
- 复杂治理能力
三、企业级后端架构的挑战
- 基础设施层面
- 物理资源是有限的
- 机器
- 带宽
- 资源利用率受制于部署服务
- 物理资源是有限的
- 用户层面
- 网络通信开销较大
- 网络抖动造成运维成本较高
- 异构环境下,不同实例资源水位不匀
离在线资源并池
在线业务特点:IO密集型为主,潮汐性、实时性
离线业务特点:计算密集型占多数,非实时性
同一机器如何做到离在线隔离:使用cgroup或虚拟化的方式,对cpu的核心做隔离,不同任务使用不同的cpu集合
自动扩缩容
扩缩容依据什么指标:对大部分微服务,使用cpu的某一个统计分位数
微服务亲合性部署
- 将满足亲合性条件的容器调度到一台宿主机
- 微服务中间件与服务网格通过共享内存通信
- 服务网格控制面实施灵活、动态的流量调度
基于微服务中间件&服务网格的流量治理
- 熔断、重试
- 单元化
- 复杂环境(功能、预览)的流量调度
CPU水位负载均衡
- laaS
- 提供资源探针
- 服务网格
- 动态负载均衡