这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
架构的设计
随着需求量越来越大,必须要增加多个接口去负载----分布式部署
随着需求越来越复杂,必须要多个服务分工合作---微服务架构(SOA的去中心化演进方向)
终究需要一个平衡,一方面防止耦合,需要解耦;另外一方面防止过微,增大调度成本
企业后端架构剖析
云计算
- 基础 :虚拟化技术和编排方案
- 架构:IaaS PaaS SaaS FaaS
云原生
云原生技术为组织在公有云,自由云,混合云等新型的动态环境中,构建和运行科弹性拓展的应用提供了可能
弹性计算资源:
- 服务资源调度:如提供单一接口的微服务,抑或是提供统合微服务形成的大服务接口
- 计算资源调度:在线和离线下数据更新
- 消息队列:在线情况下满足削峰,解耦;离线情况下进行大数据分析
弹性存储资源类型:将存储资源也当成服务,通过类似rpc调用
DevOps
云原生时代软件交付的利器,贯穿整个软件开发流程;结合自动化流程,提高软件开发,交付效率
微服务架构
- 通信标准: ①Http (RESTful API) ②RPC (Thrift,gRPC)
云原生场景下,微服务大可不必在业务逻辑在实现符合通信标准的交互逻辑,而是交给框架来做。
这样开发人员只要专注于业务逻辑的开发即可
服务网格
- 微服务之间通讯的中间层
- 高性能网络代理
- 业务代码与治理解耦
- 相较于RPC/HTTP框架 ,异构系统治理统一化,与业务进程解耦,生命周期易管理
架构的问题和解决方案
在实际开发中,一方面在基础设施层面上:由于物理资源有限,资源利用率受制于部署服务;另一方面在用户层面上:网络通信开销大,网络抖动导致运维成本提高,异构环境下,不同实例资源水位不均
离在线资源并池
将离线资源和在线资源都放到一个混合资源池中,利用在线业务和离线业务的特点进行离在线隔离
- 自动扩缩容:利用在线业务的潮汐性进行自动扩缩容
- 微服务亲和性部署:我的理解是一些微服务之间会存在较为频繁的rpc调度,那么就将这些容器调度到一台宿主机,用在中间件用IPC调度,再通过服务网格调控流量,实现不同宿主机之间RPC的流量调度
- CPU水位负载均衡:IaaS提供资源探针,服务网格依此进行动态的负载均衡,即时调度资源。课程最后的自适应动态权重方案就是基于此进行的.