Netty和Tomcat的区别

2023-10-26

一、Netty和Tomcat有什么区别?
Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,他的实质是一个基于http协议的web容器,但是Netty不一样,他能通过编程自定义各种协议,因为netty能够通过codec自己来编码/解码字节流,完成类似redis访问的功能,这就是netty和tomcat最大的不同。

有人说netty的性能比tomcat高,其实不然,tomcat从6.x开始就支持了nio(Nonblocking I/O,非阻塞IO)模式,并且后续还有arp模式——一种通过jni调用apache网络库的模式,相比于旧的bio(Blocking I/O,阻塞IO)模式,并发性能得到了很大提高,特别是arp模式,而netty是否比tomcat性能更高,则取决于netty程序员的技术实力。

netty是一款收到大公司青睐的框架,在我看来,netty能够受到青睐的原因有三:
并发高
传输快
封装好

Netty为什么并发高
Netty是一款基于NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,对比于BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高。

NIO 2.0里终于有AIO了,Linux上用AIO,Windows上用IOCP,都支持了概念上的最后一种IOasynchronous I/O

就IO而言:概念上有5中模型:blocking I/O,nonblocking I/O,I/O multiplexing (select and poll),signal driven I/O (SIGIO),asynchronous I/O (the POSIX aio_functions)。
然后呢 不同的操作系统对上述模型支持不同: unix支持io多路复用,不同系统叫法不同 :freebsd里面叫 kqueue;linux 是epoll。而windows: 2000的时候就诞生了IOCP支持最后一种异步I/O
java是一种跨平台语言,为了支持异步IO,诞生了nio,Java1.4引入的NIO 1.0是基于I/O复用的。在各个平台上会选择不同的复用方式。Linux用的epoll,BSD上用kqueue,Windows上应该是重叠I/O(肯定不是IOCP)
但是nio直接使用比较难用,所以有了mina,netty这些针对网络io部分(tcp/udp-传输层)的封装(nio也有非网络io部分),为了使nio更易用。
http是应用层的协议。
servlet3.0则是另外一种东西,不是对协议的封装,javaee6众多规范中的一个,但凡javaee6的实现(或者像tomcat这种web容器部分的实现),都会支持servlet3.0,servlet理论上可以支持多种应用层协议(不单单只是http),而servlet3.0以后提供的异步特性与javase提供的nio或aio无直接关系,就是使用bio一样可以实现servlet3.0中提供的异步特性。
异步只是一种概念,异步与否要看,上层使用的异步,而支持的下层完全可能是阻塞的。

tomcat就是针对http层的,所以我建议http还是选择tomcat(或者其他成熟的http-server),并不是说netty不好,而是你的选择问题。

netty是一个网络组件,tcp,udp,http都可以弄,但是官方文档都是些hello wolrd级别的。如果你非常了解http结构,完全可以基于netty搞出一个比tomcat牛的http server。如果做tcp开发,netty不二之选!
现在高并发分布式网站架构一般采用nginx(前端负载均衡)+ Netty/Tomcat(HTTP)

