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.hqwc.cn/news/341869.html

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

相关文章

PPT插件-大珩助手-修改素材名称及搜索功能演示

修改素材名称及搜索功能演示 大珩助手的素材库,支持修改素材的名称,支持动态查找素材,删除素材 移动素材到其他分类 软件介绍 PPT大珩助手是一款全新设计的Office PPT插件,它是一款功能强大且实用的PPT辅助工具,支持…

天津大数据分析培训班 常见的大数据培训课程

大数据现在属于热门职业技能之一,不管是大学毕业生,计算机和数据相关专业青年,已经工作一阵的开发人员,运营小白,还是其他想进入这个行当的,可能还没有编程基础的转行人,都想尝试大数据行业&…

“三指针法“合并两个有序数组(力扣每日一练)

我的第一想法确实是:先合并数组,再排序,搞完。 哈哈哈,想那么多干嘛,目的达成了就好了。 力扣官方题解是双指针: 还有糕手: Python: def merge(nums1, m, nums2, n):# 两个指针分别…

深入理解 Flink(六)Flink Job 提交和 Flink Graph 详解

Flink Program 编程套路回顾 1、获取执行环境对象 StreamExecutionEnvironment env StreamExecutionEnvironment.getExecutionEnvironment(); 2、通过执行环境对象,注册数据源 Source,得到数据抽象 DataStream ds env.socketTextStream(...) 3、调用数…

PostgreSQL内存浅析

体系结构 (https://www.postgresql.fastware.com/blog/lets-get-back-to-basics-postgresql-memory-components) (http://geekdaxue.co/read/fcantsql/qts5is) 共享内存 linux的共享内存实现 (https://momjian.us/main/writings/pgsql/insi…

Blazor快速开发框架Known-V2.0.0

Known2.0 Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行。 官网:http://known.pumantech.comGitee: https://gitee.com/known/KnownGithub:ht…

【Linux】Linux 系统编程——tree 命令

文章目录 1. 命令概述2. 命令格式3. 常用选项4. 相关描述4.1 tree 命令安装 5. 参考示例5.1 创建树形目录5.2 使用 tree 命令查看树形目录 1. 命令概述 tree 命令用于在命令行界面以树状图形式显示目录及其子目录的内容。这个命令递归地列出所有子目录,并可选择显示…

品牌渠道治理思路浅谈

渠道是否管控好,体现在渠道中有无低价链接,或者是低价数据的占比是否较低,如果打开电商平台,搜索一款产品的价格,有很多链接的价格低于旗舰店价格,这显然不是一个健康的渠道表现,所以治理渠道就…

odoo linux环境打印乱码或无内容

在odoo打印中会遇到乱码或者无内容显示,需要安装一些包 sudo apt-get install ttf-wqy-zenhei sudo apt-get install ttf-wqy-microhei安装前 安装后

mysql清空并重置自动递增初始值

需求:当上新项目时,测试环境数据库导出来的表id字段一般都有很大的初始递增值了,需要重置一下 先上代码: -- 查看当前自动递增值 SHOW CREATE TABLE table_name; -- 重建自动递增索引(可选) ALTER TABLE t…

UNIX网络编程-纪要

网络编程 网络协议模型网络中的一条连接 套接字编程字节序套接字地址结构socket创建套接字UNIX域套接字tcp套接字函数注意点TCP绑定端口问题 TIME_WAIT状态使用TCP编程注意点使用UDP编程注意点网络中数据大小的限制客服端-服务器交互问题网络数据读写问题常见套接字选项设置套接…

GitHub访问慢:分享两个镜像加速网站

GitHub网站,不知道是不是因为我的网络问题,最近一直断断续续,不稳定。非常难受。找到两个镜像网站,使用体验很不错,作以分享! GitHub官方网站 官网:https://github.com/ 两个镜像网站分享 1.…