Java基础之《netty(9)—netty和线程模型概述》

news2024/9/23 5:33:11

一、netty概述

1、NIO的类库和API繁杂,使用麻烦;需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。

2、需要具备其他的额外技能,要熟悉Java多线程编程,因为NIO编程涉及到Reactor模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的NIO程序。

3、开发工作量和难度都非常大,例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。

4、JDK NIO的Bug,例如臭名昭著的Epoll Bug,它会导致Selector空轮询,最终导致CPU 100%,直到JDK1.7版本该问题仍旧存在,没有被根本解决。

二、netty官网

1、https://netty.io/
netty是一个异步的,基于事件驱动的网络应用框架。为了快速的开发高性能的服务器端和客户端。

2、netty分成了三个部分

3、第一个部分

内核:
可扩展的事件模型
交互API
零拷贝

4、第二个部分

支持的协议。

5、第三个部分

支持的传输服务。

三、netty说明

1、netty是由JBOSS提供的一个Java开源框架。netty提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络IO程序。

2、netty可以帮助你快速、简单的开发出一个网络应用,相当于简化和流程化了NIO的开发过程。

3、netty是目前最流行的NIO框架,netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,知名的Elasticsearch、Dubbo框架内部都采用了netty。

四、netty的优点

1、netty对JDK自带的NIO的API进行了封装,解决了上述问题。

2、设计优雅:适用于各种传输类型的统一API阻塞和非阻塞Socket;基于灵活且可扩展的事件模型,可以清晰地分离关注点;高度可定制的线程模型 - 单线程,一个或多个线程池。

3、使用方便:详细记录的Javadoc,用户指南和示例;没有其他依赖项,JDK 5(netty 3.x)或6(netty 4.x)就足够了。

4、高性能、吞吐量更高;延迟更低;减少资源消耗;最小化不必要的内存复制。

5、安全:完整的SSL/TLS和StartTLS支持。

6、社区活跃、不断更新;版本迭代周期短,发现的Bug可以被及时修复,同时,更多的新功能会被加入。

五、netty版本说明

1、netty版本分为:netty3.x和netty4.x、netty5.x。

2、netty3.x太老了,不使用。netty5.x出现重大Bug,已经被官网废弃了。目前推荐使用的是netty4.x的稳定版本。

3、目前使用netty4.1.x版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/69121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java --- Spring6之Set方法注入

