netty开发文档详细设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

项目名称:
鉴于netty的网络通信项目开发级别| : A
制作时间:制作人:黄浩
鉴于 netty 网络通信 -服务端开发文档
详尽设计说明书
评审人:日期:
同意人:日期:Revision Record 改正记录
日期时间改正目录改正描绘作者
目录
1前言 3
编写目的3
背景 3
参照资料3
术语定义及说明3
2设计概括3
任务和目标 3
需求概括3
运转环境概括3
条件与限制 3
3系统详尽需求剖析3
详尽需求剖析3
接口需求剖析4
4整体方案确认 5
系统整体构造确认 5
5系统详尽设计 5
系统设计 -netty服务端详细剖析流程图 5 6信息编码设计 6
代码构造设计6
代码编制7
前言
编写目的
手机 APP的 socket 网络框架(本项目中一定)
手机发送图片视频音频等到服务器,双向传输。

鉴于网络的远程调用和通信,模拟出远程接口RMI(鉴于 dubbo 网络通信的增补)
背景
A.鉴于 netty 的网络通信;
B.用于网络通信,即时通信,长连结等;
参照资料
术语定义及说明
Netty 服务端,数据推送,即时推送,手机连结总服务器等。

设计概括
任务和目标
此设计主要针关于netty 作为服务端支持客户端长连结,在此基础上定义通信协讲和通信架构以及网络通信层次;netty 作为高并发的网络通信框架,一定做到及时的,安全的,靠谱的数据读写操作,客户端的连结支持一定达到百万以上。

需求概括
其一:目前在开发手机端项目的时候需要波及到和总服务端的通信,此通信誉于传输图片,视频等,考虑得手机端开发比较谨慎,没法加载宏大的 jar 文件,那么全部的压力都一定在服务端;
其二:此通信可用作临时的即时通信传输数据,经过两方传达参数的形式模拟远程方法的调用,这点的设计主假如针对客户端 IP 没法稳固,一定单向通信达到双向调用。

运转环境概括
作用于软硬件之间的通信,或许软件与软件之间的通信,能够跨平台接见,不受操作系统的限制,数据库方面能够采纳 mysql 或许 oracle 等,作为 netty 的服务端一定搁置于大型的计算机办理下 -
俗称机房服务器;作为客户端无谨慎的要求,可是一定供给通信接口,比方能tcp 连结或许 udp 连结。

条件与限制
作为 netty 的服务端,他对硬件的要求比较高,对内存的要求也比较高,他的连结数目取决于服务器 cpu*2 的数目,关于虚构内存( jvm 或许其余语言)需要控制和调优,或许做到实
时改正和依据连结数目改正。

系统详尽需求剖析
关于挪动端能够有以下几点:
使用的网络主假如营运商的无线挪动网络,网络质量不稳固,比如在地铁上信号就很差,简单发生网络闪断;
海量的客户端接入,并且往常使用长连结,不论是客户端仍是服务端,资源耗费都特别大;因为谷歌的推送框架没法在国内使用, Android 的长连结是由每个应用各自保护的,这就意味着每台安卓设施上会存在多个长连结。

即使没有信息需要推送,长连结自己的心跳信息量也是特别巨大的,这就会致使流量和耗电量的增添;
不稳固:信息丢掉、重复推送、延缓送到、过期推送时有发生;
垃圾信息满天飞,缺少一致的服务治理能力。

关于 pc 端主要作用于项目之间的接口调用(模拟)他与 RMI 有着质的差别,这里不做解说。

详尽需求剖析
总合能够定义为以下几点:
a.详尽功能需求剖析
数据之间的传输,及时性,容错性为最主要的功能 .远程接口参数的传输,传达参数到接收方,对方在当地经过参数分析后依据内部定义的协议来决定详细做什么事。

b.详尽性能需求剖析Netty 性能取决于计算机内存和cpu 以及运转环境的虚构内存,他自己是支持百万级其余连结,可是需要针对业务来调优,比方设置 jvm 参数,调试 tcp 参数,在详细代码中对进度和线程的
控制以及管理,在长连结中合理的心跳设置等。

c.详尽系统运转环境及限制条件剖析
服务端以 netty 开发,设置线程连结总数,以后是放于linux 环境下,
百万长连结接入,第一需要优化的就是Linux 内核参数,此中Linux 最大文件句柄数是最重要的调优参数之一,默认单进度翻开的最大句柄数是1024,经过 ulimit -a 能够查察有关参数,示比以下:
[root@lilinfeng ~]# ulimit -a
core file size(blocks, -c) 0
data seg size(kbytes, -d) unlimited
scheduling priority(-e) 0
file size(blocks, -f) unlimited
pending signals(-i) 256324
max locked memory(kbytes, -l) 64
max memory size(kbytes, -m) unlimited
open files(-n) 1024
......后续输出省略
当单个推送服务接收到的链接超出上限后,就会报“too many open files,所”有新的客户端接入将失败。

经过 vi/etc/security/增添以下配置参数:改正以后保留,注销目前用户,从头登录,经过
ulimit -a查察改正的状态能否奏效。

* soft nofile1000000
* hard nofile1000000
需要指出的是,只管我们能够将单个进度翻开的最大句柄数改正的特别大,可是当句柄数达到必定数目级以后,办理效率将出现显然降落,所以,需要依据服务器的硬件配置和办理能力进行合理设置。

假如单个服务器性能不可以也能够经过集群的方式实现。

接口需求剖析
Netty 目前作用于挪动通信,快去住网站接口接见,酒店数据库与总系统数据传输。

在挪动
端主要作用于数据流的传输,在 pc 项目中主要用于传达参数调用接口来实现数据两方的及
时性。

挪动端
A.图片上传
B.视频上传
C.文件下载
Pc 项目端
A.酒店房间状态
B.房费
C.酒店基本信息
D.更新包下载
整体方案确认
经过netty 做服务端,以端口的形式等候客户端连结,经过心跳包数据确立能否保持长连结,在此过程中对安全性,两方认证等都是经过定义通信协议来保证。

以及时性和容错性作为主体思想来设计 netty 服务端。

系统整体构造确认
系统构成分为 2 块,netty 服务端,通信客户端。

在服务端的架构层次分为通信层,网
络协议层,传输层,数据分析层以及应用层。

在服务端开放端口等候客户端的连结,经过解
析通信协议确立认证连结,关于连结上的客户端以心跳包数据的形式保持长连结状态,以心跳周期来确立连结性能,控制服务端连结压力;需要注意的是在挪动应用中,网络状态不是特其余理想,这里需要考虑断线的状况,在百万长连结的推送系统中,服务端需要能够正确办理这些网络异样,设计重点以下:
客户端的重连间隔需要合理设置,防备连结过于屡次致使的连结失败(比如端口还没有被开释);
客户端重复登岸拒绝体制;
服务正直确办理 I/O 异样和解码异样等,防备句柄泄漏.
系统详尽设计
系统设计 -netty 服务端详细剖析流程图
图为 netty 工作流程图
图为 netty 信息推送流程图信息编码设计
代码构造设计
系统总合分为 2 个大包:服务端和客户端,这里只介绍服务端。

项目类分为:nettyserver ,ServerHandler,字节流分析类(输入和输出),经过spring 来管理 nettyserver ;在服务端有分析层和接口层以及接口实现层。

代码编制
bootstrap = new ServerBootstrap(
new NioServerSocketChannelFactory(
(),最重要的是ChannelPipelineFactory的设计和编写。

在继承SimpleChannelUpstreamHandler的时候需要注意与spring的联合。

通信通道能否保持一致。

相关文档
最新文档