栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Netty学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Netty学习笔记

Netty 是由 JBOSS 提供的一个 java 开源框架;

Netty 提供异步的、事件驱动的网络应用,程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

Netty 是一个基于 NIO 的客户、服务器端编程框架,使用 Netty 可以确保你快速和简单的开发出一个网络应用;

Netty 5用户指南

线程模型 1.单线程模型

在 ServerBootstrap 调用方法 group 的时候,传递的参数是同一个线程组,且在构造线程
组的时候,构造参数为 1,这种开发方式,就是一个单线程模型。
个人机开发测试使用。不推荐。

2.多线程模型

在 ServerBootstrap 调用方法 group 的时候,传递的参数是两个不同的线程组。负责监听
的 acceptor 线程组,线程数为 1,也就是构造参数为 1。负责处理客户端任务的线程组,线
程数大于 1,也就是构造参数大于 1。这种开发方式,就是多线程模型。
长连接,且客户端数量较少,连接持续时间较长情况下使用。如:企业内部交流应用。

3.主从多线程模型

在 ServerBootstrap 调用方法 group 的时候,传递的参数是两个不同的线程组。负责监听
的 acceptor 线程组,线程数大于 1,也就是构造参数大于 1。负责处理客户端任务的线程组,
线程数大于 1,也就是构造参数大于 1。这种开发方式,就是主从多线程模型。
长连接,客户端数量相对较多,连接持续时间比较长的情况下使用。如:对外提供服务
的相册服务器。

拆包粘包问题解决

netty 使用 tcp/ip 协议传输数据。而 tcp/ip 协议是类似水流一样的数据传输方式。多次
访问的时候有可能出现数据粘包的问题(NIO异步读客户端发送的数据,如果连着发送三条数据根本没办法识别每次读的是哪一条,有可能是半条,有可能是一条半)

解决这种问题的方式如下:

定长数据流

客户端和服务器,提前协调好,每个消息长度固定。(如:长度 100)。如果客户端或服
务器写出的数据不足 100,则使用空白字符补足(如:使用空格)。

特殊结束符

客户端和服务器,协商定义一个特殊的分隔符号,分隔符号长度自定义。如:‘#’、‘KaTeX parse error: Expected group after '_' at position 1: _̲’、
‘AA@’。在通讯的时候,只要没有发送分隔符号,则代表一条数据没有结束。

协议

相对最成熟的数据传递方式。有服务器的开发者提供一个固定格式的协议标准。客户端和服务器发送数据和接受数据的时候,都依据协议制定和解析消息。

序列化对象

JBoss Marshalling 序列化
Java 是面向对象的开发语言。传递的数据如果是 Java 对象,应该是最方便且可靠。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292273.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号