简述企业级后端架构的一些挑战和解决方案 | 青训营笔记

52 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天

离线在线资源并池

在线业务指的是IO密集的,需要实时更新的业务,比如说热搜榜。他的特点是也有潮汐性、实时性。比如说在节假日的时候,使用的人数多,那么在线业务需要的资源就多;在工作日凌晨,用户数量少,那么在线业务就不需要这么多资源。可以看出,在线业务是具有潮汐性,实时性的

离线业务大多数是计算密集型的,比如说针对用户消费习惯的深度挖掘和分析,这些都需要更多的计算,而这些分析并不急着第一时间产出,因此是非实时性的

离线在线资源并池也就是将离线资源和在线资源都放入到一个混合池中,当在线业务较多的时候,将资源池中更多的资源分配给在线任务;当在线业务少的时候,将更多资源分配给离线业务

image.png

自动化扩缩容

离线在线资源并池中的一个关键技术是自动化扩缩容,也就是根据在线业务的资源需求量动态调整离线资源池和在线资源池的大小,从而提高资源利用率

自动化扩缩容可以通过CPU和内存的利用率来判断是否进行扩缩容

微服务亲和性部署

在实际项目中,需要花费在微服务之间的通信、请求的序列化、反序列化上的资源和时间是很大的,为了优化这些通信的资源和时间消耗,可以使用微服务亲和性部署。

也就是将满足亲和性条件的容器调用到一台宿主机,假设A服务和B服务存在非常大量的网络通信和紧密的通信关系,那么尽量将A和B都调度在一台宿主机上。同时使用微服务中间件或者之前提到的服务网格通过共享内存通信,从而优化服务。

image.png

CPU水位负载均衡

CPU水位负载均衡要打平异构环境算力的差异,使得不同宿主机之间的CPU的负载相对均衡,同时可以为自动扩缩容提供正向的输入,为自动扩缩容提供决策数据。

某些IaaS可以提供资源探针,使得Service Mesh控制面获取到CPU的相关信息,将更多的流量调度到处理能力较强的宿主机或者更空闲的宿主机上。而服务网格也可以实现动态的负载均衡

应该如何设计CPU水位负载均衡策略:

1、 需要哪些数据输入?

  • 服务网络数据面支持带权重的负载均衡策略
  • 注册中心存储的所有容器权重中心
  • 宿主机提供容器的资源使用情况和物理资源信息
  1. 设计时需要考虑哪些关键点
  • 紧急回滚能力、大规模场景、极端场景