Netty是基于Java NIO开发的,而Tomcat是Apache下的针对HTTP的服务器项目,前者更像一个中间件框架,后者更像一个工具

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Netty和Tomcat的区别 的相关文章

  • Svm实现多分类

    机器学习 Svm实现多分类详解 Svm实现多类分类原理 代码实现 训练的图片 Svm实现多类分类原理 1 支持向量机分类算法最初只用于解决二分类问题 缺乏处理多分类问题的能力 后来随着需求的变化 需要svm处理多分类分为 目前构造多分类支持
  • 各种音视频编解码学习详解(11)--Flash Video系列

    用于在 Flash 中压缩视频 FLV流媒体格式是一种新的视频格式 它的出现有效地解决了视频文件导入Flash后 使导出的SWF文件体积庞大 不能在网络上有效使用等 缺点 一般FLV文件包在SWF PLAYER 的壳里 并且FLV可以很好的
  • Linux Memcached 安装

    1 Linux系统安装memcached 首先要先安装libevent库 memcache依赖于libevent 必须先安装 自动下载安装方式 也可使用源码安装方式 yum install libevent devel yum instal
  • 陪我到可可西里看一看海,不要未来,只要你来。——大冰 《陪我到可可西里去看海》

    陪我到可可西里看一看海 不要未来 只要你来 大冰 陪我到可可西里去看海
  • 斐波那契查找详细注解版

    对于斐波那契数列 1 1 2 3 5 8 13 21 34 55 89 也可以从0开始 前后两个数字的比值随着数列的增加 越来越接近黄金比值0 618 比如这里的89 把它想象成整个有序表的元素个数 而89是由前面的两个斐波那契数34和55
  • Python中RotatingFileHandler、TimedRotatingFileHandler函数用法

    欢迎来到我的博客 作者 秋无之地 简介 CSDN爬虫 后端 大数据领域创作者 目前从事python爬虫 后端和大数据等相关工作 主要擅长领域有 爬虫 后端 大数据开发 数据分析等 欢迎小伙伴们点赞 收藏 留言 背景 在python开发过程中
  • Linux如何卸载软件

    Linux系统可以通过终端 Terminal 或图形界面 GUI 来卸载软件 终端方式可以使用apt get Ubuntu 或yum CentOS 命令来实现 而图形界面方式可以使用系统自带的软件管理器来实现 比如Ubuntu的Ubuntu
  • libev学习系列之二:libev下载

    libev学习系列之二 libev下载 版本说明 版本 作者 日期 备注 0 1 ZY 2019 5 31 初稿 目录 文章目录 libev学习系列之二 libev下载 版本说明 目录 官网 GitHub 我的某度网盘 官网 可以去官网下载
  • 【python练习题 03】高矮个子排队

    题目 现在有一队小朋友 他们高矮不同 我们以正整数数组表示这一队小朋友的身高 如数组 5 3 1 2 3 我们现在希望小朋友排队 以 高 矮 高 矮 顺序排列 每一个 高 位置的小朋友要比相邻的位置高或者相等 每一个 矮 位置的小朋友要比相
  • Date:January 29th Title: 集训Day2-小信小友打怪兽 题解

    时间 1s 空间 256M 题目描述 小信与小友一起组队打怪兽 有一个长度为n的怪兽序列 一些怪兽会对小信造成伤害 另一些不会 小友是大佬 所有怪兽都伤害不了他 小信与小友轮流打怪兽 小信先手 小友后手 他们需要按照顺序打怪兽 由于技能有冷
  • 小米盒子3s刷机为国际版系统android TV 8.0

    小米盒子3s刷机为国际版系统android TV 8 0 所需工具和软件 一个U盘 adb工具 使用adb工具 通过ip连接小米盒子 官方下载地址 点此进入 dump 16AB img MiBOX3S queenchristina r145
  • tera-PROMISE数据集

    tera Promise数据集 原网址 http openscience us repo 已经打不开 备份网址 https github com opensciences opensciences github io 来源 论文An Imp
  • 蓝桥杯历届试题——取球游戏(博弈论)

    取球游戏 今盒子里有n个小球 A B两人轮流从盒中取球 每个人都可以看到另一个人取了多少个 也可以看到盒中还剩下多少个 并且两人都很聪明 不会做出错误的判断 我们约定 每个人从盒子中取出的球的数目必须是 1 3 7或者8个 轮到某一方取球时
  • 文件对应的Content-Type类型

    https www cnblogs com liu heng p 7520564 html CONTENT TYPE load text html 123 application vnd lotus 1 2 3 3ds image x 3d
  • 海思Hi3559A平台移植 opencv4.0.0

    原文 https blog csdn net xclshwd article details 85257117 海思Hi3559A平台移植 opencv4 0 0 2018年12月26日 09 51 53 xclshwd 阅读数 370 版
  • Jetpack学习之WorkManager

    绝大部分应用程序都有在后台执行任务的需求 根据需求的不同 Android为后台任务提供了多种解决方案 如JobScheduler Loader Service等 WorkManager为应用程序中那些不需要及时完成的任务提供了一个统一的解决

