开发原因
初衷是为了解决公司内部原先hessian组件性能、资源等方面的不足,包括服务端和客户端组件,客户端基于BIO,服务端基于NIO
为啥叫Nession,不叫Nessian?
Netty+Hessian,Nessian是日产的意思,区别一下
原始hessian、原内部使用hessian组件、nession的服务端组件对比
组件 | 传输协议 | IO | 并发量 | Socket选项优化 | 长连接(多次调用) | 性能监控 |
原始Hessian | HTTP | BIO | 小 | 否 | 否 | 不支持 |
原Hessian组件 | TCP | BIO | 小 | 否 | 是 | 不支持 |
Nession | TCP | NIO | 大 | 可 | 是 | 支持,功能较弱 |
Nession功能比较还是比较简单的,主要实现服务暴露和远程调用,所有的代码(包括测试代码)一共1000行左右,熟悉TCP和Netty的朋友就能从上表看出Nession的性能、资源的优势所在了
- 采用TCP而非HTTP可以减少无用的数据提高传输效率
- NIO可以支持数以万记的并发数
- 通过设置socket选项So_time、禁用Nagle算法等来优化socket传输策略
- 通过性能监控查看当前服务的负载情况
实现难点
唯一的难点就是如何将NIO的数据读写方式(Channel+Buffer)转化为BIO的读写方式(InputStream、OutputStream)详情代码请点击
如何使用
服务端,服务暴露:
客户端,服务调用: