Netty开篇——基础介绍与准备(一)

I/O篇

  1. Netty的介绍
    1. Netty 是由JBOSS提供的一个Java开源框架在Github上
    2. Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络IO程序。
    3. Netty 主要针对在TCP协议下面向客户端的高并发应用,或者Peer-to-Peer/P2P场景下的大量数据持续传输的应用。
    4. Netty是一个NIO框架,适用于服务器通讯相关场景
    5. 共四层
      • TCP/IP
      • java.io
      • Nio
      • Netty
  2. Netty的应用场景
    1. 互联网行业
      • 分布式系统各节点之间远程服务调用,Netty 作为异步高性能的通信框架,往往作为基础通信组件被这些 RPC 框架使用。
      • 典型应用:Dubbo默认使用Netty作为基础通信组件,用于实现各进程节点之间的内部通信
    2. 游戏行业
      • Netty提供了TCP/UDP和HTTP协议,方便定制和开发私有协议栈,账号登录服务器
      • 地图服务器之间可以通过Netty进行高性能的通信
    3. 大数据领域
      • Hadoop的高性能通信和序列化组件AVRo的RPC框架,默认采用 Netty进行跨界点通信
      • 它的Netty Service基于Netty框架二次封装实现。
    4. 其他开源项目
      • Akka、flink、spark等
  3. I/O模型基本说明
    1. 用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能
    2. Java 共支持3 种I/O模式
      • BIO: 同步并阻塞(传统阻塞)
      • NIO: 同步非阻塞
      • AIO: 异步非阻塞
  1. BIO、NIO、AIO 适用场景分析
    1. BIO适用于连接数目比较小且固定的架构,对服务器资源要求比较高,并发局限于应用中,JDK4以前的唯一选择,但程序简单易理解。
    2. NIO适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,弹幕系统,服务器间通讯等。编程比较复杂,JDK4开始支持。

AIO使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS/操作系统参与并发操作。编程比较复杂,JDK7开始支持。

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

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

相关文章

基于JavaWeb+BS架构+SpringBoot+Vue“共享书角”图书借还管理系统系统的设计和实现

基于JavaWebBS架构SpringBootVue“共享书角”图书借还管理系统系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 第1章 概 述 5 1.1 开发背景及研究意义 5 1.2 国内外研究…

【SpringMVC快速使用】1.@RestController @RequestMapping 2.logback的使用

背景:为何从这个最简单的 例子写起呢? 那是因为我们的管理后台之类的都是别人写的,我也听说了大家说:只用Post请求就足够了,但是却发现,在浏览器中测试时,默认是GET请求,如果直接写…

SQL-DML增删改

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:重拾MySQL 🍹文章作者技术和水平很有限,如果文中出现错误&am…

Mac 使用nvm use命令无法切换node版本

解决方案:先卸载使用brew安装的node( 具体操作请移步使用brew卸载node),再使用nvm use命令切换node版本。 问题复现:使用nvm use命令显示切换成功,但是实际版本还是原来的node版本,应该是与bre…

MySQL的事务隔离级别脏读、幻读、不可重复读

