Service Mesh在百度网盘数万后端的实践落地

本文详细介绍了百度网盘如何从单体架构演进到微服务架构,并自研UFC解决服务治理问题。UFC作为Service Mesh的一种实现,覆盖了请求路由、流量转发、故障处理等多个方面。通过服务注册、服务通信等机制,UFC实现了服务间的稳定通信。在服务治理上,不仅提供了基于Service Mesh的解决方案,还实现了全局视角的服务治理,包括故障预防、故障定位和故障处理。文章最后讨论了未来UFC的演进方向,如故障注入和混沌工程的实践。
摘要由CSDN通过智能技术生成

个人博客导航页(点击右侧链接即可打开个人博客):互联网老兵带你入门技术栈 

1 背景

起初,在网盘快速发展期,为了快速上线,采用了服务单体化 + 主干开发模式进行研发,随着用户规模爆发式的增长以及产品形态的丰富,单体化的不足就体现出来了,于是架构上采用了微服务架构,开始对业务逻辑进行拆分部署。

服务拆分之后,也引入了新的问题,具体如下:

**请求路由:**服务部署从物理机向虚拟化方式迁移中,有大量的切流量操作,需要相关的上游都进行升级上线修改,效率低下

**故障管理:**单实例异常、服务级别异常、机房故障异常、网络异常等,严重缺失或者不完善,同时配套的故障定位也没有,服务稳定性不足

**流量转发:**不同的服务采用了不同的框架,甚至裸框架,策略不完善,导致负载不均衡

**研发效率:**相同的功能点,需要在不同的语言框架上实现一次,浪费人力,同时升级周期比较长,收敛效率低

2 解决方案 - UFC

2.1 UFC 发展史

为了解决这个问题,从2015年底开始思考解决方案,确定了解决问题的核心在于管控请求流量,在2016年开始自研网络流量转发中间件 - UFC(Unified Flow Control),业务通过同机部署的agent进行服务通信,相关的发展史如下:

2.2 UFC 和 Service Mesh的关系

后来在调研业界相关技术的时候,发现了istio(业界Service Mesh的典型代表),从而发现了Service Mesh的存在,而它的定义是在2016.9 由Buoyant 公司的CEO William Morgan 提出的:

Service Mesh是一个专门用来处理服务和服务之间通信的基础设施。它复杂确保在一个由复杂服务构成的拓扑的现代云应用中,请求能够被稳定的传递。在实践中,Service Mesh通常通过一系列轻量级的代理来进行实现。这些代理和应用同机部署,而应用不需要感知到代理的存在。

A service mesh is a dedicated infrastructure layer for handling service-to-service communication. It’s responsible for the reliable delivery of requests through the complex topology of services that comprise a modern, cloud native application. In practice, the service mesh is typically implemented as an array of lightweight network proxies that are deployed alongside application code, without the application needing to be aware.

从定义上,我们不难发现UFC和Service Mesh的设计理念是一致的,都是基于sidecar模式,有着控制面板和数据面板,UFC是Service Mesh的一种实现。感慨的说,历史的发展潮流是一致的,不管你在哪里。

目前UFC应用于网盘过千个服务上,涉及虚拟化实例数量超过20W,千亿PV,机器规模10W+(网盘+其它产品线机器),10个IDC,从已知的实例规模上看,是国内最大的Service Mesh的实践落地。

2.3 基于Service Mesh 之上的服务治理

百度网盘的实践落地并不只局限于Service Mesh,首先是构建了从点延伸到线的Service Mesh进行服务通信管控,然后是在UFC这个Service Mesh的基础之上,站在全局视角对服务进行治理,保障服务的稳定性,相关能力等发展如下:

**点:**关注与下游进行通信,不关注上游的情况

**线:**加入上游的标识,基于上游做异构的通信策略

**面:**多条线组成面,站着全局视角进行服务治理

2.4 本文概要

本文将会先介绍UFC(如何实现一个Service Mesh),然后是基于UFC做服务治理(基于Service Mesh的实践应用)

