SOFABolt自定义协议(网络通信框架)
互联网产品的通讯服务都是建立在足够稳定的通信框架和协议的基础之上,此次带来的SOFABolt本就是蚂蚁集团旗下的业务团队针对自家大量的服务器进行网络通信服务的优化调正的辅助类工具,其自带成品框架结构,运维人员在操作时可以借助于结构布局来深入改进协议线路之间的连接速率以及加固安全等级。
SOFABolt性能引见
SOFABolt的根本性能包罗:
1、根本通讯性能 ( remoting-core )
基于 Netty 高效的收集 IO 与线程模型应用
毗连办理 (无锁建连,按时断链,主动重连)
根本通讯模型 ( oneway,sync,future,callback )
超时节制
批量解包与批量提交处置器
心跳与 IDLE 事务处置
2、契约框架 ( pro tocol-skeleton )
指令与指令处置器
编解码处置器
心跳触发器
3、公有契约定制完成 - RPC 通讯契约 ( prot ocol-implementation )
RPC 通讯契约的设计
矫捷的反序列化机会节制
要求处置超时 FailFast 机制
用户要求处置器 ( UserProcessor )
双工通讯
SOFABolt运用方式
将 SOFABolt 用作一个长途通讯框架,运用者可以不消关怀若何完成一个公有契约的细节,直接运用我们内置的 RPC 通讯契约。可以很是易懂的启动客户端与服务端,同时注册一个用户要求处置器,便可完成长途挪用。同时,像毗连办理、心跳等根本性能特征都默许可使用。 以后拥有的挪用类型以下图所示:
将 SOFABolt 用作一个契约框架,运用者可以复用根本的通讯模型、契约包括的接口决定等根本性能。然后按照本身设计的公有契约自行设置 Command 类型、Command 处置器、编解码处置器等。以下图所示,RPC 和动静的 Command 决定布局:
SOFABolt初级性能
1. 开启IO线程处置机制
默许环境下,我们运用最好理论的线程模型来处置要求,即尽量少的占用 IO 线程,但有一些场景,好比计较进程很是易懂,但愿削减线程切换,尽量大的增添IO 吞吐量的场景。此时我们供给了一个开关,来让营业处置也在 IO 线程履行。
2. 启用用户处置器多线程池机制
要求处置进程,默许是一个线程池,那末当这个线程池呈现成绩后,则会形成全体的吞吐量下降。而有些营业场景,但愿对他们焦点的要求处置进程,独立分派一个线程池。防止各种要求相互影响。此时我们供给了一个线程池选择器:
完成一个线程池选择器;
然后设置到用户要求处置器外面,挪用进程便可按照选择器的逻辑来选择对应的线程池。
3. 要求处置超时 FailFast 机制
当服务端领受到要求后,若是线程池行列的列队期待时间已跨越了客户端倡议挪用时设置的超不时间,那末本次挪用可以直接抛弃,由于要求,对客户端来讲已无用了(注重:oneway挪用技巧该机制不起感化,由于不消设置超不时间)。默许环境下,我们这个性能都是开启的;斟酌到有效户能够会需求本身来做是不是抛弃要求的判定,同时打印一些日记来本身做记载,我们供给了一个开关来节制这个性能:
开关节制
1. @Override
2. public boolean timeoutDiscard() {
3. return false;// true暗示开启主动抛弃,false暗示封闭主动抛弃,用户在以后的处置processor里,可自行决议计划
4. }
判定超时与打印日记
1. public class SimpleClientUserProcessor extendsSyncUserProcessor
2. @Override
3. public Object handleRequest(BizContextbizCtx, RequestBody request) throws Exception {
4. if(bizCtx.isRequestTimeout()){
5. log.info("arrive time:{}", bizCtx.getArriveTimestamp());
6. ...
7. }
8. }
9. }
4. 定制契约
对通讯类型比力易懂的场景,我们直接复用 RPC 通讯契约,运用对应的通讯类型,就可以处理大部门成绩。而有一些场景,好比动静中心件,信息库中心件等,有本身公有的通讯契约,和海量的要求指令类型,此时就需求重新来定制契约。此时将 SOFABolt 用作一个契约框架和具有根本通讯性能的组件,好比根本通讯模型、毗连办理等性能是可以复用的;而契约相干的部门需求本身来开辟和完成,可以参考 RPC 契约完成的内容。
小编测评
SOFABolt比较好的地方就是充分尊崇用户自行定义网络通信协议的要求,同时供应比较实用的网络数据服务统筹运转机制,一旦出现指定部分的参数改动,会立即运用到一整个系统中,另外会在后台自动完成测试,让即时网络通讯处于长时间的平稳运行状态之下。
以上就是软件爱好者小编今日为大家带来的SOFABolt自定义协议(网络通信框架),更多软件下载尽在软件爱好者。