一、MySQL的事务隔离级别 1、读未提交:一个事务还没提交时,它做的变更就能被别的事务看到。(别人改数据的事务尚未提交,我在我的事务中也能读到。) 2、读提交:(Oracle、SQL Server默认&#x…

短剧时代即将来临?AI 自动生成剧本和多场景长视频

近年来随着扩散模型(diffusion models)的进步和发展,给定文本提示进行高质量视频生成技术有着显著的提升。这些技术方案大多针对已有的二维图像扩散模型进行拓展,将图像二维神经网络修正为视频三维神经网络,并基于扩散…

怎么画业务流程图?掌握这几步就够了

怎么画业务流程图?业务流程图不仅仅是一个简单的图表,而是一个强大的工具,能够帮助企业更好地理解、优化和管理业务流程。而想要画出一个完整的业务流程图并不简单,下面就给大家介绍一下具体的绘制方法。 一、选择绘制工具 在绘制…

UNIX环境编程-进程纪要

进程章节 环境表关于system调用的安全问题终端和作业管控信号sigsuspend函数 守护进程编程规则多进程问题多线程问题IO种类进程通信终端 环境表 每个程序都有一张环境表。环境表是一个字符指针数组,其中每个指针都包含一个以null 结尾的环境变量字符串。全局变量en…

书客、明基、好视力护眼台灯大比拼,哪款更胜一筹?

在现代生活中,我们经常面对着各种电子屏幕,给眼睛造成了一定的压力,时间一长,会发现眼睛很疲劳。很多家长仔细观察,当孩子长时间处在不合适地灯光下玩耍、学习,会发现他们有揉眼的动作,这就是不…

vivado ip manager cache

https://china.xilinx.com/video/hardware/configuring-managing-reusable-ip-vivado.html

07- OpenCV:模糊图像

目录 一、模糊原理 二、模糊的相关处理方法: 1、均值滤波(归一化盒子滤波) 2、高斯滤波(正态分布的形状) 3、中值模糊 4、双边模糊算法(美容软件) 5、相关代码: 6、几种模糊算法的比…

问CHATawsec2怎么部署实例?

CHAT回复:在AWS EC2(Elastic Compute Cloud)上部署实例主要涉及以下步骤: 1. 登录AWS管理控制台:使用你的AWS账户登录AWS管理控制台。 2. 导航到EC2服务:在顶部菜单栏中,点击"服务"然…

本地静态资源打包出来,本地配置ng访问服务器(uniapp打包成h5后,使用打包资源连接测试环境测试)

1.下载ng https://nginx.org/en/download.html 2.解压下载的压缩包 3.打包h5静态资源 4.将打包出来的资源放入ng -》html文件夹下面 5.进入ng-》conf-》nginx.conf 进行转发配置 6.启动ng服务,点击nginx.exe 7.浏览器直接访问http://localhost:8081/#/&#x…

Elasticsearch倒排索引详解

倒排索引: 组成 term index(词项索引 ,存放前后缀指针) Term Dictionary(词项字典,所有词项经过文档与处理后按照字典顺序组成的一个字典(相关度)) Posting List(倒排表&#xf…

Web实战丨基于Django与HTML的新闻发布系统

文章目录 写在前面项目简介项目框架实验内容安装依赖库1.创建项目2.系统配置3.配置视图文件4.配置模型文件5.配置管理员文件6.配置模板文件7.创建数据库8.启动项目 运行结果写在后面 写在前面 本期内容:基于Django与HTML的简单新闻发布系统。 项目需求&#xff1a…

快速入门Semantic Kernel:构建您的第一个AI应用

快速入门Semantic Kernel:构建您的第一个AI应用 引言Semantic Kernel基础知识核心功能操作原理 环境准备和安装环境准备安装Semantic Kernel 创建第一个Semantic Kernel项目项目设置示例代码测试和运行 设计有效的Prompt基本原则示例测试和迭代 常见问题和解决方案问…

order by 与 分页 的冲突

order by 与 分页 的冲突 问题背景 Oracle拼接SQL,JAVA使用SQLQueryExecutor执行拼接的SQL,SQL如下: SELECT col_key, col_other_info FROM tb_tableName WHERE col_where_info 一些筛选条件 order by col_updatetime desc 该表中的数…

python股票分析挖掘预测技术指标知识跳空缺口指标详解(5)

本人股市多年的老韭菜,各种股票分析书籍,技术指标书籍阅历无数,萌发想法,何不自己开发个股票预测分析软件,选择python因为够强大,它提供了很多高效便捷的数据分析工具包。 我们已经初步的接触与学习其中数…

cad的模型怎么打散导入3d---模大狮模型网

将CAD中的模型打散并导入3D建模软件,需要以下步骤: 将CAD中的模型进行分组或分层:在CAD中,将模型按照不同的组或层进行分组或分层。这样可以方便地控制每个部分的显示和隐藏,在导入3D建模软件后,也可以更方…

ChatGLM3-6B的本地api调用

ChatGLM3-6B的本地api调用方式 1.运行openai_api_demo路径下的openai_api.py 启动后界面: 注意:本地api调到的前提是——本地部署了ChatGLM3-6B,本地部署的教程可参考: 20分钟部署ChatGLM3-6B 部署了若CUDA可用,默认会以CUDA方…