3 UFC 外部视角简介

3.1 用户使用视角

只需要做两个事情:

  1. 服务注册:需要先确保自己的服务(上游)和要访问的服务(下游)已经注册过了,没注册过,则需要服务的owner进行服务注册
  2. 服务通信:用户通过单机agent进行服务通信访问下游,下图显示了用户从直接访问下游变成了通过同机agent访问下游

3.1.1 服务注册

UFC为每个注册的服务分配一个service_name,service_name 是这个服务的唯一标识。同时需要对这个service_name配置它的相关配置:比如destination来源、负载均衡、熔断、超时重试等策略

3.1.2 服务通信

访问下游的时候,只需要访问本机固定端口,带上下游服务的service_name、自身标记、trace等信息,例如下面就是一个发请求的demo例子:

curl “http://127.0.0.1:8888/URI” -H “x-ufc-service-name=to_service_name” –H “x-ufc-self-service-name=from_service_name” -H “x-ufc-trace-xxxx = xxxxx”

3.2 UFC能力视角

介绍UFC基于点和线视角的相关能力,从服务声明、请求路由、流量转发、故障处理、故障定位、安全等维度和istio做了一个比较。而istio是大部分是基于下游这个点进行相关通信能力设计,线视角能力很少(比如权限认证等)

总结来说,istio是能力全面,但是具体实现上策略比较简单,而UFC是更贴近实际的业务场景(具体的可以看后面的介绍内容)

PS: 有些能力(比如流量复制/权限管理)UFC没有,并代表百度网盘没有这方面的能力,只是因为历史原因,通过其它的方案解决了。但是故障注入这块,的确是UFC需要考虑的,有了这块的能力,混沌工程也更容易的落地。

4 UFC 内部视角简介

主要是介绍架构和相关具体能力的实现设计初衷

4.1 架构设计

整个架构和Service Mesh一样,都是采用了同机Sidecar进行了流

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园2.0是高校信息化建设的新阶段,它面对着外部环境变化和内生动力的双重影响。国家战略要求和信息技术的快速发展,如云计算、大数据、物联网等,为智慧校园建设提供了机遇,同时也带来了挑战。智慧校园2.0强调以服务至上的办学理念,推动了教育模式的创新,并对传统人才培养模式产生了重大影响。 智慧校园建设的解决之道是构建一个开放、共享的信息化生态系统,利用互联网思维,打造柔性灵活的基础设施和强大的基础服务能力。这种生态系统支持快速迭代的开发和持续运营交付能力,同时注重用户体验,推动服务创新和管理变革。智慧校园的核心思想是“大平台+微应用+开放生态”,通过解耦、重构和统一运维监控,实现服务复用和深度融合,促进业务的快速迭代和自我演化。 智慧校园的总体框架包括多端协同,即“端”,它强调以人为中心,全面感知和捕获行为数据。这涉及到智能感知设备、超级APP、校园融合门户等,实现一“码”或“脸”通行,提供线上线下服务端的无缝连接。此外,中台战略是智慧校园建设的关键,包括业务中台和数据中台,它们支持教育资源域、教学服务域等多个领域,实现业务的深度融合和数据的全面治理。 在技术层面,智慧校园的建设需要分期进行,逐步解耦应用,优先发展轻量级应用,并逐步覆盖更多业务场景。技术升级路径包括业务数据化、数据业务化、校园设施智联化等,利用IoT/5G等技术实现设备的泛在互联,并通过人工智能与物联网技术的结合,建设智联网。这将有助于实现线上线下一网通办,提升校园安全和学习生活体验,同时支持人才培养改革和后勤管理的精细化。 智慧校园的建设不仅仅是技术的升级,更是对教育模式和管理方式的全面革新。通过构建开放、共享的信息化生态系统,智慧校园能够更好地适应快速变化的教育需求,提供更加个性化和高效的服务,推动教育创新和人才培养的高质量发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值