Socket.D 网络应用层协议,v2.1.15 发布
有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”
主要特性
- 基于事件,每个消息都可事件路由
- 所谓语义,通过元信息进行语义描述
- 流关联性,有相关的消息会串成一个流
- 语言无关,使用二进制输传数据(支持 tcp, ws, udp)。支持多语言、多平台
- 断线重连,自动连接恢复
- 多路复用,一个连接便可允许多个请求和响应消息同时运行
- 双向通讯,单链接双向互听互发
- 自动分片,数据超出 16Mb(大小可配置),会自动分片、自动重组(udp 除外)
- 接口简单,是响应式但用回调接口
与其它协议的简单对比
对比项目 | socket.d | http | websocket | rsocket | socket.io |
---|---|---|---|---|---|
发消息(Qos0) | 有 | 无 | 有 | 有 | 有 |
发送并请求(Qos1) | 有 | 有 | 无 | 有 | 无 |
发送并订阅 | 有 | 无 | 无 | 有 | 无 |
答复或响应 | 有 | 有 | 无 | 有 | 无 |
单连接双向通讯 | 有 | 无 | 有(不便) | 有 | 有(不便) |
数据分片 | 有 | / | 无 | 有 | 有 |
断线自动重连 | 有 | / | 无 | 有 | 有 |
有元信息 | 有 | 有 | 无 | 有 | 无 |
有事件(或路径) | 有 | 有 | 无 | 无 | 有 |
有流(或消息关联性) | 有 | 无 | 无 | 有 | 无 |
Broker 模式集群 | 有 | 无 | 无 | 有 | 无 |
异步 | 异步 | 同步 | 异步 | 异步 | 异步 |
接口体验 | 经典 | 经典 | 经典 | 响应式(复杂) | 经典 |
基础传输协议 | tcp, udp, ws | tcp | http | tcp, udp, ws | ws |
本次实现框架更新
- 开放 BrokerListener 的两私有函数级别
- 添加 分片处理临时方件方案实现(FragmentHandlerTempfile)
- 添加 ClusterClient 通道线程池复用
- 添加 Reply 接收到的答复实体(多了 isEnd 方法)
- 添加 异步发送时错误接收机制
- 添加 协议时 channel.onOpenFuture() 异常关闭通道处理
- 调整 原流接收器,更名为流(分流接口与流内部接口)
- 调整 Broker 转发时,增加会话有效性检测
- 修复 小文件上传时出现 MappedByteBuffer:array 异常
- 优化 RunUtils 线程数使用
- 优化 分片触发条件
- 优化 onOpen 监听改造为异步模式(可以在 onOpen 时执行发送并等待)
- 优化 BrokerListener 对无效会话的过滤
代码仓库

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
不规范的枚举类代码引发的一场事故
今天开发跟我反馈了一个很奇怪的问题,说有个对象的状态属性是枚举类,设置了该对象的状态后,插入数据库,这个状态没了,凭空消失了,变成了空白字符串。这让人感觉非常奇怪,我参与了整个问题排查过程,得到的结论和枚举类的规范有关系,我将过程总结在这里提供大家一起学习交流。 问题代码 让我们先看看出问题的部分代码是什么样子的: @Override public String insert(PayRequest payRequest) { // 省略部分无关代码 PayRequestDO payRequestDO = convertor.toDO(payRequest); payMapper.insert(payRequestDO); return payRequest.getPayNo(); } 这个方法很简单,就是把传过来的 PayRequest 对象转成 PayRequestDO 对象,然后插入数据库。 PayRequest 和 PayRequestDO 都是普通的 pojo 对象,没什么复杂的,只是 PayRequestDO 的 status 换成了 String: pu...
- 下一篇
FolkMQ 内存型消息中间件,v1.0.23
简介 采用 “多路复用” + "内存运行" + "快照持久化" + "Broker 集群模式"(可选)+ 基于Socket.D 网络应用协议开发。全新设计,自主架构! 角色 功能 生产端 发布消息(Qos0、Qos1)、发布定时消息(Qos0、Qos1)、发布重试 消费端 订阅、取消订阅 消费端 消费-ACK(自动、手动) 服务端 发布-Confirm、订阅-Confirm、取消订阅-Confirm、派发-Retry、派发-Delayed 服务端 内存运行、快照持久化(自动、停机、手动) 服务端 集群热扩展 特点 高吞吐量、低延迟 FolkMQ 纯内存运行,每秒能处理几十万条消息,最低延迟不到1毫秒。 可扩展性 FolkMQ Broker 集群支持 folkmq-server 节点热扩展。流量高时随时加,流量低时可减 持久性、可靠性 消息被快照持久化(类似于 redis)到本地磁盘,并且支持数据备份防止数据丢失 高可用 集群内任何节点坏掉只要还有“一个”同类节点,仍可提供服务 快(单机版,180K TPS)。有点像 Redis 之于 MySql。 //使用 MacBook pr...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker安装Oracle12C,快速搭建Oracle学习环境