随机推荐

  • 基于MATLAB的图像压缩感知

    一 课题背景 数据压缩技术是提高无线数据传输速度的有效措施之一 传统的数据压缩技术是基于奈奎斯特采样定律进行采样 并根据数据本身的特性降低其冗余度 从而达到压缩的目的 近年来出现的压缩感知理论 Compressed Sensing CS 则
  • 将参数字符串中的字符反向排列,不是逆序打印。

    小题分享 定义一个字符串 abcdef 封装一个函数使他反向排列 不是逆序打印 我们很容易就能想到一种方法 采用循环的方式互换首尾的元素 void reverse char str int left 0 int right strlen s
  • 廊坊师范学院IT提高班,你真正了解多少?

    最近在csdn博文中经常看到博友们问 什么是提高班 更有人对提高班怀有疑惑 or 不理解 廊坊师范学院信息技术提高班到底是怎样的一个地方 你对这个地方又有怎样的认识 你对这个地方是否怀有一份好奇心呢 让这篇文章解开你心中的某些疑惑吧 我一个
  • Node.js使用session或JWT机制登录验证教程

    Session实现代码 Session 对象存储特定用户会话所需的属性及配置信息 这样 当用户在应用程序的 Web 页之间跳转时 存储在 Session 对象中的变量将不会丢失 而是在整个用户会话中一直存在下去 当用户请求来自应用程序的 W
  • 小程序中实现点击切换不同组件的效果

    前言 小程序中实现点击切换不同页面的组件效果 实现效果 实现步骤 第一 分别建立三个页面的文件夹以及他们的相关文件 第二 index模块中 index wxml
  • 安装APK的两种方式

    我的新书 Android App开发入门与实战 已于2020年8月由人民邮电出版社出版 欢迎购买 点击进入详情 网络安装 一般通过网线连接到设备 通过网线进行apk的传输和安装 步骤如下 1 adb connect 目标设备ip和端口 2
  • C++中long是什么类型

    long long本质上还是整型 只不过是一种超长的整型 int型 32位整型 取值范围为 2 31 2 31 1 long 在32位系统是32位整型 取值范围为 2 31 2 31 1 在64位系统是64位整型 取值范围为 2 63 2
  • AIGC基础:从VAE到DDPM原理、代码详解

    作者 王建周 单位 来也科技AI团队负责人 研究方向 分布式系统 CV NLP 前言 AIGC 目前是一个非常火热的方向 DALLE 2 ImageGen Stable Diffusion 的图像在以假乱真的前提下 又有着脑洞大开的艺术性
  • 我们真的需要复杂的密码吗?

    目录 toc 现状 想写这篇文章很久了 不过作为一个安全行业的从业者 总觉得说出来有些汗颜 我们这个行业的安全人员总是引导甚至强制灌输人们设置复杂密码的做法 让我一直觉得写这篇文章是在对我们的自我否定 自我打脸 所以也就一直没有写 直到我的
  • 元宇宙概念火热,多家企业推出NFT

    摘要 产业动态 Facebook 计划未来五年在欧洲招聘 1 万人建立元宇宙 新加坡新跃社科大学成立元宇宙实验室 淘宝APP上线 天猫双11首届元宇宙艺术展 格拉斯哥大学与VB Hyperledger合作启动Moshan区块链实验室 政策相
  • Robotium学习笔记三

    以下是从网络上抄录的一些Robotium注意事项 1 有些button没有string 没有text 只能通过index来click这样很不直观 而且button的index并不是固定的 有可能随着控件重新加载 顺序也有可能发生变化 无法保
  • 获取jsp各种参数方法总结

    package coreservlets import java io import javax servlet import javax servlet http import java util Creates a table show
  • C++学习(五十四)qt发布mac程序

    当你用Qt开发好程序后 是不是会很期待将你的成果分享给你的小伙伴 可是Qt的库并不是OS X标配的 所以我们要自己去复制库到app包里 才可以让app在其他未安装Qt的电脑上运行 比较幸运的是 Qt为我们提供了macdeployqt工具 借
  • 端到端深度学习与自动驾驶(含参考文献)

    参考文献见最后 1 自动驾驶系统的分类 Rule based system基于规则的系统 也有论文中将这样的方法叫做Mediated percepiton approach Fully end to end 端到端的系统 也有论文中叫做be
  • IT产业的70:20:10规律

    IT产业的发展是迅速而无法抗拒的 一家技术优秀 管理正规的互联网公司从奠基到上市往往只需要很少的时间 例如英特尔和微软从上市起用了十年的时间确立了它们在微机领域的霸主地位 并达到百亿产值 而思科上市后只用了五年左右的时间就主导了网络硬件的市
  • day39 动态规划

    62 不同路径 机器人每次只可以向右 或者 向下 每次向右走 dp i 0 1 dp 0 j 1 dp i j dp i 1 j dp i j 1 i的范围 0 m 1 j的范围 0 n 1 63 不同路径 II 解法同上 需要考虑障碍物
  • MQTT 官方资源地址

    MQTT官方资源地址 http mqtt org MQTT的官方地址 https www eclipse org paho downloads php MQTT源码的下载地址 官网源码 请参见官方资料和源代码 以免少走弯路 陷入大坑
  • 数据挖掘技术-绘制饼图

    绘制饼图 前置步骤 准备数据guomin npz 下载数据guomin npz到Linux本地的 course DataAnalyze data目录 绘制饼图 pyplot中绘制饼图的函数为pie 使用pie函数绘制2017年第一季度各产业
  • oracle表的storage参数说明

    author skatetime 2009 05 12 修改表的存储参数 storage 解釋 pctfree和pctused 用來控制數據塊中的空閑空間的使用 空閑空間用於數據行的插入和更新 initrans和maxtrans 用來控制分
  • Netty和Tomcat的区别

    一 Netty和Tomcat有什么区别 Netty和Tomcat最大的区别就在于通信协议 Tomcat是基于Http协议的 他的实质是一个基于http协议的web容器 但是Netty不一样 他能通过编程自定义各种协议 因为netty能够通过