netty实现一个网络库要考虑的方面:
2017-03-25 10:46
239 查看
1.netty实现一个网络库要考虑的方面
1.1 tcp层面的问题
编解码(包括tcp粘包问题):消息到byte,byte到数据(即定制协议)由于tcp的传输是流的方式,再加上网络的不可靠性(丢包重传等),因此对于一个应用来讲,有粘包拆包问题
SOCKET连接(各种连接状态)管理;心跳机制(维持长连接/检活);
网络连接的创建相对成本较高,因此复用的必要性大大提升,就需要管理这些复用的对象
TCP参数设置;
不同的应用,场景有所不同,因此,调整TCP参数可以优化使用
请求/响应处理;
应用层定时器用于决定哪个请求超时,然后搭配一些后续的处理策略(比如延时重试等)
异步请求管理:
支持异步调用,需要缓存请求,当网络IO有可读数据包时,判断是否是响应的;
支持同步调用:在超时内,监听网卡IO是否有可读数据,超时后,响应失败,上层可以重试等;
半双工:控制一端只能
1.2 netty针对上面的问题,提供了一些高级API来解决
相关文章推荐
- 网络编程知识(5)--用Netty实现的一个简单的HTTP服务器
- Linux内核中编写一个模块,实现申请一块内存,需要考虑哪些方面?
- 我想实现一个智能提示,谁有这方面的例子?
- 用java实现简单的网络通信,相当于一个最简单的控制台qq(附代码) 推荐
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 今天可怜!我想做一个控制网络连接的程序,不管用什么语言都行,只要实现网络断开与连接!
- 以命名管道方式实现网络进程间通信的一个实例
- 用Socket异步调用实现的一个TCP的网络信息对话
- Linux网络编程:一个简单的正向代理服务器的实现
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 一个使用监听器模式实现的J2ME网络编程框架,包括一个简单的登录功能实现(含源代码)
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 一步一步实现企业网络架构之八:利用IIS建立和维护一个WEB服务器 推荐
- 一个使用监听器模式实现的J2ME网络编程框架,包括一个简单的登录功能实现(含源代码)
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份
- 不要把所有鸡蛋都放在一个篮子里——使用RoboCopy实现网络备份