目录 一、注入外部Bean与内部Bean 二、简单类型注入 三、级联属性赋值 四、注入数组 五、List与Set注入 六、Map和Properties注入 一、注入外部Bean与内部Bean public class OrderDao {private static final Logger logger LoggerFactory.getLogger(UserDao.class);public…

led台灯哪个牌子效果最好?2022最新国产led灯品牌排行

目前台灯的发展非常迅速,已经到了全面led灯的时代,传统的卤素灯已经近乎完全淘汰,这不仅仅是跟技术的发展有关,也跟led灯本身的优势有关,各方面很适合做成护眼灯。 护眼灯为什么都是led灯? 护眼台灯使用le…

外卖配送系统搭建,骑手实时更新,路线规划更科学

在如今快节奏的现代生活,人们基本离不开外卖,这也催生了不少外卖配送系统的诞生,那你知道外卖配送系统搭建吗?如果想要一款外卖系统,如何着手呢? 要想开发一款成功的外卖配送系统,要先进行市场…

论文笔记|DeepWalk

简介 DeepWalk是由Bryan Perozzi,Rami Al-Rfou和Steven Skiena在2014年提出的,它是一种基于图的无监督特征学习方法,它有趣的点是将文本处理任务中词向量的处理思想迁移到了图特征学习上,就像处理句子得到word embedding一样&…

深入linux内核架构--进程线程

简介 进程和线程这两个词,每个程序员都十分熟悉,但是想要很清晰的描述出来却有一种不知道从何说起的感觉。所以今天结合一个具体的例子来描述一下进程与线程的相关概念:在terminal上敲出a.out这个自己编译出来可执行程序路径后,这…

【预测模型】基于随机蛙跳算法 SFLA优化神经网络实现数据回归预测附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

Kafka 3.3.1 Kraft 多端口协议搭建

Kafka 3.3.1 Kraft 多端口协议搭建 序 Kafka 3.3.1 已经出来挺久了,很多公司还停留在 1.X/2.X 甚至 0.8 版本的 kafka,不是说不能用,但是用起来真的糟糕,况且现在 Kraft 已经正式推出了,早就该更新了。 本篇文章从实…

276 t230 二叉搜索树第k小的元素

题解 思路:定义一个全局变量,初值赋予k.中序遍历,每次访问一个,变量–,当该变量为0时,就把val值赋予另一个全局变量返回. class Solution {int resKthSmallest0;int countKthSmallest;// 276 t230 二叉搜索树第k小的元素public int kthSmallest(TreeNode root, int k) {count…

大数据人工智能实验室-大数据培训方案

随着计算机和信息技术的迅猛发展和普及应用,行业应用系统的规模迅速扩大,行业应用所产生的数据呈爆炸性增长。企业需要将隐藏在大批杂乱无章的数据中进行信息的集中、萃取和提炼,找出所研究对象的内在规律,从而对决策提供帮助&…

预训练模型-代码补全(二):Copilot(GitHub)

​ GitHub Copilot是一个为开发者提供的突破性的AI编程辅助工具,但这才是开始。 昨天,Copilot团队推出了一个名为GitHub Copilot Labs的VS Code配套扩展。它独立于(并依赖于)GitHub Copilot扩展。它可以用来解释代码和翻译代码。…

【元胞自动机】格子波尔兹曼模型研究(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

【JNA】java springboot 动态读取动态库

【JNA】java springboot 动态读取动态库创建名为dynamic-lib-load.xml的文件资源目录结构如下工具类LibraryLoadDynamicParseUtil工具类调用我们在使用第三方动态库 时长出现动态库无法读取jar包内的动态库文件,以下代码希望对大家有帮助 废话不多说,上代…

【王道计算机网络笔记】数据链路层-局域网广域网

文章目录局域网局域网拓扑结构局域网传输介质局域网介质访问控制方法局域网的分类以太网以太网提供无连接、不可靠的服务以太网传输介质与拓扑结构的发展10BASE-T以太网适配器与MAC地址以太网的MAC帧高速以太网IEEE802标准MAC子层和LLC子层IEEE802.11有固定基础设施无线局域网无…

嵌入式:ARM体系结构详解

文章目录指令集与指令集架构主要计算机指令集架构PC及服务器领域嵌入式领域新生代ARM体系结构的演变ARM发展的历程指令集与指令集架构 指令:就是指挥计算机工作的命令,程序就是一系列按一定顺序排列的指令,计算机就是通过执行程序中的指令来…

11. softmax回归的简洁实现

通过深度学习框架的高级API也能更方便地实现softmax回归模型。 继续使用Fashion-MNIST数据集,并保持批量大小为256。 import torch from torch import nn from d2l import torch as d2lbatch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(batch…

在IDEA中配置Maven

文章目录Maven 简介Maven 下载与安装修改Maven配置文件Maven文件目录的含义配置IDEA的MavenMaven 简介 Maven 项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外&#x…

数据库审核工具SQLE接口调用

点击上方蓝字关注我接上文数据库审核接口SQLE的探索使用,本次自定义接口进行调用,实现需求。1、创建自定义审核接口因直接调用SQLE的审核接口,会出现token过期,且审核及结果查询接口是分开的,因此,出于以上…

Mock模拟数据动态字节码编译插件优化

模块介绍 dmc-plugin-java 动态编译字节码 关于动态编译字节码技术参考: https://blog.csdn.net/huxiang19851114/article/details/127881616 优化如下: 动态文本类改为界面配置及数据库保存 数据库表结构: DROP TABLE IF EXISTS compi…

leetcode刷题 log day56(编辑距离总结篇~

583. 两个字符串的删除操作 【思路】这道题只有删除操作,两个字符串相等时,步数不变,不相等时,只能做删除操作,删除有三种情况:删除 word1 或删除 word2 或者两个字符串都删除,取三种情况的最小…

sytem clock for ctrl ms task and us/ms delay

Cortex-M3 的内核中包含一个 SysTick 时钟。SysTick 为一个 24 位递减计数器,SysTick 设定初值并使能后,每经过 1 个系统时钟周期,计数值就减 1。计数到 0 时,SysTick 计数器自动重装初值并继续计数,同时内部的 COUNTF…