Service Mesh在核心链路层的能力

更多精彩内容开源 | Service Mesh 数据平面 SOFAMosn 深层揭秘金融级分布式架构天池中间件大赛Golang版Service Mesh思路分享王亚普Service Mesh在企业级应用的生存之道博云技术社区Dubbo Mesh 在闲鱼生 · · 716 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

基础概念

Service Mesh最核心有两个概念:数据面和控制面。

数据面

数据面负责做网络代理,在服务请求到链路上做一层拦截与转发,可以在核心链路上实现服务路由,链路加密,服务鉴权等。

技术实现可以采用Golang进行高性能网络代理的研发,承载核心应用流量。

控制面

控制面负责做服务发现,服务路由管理,请求度量等。

核心链路的诉求

在面对核心链路大促大流量场景的需求下,解决链路稳定性是极大的挑战。

能力支持

Service Mesh作为底层高性能网络代理,支撑RPC,MSG,Gateway等业务场景。

IO模型

Service Mesh在实现上,支持两种IO模型,一个是Golang经典模型,goroutine-per-connection;一个是RawEpoll模型,就是经典的Reactor模式,IO多路复用+非阻塞IO模式。

对于服务化场景来说可以选择Golang经典模型。

对于接入层和网关有大量长链接的场景,更适合RawEpoll模型。

Golang协程模型

- 一条TCP连接对应一个Read协程,执行收包和协议解析;

- 一个请求对应一个worker协程,执行业务处理,proxy和write逻辑;

常规模型一个TCP连接有Read/Write两个协程,可以取消单独到Write协程,让workerpool工作协程代替,以减少调度延迟和内存占用。

扩展能力

通过plugin机制,支持协议扩展,如:Http1/Http2,Dubbo等协议。

链路安全

对于链路加密,可以采用Go的TLS实现。

内存复用

采用:sync.Pool,slice复用使用slab细粒度,提高复用率,常用结构体复用。

动态配置能力

基于Json提供统一数据面API。

关于Go

在版本上选择最新的1.12.6,其修改了内存回收的默认策略。

- GC优化,减少长尾请求。采用自我抢占机制,将耗时较长的GC标记过程打散,换取更为平滑的GC表现,减少对业务延迟的影响。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:更多精彩内容开源 | Service Mesh 数据平面 SOFAMosn 深层揭秘金融级分布式架构天池中间件大赛Golang版Service Mesh思路分享王亚普Service Mesh在企业级应用的生存之道博云技术社区Dubbo Mesh 在闲鱼生

查看原文:Service Mesh在核心链路层的能力

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

716 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传