Solon rpc 之 SocketD 协议
1. 简介
SocketD 是一种二进制的点对点通信协议,是一种新的网络通信第七层协议。旨在用于分布式应用程序中。从这个意义上讲,SocketD可以是RSocket等其他类似协议的替代方案。它的消息协议规范具有异步,背压的双向,多路复用,断线重连,基于消息等特性。暂时只提供Java实现,目前做为Solon rpc的sockte通道协议。
2. 背景
说到这里就有一些疑问了,为什么要搞这个协议?难道程序员吃饱了撑得搞点新东西折腾自己?上面提到了RSocket。如果你对这个规范不熟悉就可补下课。但它用起来还是比较复杂,尤其是类似RxJava的接口风格,感观上更利于做响应式计算。而SockteD更适应传统使用习惯,更专一的面向服务请求。
3. 特性
特性期实与RSocket非常像,这里简单总结一下:
- 具有语言无关性的二进制通信协议
- 异步非阻塞消息驱动通信,高性能
- 实现了网络通信的背压处理,在此基础上进行流量控制、连接恢复
- 天然支持双向通信。如:单链接双向RPC
- 更加适合分布式通信场景
4. SocketD三种交互模型
SocketD定义了三种交互模型来弥补Http协议的不足之处:
- Send(msg):只发送不响应。在不需要响应时非常有用,例如非关键事件日志记录。
- SendAndResponse(msg):发送并等待响应。类似Http的请求/响应模型。它是异步和多路复用的。
- SendAndCallback(msg, (msg2)->{}):发送并在有响应时回调。类似Ajax异步回调。
5. SocketD两种协议模型
容器消息,用于实现消息加密或压缩之类非业务处理。内容消息,用于承载业务内容。

6.部分演示示例
- Rpc 框架演示: solon_socketd_rpc
- Message 通读演示:solon_socketd_message
附:项目源码
Solon rpc 之 SocketD 协议的更多相关文章
- Solon rpc 之 SocketD 协议 - 消息鉴权模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 消息上报模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 消息应答模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 消息订阅模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - RPC调用模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 单链接双向RPC模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 消息加密模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - RPC鉴权模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- RPC基于http协议通过netty支持文件上传下载
本人在中间件研发组(主要开发RPC),近期遇到一个需求:RPC基于http协议通过netty支持文件上传下载 经过一系列的资料查找学习,终于实现了该功能 通过netty实现文件上传下载,主要在编解码时 ...
随机推荐
- PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的accepted、rejected和helpRequested信号
QDialogButtonBox中可以包含多个pushButton,但QDialogButtonBox本身只提供4种信号,分别是accepted.rejected.clicked和helpReques ...
- PyQt(Python+Qt)学习随笔:Qt Designer中怎么给toolBar添加按钮
在Designer中创建了一个MainWindow窗体,当想在其中的toolBar中添加toolButton时发现怎么也放不上去,最终才发现toolBar中的按钮只能通过直接拖拽Action编辑器中的 ...
- 【Docker】 .Net Core 3.1 webapi 集成EF Code First,使用MySql进行业务操作 、配置swagger (三)
系列目录: [Docker] CentOS7 安装 Docker 及其使用方法 ( 一 ) [Docker] 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二) [D ...
- APP非功能测试
1.移动APP启动时间测试 问题:如何获取启动时间? 答:通过adb的logcat来获取Activity启动时间.用户体验时间=Activity启动时间+启动中异步UI绘制的时间. 启动时间的测试主要 ...
- zookeeper未授权访问渗透测试及修复方法
zookeeper未授权访问危害 服务器信息泄露.集群被破坏 一. 四字命令未授权使用 1.1 测试 工具:netcat ,Linux或Windows都可以测 命令行输入echo envi | nc ...
- Scrum 冲刺第四天
一.每日站立式会议 1.会议内容 1)进行每日工作汇报 张博愉: 昨天已完成的工作:搜寻测试相关的资料 今日工作计划:编写测试计划 工作中遇到的困难:对测试接触得较少,有点头疼 张润柏: 昨天已完成的 ...
- Panda交易所获悉,五地股权市场获批参与「区块链建设试点」
Panda交易所获悉,北京市地方金融监督管理局官网于7月21日发布信息显示,"证监会发布<关于原则同意北京.上海.江苏.浙江.深圳等5家区域性股权市场开展区块链建设工作的函>,原 ...
- BJOI2015 隐身术
落谷. Description 给你两个串 \(A.B\).询问 \(B\) 中有多少个非空子串和 \(A\) 的编辑距离不超过 \(K\). Solution 发现 \(K \le 5\),考虑可以 ...
- Linux 查看CPU型号,内存大小,硬盘空间的命令
1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 1.2 查看CPU核数 # ...
- 面试 11-01.ES6:模块化的使用和编译环境
11-01.ES6:模块化的使用和编译环境 #前言 #ES6的主要内容 模块化的使用和编译环境 Class与JS构造函数的区别 Promise的用法 ES6其他常用功能 本文来讲"模块化的使 ...