这是我参与「第五届青训营 」笔记创作活动的第8天
什么是架构
- 是有关软件整体结构和组件的抽象描述
- 用于指导软件系统各方面的设计
架构发展,分类
单机架构:把所有功能都实现在一个进程里,并部署在一台机器中 单体架构:按照功能进行垂直切分,引入多台机器,进行分布式部署 SOA (Service Oriented Architecture):把功能单元抽象为服务 微服务框架:SOA的去中心化演进
架构的演进的原因即系统需求越来越大,功能逻辑越来越复杂,需要低耦合,便于维护和扩展
- 企业级后端架构分析
使用虚拟化技术,使用网络中现成的资源(硬件和软件) 云计算可分为四层:IaaS(基础设施即服务,如硬件资源)、 PaaS(平台即服务,如操作系统,数据库系统,) 、SaaS(软件即服务,一些应用层软件,如在线文档) 、FaaS(函数即服务)
- 企业级后端架构挑战
在用户的角度,云的资源是无限的,当我们知道实际上是对应有限的硬件资源(服务器,CPU,内存),要考虑如何有效,合理,高效率的使用有限的硬件资源,并且要向用户屏蔽物理资源(对于用户来说物理环境是透明的)。
分布式部署,微服务架构,要解决各个服务(模块)的通信,降低网络通信的代价。
实践练习例子
设计一个根据主机层面的资源信息,实时进行流量调度的系统,打平不同宿主机异构环境的算力差异
自适应静态权重:采集机器的物理资源信息,调整各个机器的权重
自适应动态权重Alpha
自适应动态权重Beta
自适应动态权重Release
企业架构挑战
基础建设层面
- 物理资源的限制
- 资源利用率受限于部署服务
用户层面
- 网络通信开销
- 运维成本由于网络波动而提高
- 异构环境下,不同实例的资源水位不均
思路
合并离在线资源池
按照资源响应的潮汐规律,合并一系列的在线和离线资源池,动态调整不同资源池的占用率,使得整体的使用率上升
自动扩缩容
如何按照业务的潮汐性扩缩容?指标是啥?
微服务亲和性部署
部署到不同物理机上的微服务通信使用rpc很依赖网络环境,而如果两个不同的微服务通信频率很高,那么可以将二者部署到同一台宿主机上,使用机内ipc的调用避免rpc的调用,从而减小开销。如何依据服务通信频率自动部署服务到同一宿主机就是亲和性部署的问题
流量治理
基于微服务中间件&服务网格的流量治理
CPU水位负载
异构CPU应对相同的服务占用率不同,如何解决在异构服务器上部署的服务CPU的水位负载
在Iaas层面提供了资源探针响应了宿主机的荷载情况后,响应到注册中心进行资源调度
-
服务向注册中心响应自己的资源信息,实现自适应的静态权重能力
-
其中问题就在于无法提供紧急回滚的能力,而且无法实现运行时的自适应 解决方法就是加设动态的决策中心,使得可以动态更新注册中心的权重调度
-
但终究存在由于流量倾斜的问题,使得服务提供机依次承受不住高荷载流量而被打趴下的情况 为此,让服务网格上报服务调用的响应情况,评估流量分配情况
-
最终,自适应动态权重服务就会变回最初提到的单击模式,可以使用微服务的思想将整个服务进行拆分,降低单点故障的可能性,提升整个系统的可靠性