RPC、基于netty的长连接和websocket
2015-06-18 20:28
176 查看
1 RPC
RPC也采用C/S的编程模式,以模块调用的简单性忽略通讯的具体细节,以便程序员不用关心C/S之间的通讯协议,集中精力对付实现过程.这就决定了 RPC生成的通讯包不可能对每种应用都有最恰当的处理办法,与Socket方法相比,传输相同的有效数据,RPC占用更多的网络带宽.
RPC实在socket的基础上实现的,但是它比socket需要更多的网络和资源系统。
2 基于netty的长连接
异步、高性能
Boss线程(一个服务器端口对于一个)---接收到客户端连接---生成Channel---交给Work线程池(多个Work线程)来处理。
具体的Work线程---读完已接收的数据到ChannelBuffer---触发ChannelPipeline中的ChannelHandler链来处理业务逻辑。
执行ChannelHandler链的整个过程是同步的,如果业务逻辑的耗时较长,会将导致Work线程长时间被占用得不到释放,从而影响了整个服务器的并发处理能力。
3 websocket
WebSocket连接服务器和客户端,这个链接是一个实时的长连接,服务器端一旦与客户端建立了双向链接,就可以将数据推送到Socket中,客户端只要有一个Socket绑定的地址和端口与服务器建立联系,就可以接收推送来的数据。
WebSocket 还是一个双通道的连接,在同一个 TCP 连接上既可以发也可以收信息.
让服务器和客户端能够发送 Ping/Pong Frame。这种 Frame 是一种特殊的数据包,它只包含一些元数据而不需要真正的 Data Payload,可以在不影响 Application 的情况下维持住中间网络的连接状态
RPC也采用C/S的编程模式,以模块调用的简单性忽略通讯的具体细节,以便程序员不用关心C/S之间的通讯协议,集中精力对付实现过程.这就决定了 RPC生成的通讯包不可能对每种应用都有最恰当的处理办法,与Socket方法相比,传输相同的有效数据,RPC占用更多的网络带宽.
RPC实在socket的基础上实现的,但是它比socket需要更多的网络和资源系统。
2 基于netty的长连接
异步、高性能
Boss线程(一个服务器端口对于一个)---接收到客户端连接---生成Channel---交给Work线程池(多个Work线程)来处理。
具体的Work线程---读完已接收的数据到ChannelBuffer---触发ChannelPipeline中的ChannelHandler链来处理业务逻辑。
执行ChannelHandler链的整个过程是同步的,如果业务逻辑的耗时较长,会将导致Work线程长时间被占用得不到释放,从而影响了整个服务器的并发处理能力。
3 websocket
WebSocket连接服务器和客户端,这个链接是一个实时的长连接,服务器端一旦与客户端建立了双向链接,就可以将数据推送到Socket中,客户端只要有一个Socket绑定的地址和端口与服务器建立联系,就可以接收推送来的数据。
WebSocket 还是一个双通道的连接,在同一个 TCP 连接上既可以发也可以收信息.
让服务器和客户端能够发送 Ping/Pong Frame。这种 Frame 是一种特殊的数据包,它只包含一些元数据而不需要真正的 Data Payload,可以在不影响 Application 的情况下维持住中间网络的连接状态
相关文章推荐
- 关于JVM的GC机制
- 返回一个二维数组中的最大联通子数组(补)
- Linux内核配置编译
- 3. 伪元素清除最后一个border的边框
- linux环境部署 tomcat jdk mysql数据库的部署及配置总结
- 淘宝ip地址查询接口
- 06-图6. 公路村村通(30)
- Linux网络编程——tcp并发服务器(epoll实现)
- BUAA 1193
- 江城子.南湖
- 黑马程序员——高新技术---字符串变量
- [BZOJ 1179] Atm · 图的联通 & SPFA
- ThinkPython-编程基础
- [转]50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs
- Netty-Mina深入学习与对比
- JS中的call和apply
- java https请求 源码 微信
- C#中Ilist与list的区别小结
- :nth-child和:nth-of-type之间的差异
- iOS iOS8注册通知