35 | 微博Service Mesh实践之路(上)
胡忠想
该思维导图由 AI 生成,仅供参考
专栏上一期我们聊了 Service Mesh 的代表作 Istio,由于 Istio 的设计理念非常新,并且它诞生在微服务容器化和 Kubernetes 云平台火爆之后,所以从设计和实现上,Istio 都天生对云原生应用更友好。
但是现实是不是也是那么美好呢?对于一个已经上线运行多年的业务系统来说,要想从经典的微服务架构走上 Istio 这条看似完美的道路并不容易,各种内部基础设施的定制化以及业务稳定性优先准则等因素,都注定了大多数公司要走出一条自己的 Service Mesh 实践之路。今天我就来带你回顾下微博是如何一步步走向 Service Mesh 的。
跨语言服务调用的需求
我在前面讲过,微博的服务化框架采用的是自研的 Motan,Motan 诞生于 2013 年,出于微博平台业务单体化架构拆分为微服务改造的需求,在结合当时的开源服务化框架和自身实际的需求,选择了采用自研的方式。而且由于微博平台的业务采用的是 Java 语言开发,所以 Motan 早期只支持 Java 语言。后期随着微博业务的高速发展,越来越多的 PHP 业务开始登上舞台,于是在微博的流量体系中,主要是三股服务之间的相互调用:一个是 Java 与 Java 语言,一个是 PHP 和 Java 语言,一个是 PHP 和 PHP 语言。Java 应用之间的调用采用的是 Motan 协议,而 Java 应用与 PHP、PHP 与 PHP 应用之间采用的都是 HTTP 协议。我回忆了一下当时一次 PHP 与 Java 之间的 HTTP 调用过程,大致需要经过 DNS 解析、四层 LVS 负载均衡、七层 Nginx 负载均衡,最后才能调用 Java 应用本身。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
微博在实践Service Mesh的过程中面临了跨语言服务调用的挑战。由于业务系统已上线多年,采用的是自研的Motan框架,而随着业务发展,PHP应用的增加导致了跨语言调用的需求。初期尝试使用Yar协议扩展Motan框架,但存在协议转换和依赖Nginx的问题。随后考虑集成gRPC,但发现其对PHP的兼容性不佳。最终,他们通过引入代理Agent来解决PHP语言的服务框架功能实现问题。这一实践过程展示了微博在面对复杂业务场景下,如何寻找适合的跨语言通信协议,并通过代理实现服务框架功能,为读者呈现了微博在Service Mesh实践中的技术探索与解决方案。 微博在实践Service Mesh的过程中,通过引入代理Agent解决了跨语言服务调用的挑战。由于业务系统采用的是自研的Motan框架,随着业务发展,PHP应用的增加导致了跨语言调用的需求。初期尝试使用Yar协议扩展Motan框架,但存在协议转换和依赖Nginx的问题。随后考虑集成gRPC,但发现其对PHP的兼容性不佳。最终,通过引入代理Agent来解决PHP语言的服务框架功能实现问题。这一实践过程展示了微博在面对复杂业务场景下,如何寻找适合的跨语言通信协议,并通过代理实现服务框架功能,为读者呈现了微博在Service Mesh实践中的技术探索与解决方案。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学微服务》,新⼈⾸单¥59
《从 0 开始学微服务》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(12)
- 最新
- 精选
- 无心人偶是如何降低链路损耗?
作者回复: 链路损耗必然的,可以在连接池和长链接上做做文章
2018-12-125 - 小菜鸡周晶有个微课专门讲微博的Mesh,他是你同事吧?
作者回复: 是的
2018-11-262 - 拉欧不同语言之间调用最通用的方式是http,所以需要协议转换,把原来的rpc调用转换成http调用,然后再根据服务发现和负载均衡策略,获取相应的IP和端口
作者回复: 理解的很多
2018-11-112 - lpf32回答 作为客户端,服务端需要分别把request,response转成motan协议,发送给本地motan agent
作者回复: 是的
2018-11-131 - 文敦复请问老师,Motan数据序列化和解析比GRPC快很多吗?用的是什么序列化方式?
作者回复: motan跨语言用的是自定义的simple系列化,文中有链接可以详细了解,没有使用grpc是因为php解析大数据量的pb结构时性能有问题
2018-11-131 - Wipehermotan也是应用层协议吧?那么HTTP协议带来的第一个问题:中间链路损耗大,无论是否使用agent,也必然还是存在的么?
作者回复: 一般http协议还需要部署四七层,中间链路需要经过网络,所以会带来损耗
2020-04-04 - 任鑫Istio背靠的Google在微服务云原生方面起步早、体量大,远非微博可比。2020-06-301
- 田小麦一门好的课程能引导出,技术演进过程,能很好的深入学习,并产生兴趣!!!2022-10-14归属地:北京
- 🤔motan-go代理是go语言写的吗2022-04-28
- Geek_805d64老师,这个dns解析是内网解析还是外网,php发请用给java需要出去转一圈回来微博的机房吗?2021-06-23
收起评论