Service Mesh在百度网盘数万后端的实践落地
本文作者:HelloDeveloper 1 背景 起初,在网盘快速发展期,为了快速上线,采用了服务单体化 + 主干开发模式进行研发,随着用户规模爆发式的增长以及产品形态的丰富,单体化的不足就体现出来了,于是架构上采用了微服务架构,开始对业务逻辑进行拆分部署。 服务拆分之后,也引入了新的问题,具体如下: 请求路由: 服务部署从物理机向虚拟化方式迁移中,有大量的切流量操作,需要相关的上游都进行升级上线修改,效率低下 故障管理: 单实例异常、服务级别异常、机房故障异常、网络异常等,严重缺失或者不完善,同时配套的故障定位也没有,服务稳定性不足 流量转发: 不同的服务采用了不同的框架,甚至裸框架,策略不完善,导致负载不均衡 研发效率: 相同的功能点,需要在不同的语言框架上实现一次,浪费人力,同时升级周期比较长,收敛效率低 2 解决方案 - UFC 2.1 UFC 发展史 为了解决这个问题,从2015年底开始思考解决方案,确定了解决问题的 核心在于管控请求流量 ,在2016年开始 自研网络流量转发中间件 - UFC(Unified Flow Control) ,业务通过同机部署的agent进行服务通信,相关的发展史如下: 2.2 UFC 和 Service Mesh的关系 后来在调研业界相关技术的时候,发现了istio(业界Service Mesh的典型代表) ,从而发现了Service