专栏上一期我们聊到了微博的服务化是如何一步步走向 Service Mesh 之路的,可以说正是由于微博自身业务对跨语言服务调用的需求日趋强烈,才促使了 Weibo Mesh 的诞生,也因此乘上了 Service Mesh 的东风。我在前面讲过,Service Mesh 主要由两部分组成,一部分是 SideCar,负责服务之间请求的转发;一部分是 Control Plane,负责具体的服务治理。从 Weibo Mesh 的实现方案来看,对应的 SideCar 采用的是自研的 Motan-go Agent,服务治理则是通过统一服务治理中心来实现,这里面的一些思路还是和 Control Plane 有很大区别的。
今天我们就来聊聊 Weibo Mesh 实现的技术细节,看看它给业务带来了哪些收益,最后再谈谈 Weibo Mesh 下一步的发展方向。
Motan-go Agent
通过上一期的学习,我们知道 Weibo Mesh 中使用的 SideCar 就是 Motan-go Agent,考虑到 Motan-go Agent 要与 PHP 进程部署在一起,为了减少对本机资源的占用,这里 Motan-go Agent 采用了 Go 语言来实现,它包含的功能模块请看下图。
我们拆解一下图中 Motan-go Agent 主要的模块,看看它们的作用是什么。