[干货分享] Service Mesh中间件的发展趋势
Posted 钱包金服学院
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[干货分享] Service Mesh中间件的发展趋势相关的知识,希望对你有一定的参考价值。
闫旋
技术部
架构师
钱包课堂开课啦
面向技术岗位的专业课程又开始了,本期邀请到技术部架构师闫旋老师,他从阿里云中间件比赛的经验谈起,带领大家一起开拓知识领域,现场气氛火热~
NETTY框架
Java 的主流网络框架: nio,akka,netty ,netty 是众多 java 选手中较为青睐的。
网络模型选择
官方提供的 demo 直接跑通了整个通信流程,省去了我们大量的时间。
提升方法:
1、使用async-http-client 提供的异步 http-client,以及 servlet3.0 提供的非阻塞 api;
2、采用future模式;
3、直接用Callback方式。
NETTY使用及EVENTLOOP复用
注意点:
1、线程数尽量少,能用一个线程就不用两个;
2、连接数尽量少,使用尽可能少的连接数和线程数,可以提升qps,减少不必要的线程切换;
3、netty 可以从客户端引导 channel,从而复用 eventLoop,把 eventLoop 理解为 io 线程,如果入站的io 线程和 出站的 io 线程使用相同的线程,可以减少不必要的上下文切换。
通讯协议和Buffer
使用定长头+字节数组来作为自定义协议,比http更有效:
消息的解析方式一:直接自己逐个字节解析;
消息的解析方式二:使用Netty提供的解析包,例如QueryStringDecoder等。
ZERO-COPY
1、尽量使用ByteBuf作为消息接收和发送的数据结构;
2、在consumer agent接收到消息后,使用一次拷贝保存;
3、边解析边做协议转换,减少拷贝次数;
4、每一次写new的时候,都要非常谨慎,尽量不要new。
Java direct buffer
Java 网络程序中使用堆外直接内存进行内容发送(Socket读写操作),可以避免了字节缓冲区的二次拷贝。
Batch process
(批量flush,批量decode)
2、批量 decode 的思想来自于蚂蚁金服的 rpc 框架 sofa-bolt 中提供的一个抽象类:AbstractBatchDecoder;
3、AbstractBatchDecoder的qps 更高。
关注“钱包金服学院”
后台菜单栏回复:中间件
即可获得现场课件及视频
以上是关于[干货分享] Service Mesh中间件的发展趋势的主要内容,如果未能解决你的问题,请参考以下文章
从服务治理以及分布式发展史的角度剖析Service Mesh的精髓