Netty网络通信框架和JettyWeb容器的关系、区别与适用情况

最近一直想做一个分布式服务的模型用来完成实验室项目的分流计算量的要求,于是上网查找资料,发现有以下几个开源框架或者方法可以采用(按LZ的个人经验分类,如有不妥,请大家指证):

1、Netty、Mina和Grizzly

2、Jetty、Tomcat、Apache Server和Nginx

3、Thrift、Spring MVC、Spring RESTful和SOA

4、RMI、Hessian和Burlap

5、RMI、JMS和RPC

简单地查阅了资料和百度一下,发现大致可以有以下的联系:

1、Netty、Mina和Grizzly:网络IO框架,性能各异但Netty适用性比较强,建议Netty。

和2中的概念比较:

1)网络IO框架直接封装传输层的TCP/UDP协议,而web容器时基于servlet的,servlet3.0是基于传输层,封装了应用层的协议,包括HTTP协议的;

2)网络IO框架不需要web容器的支持,可以直接在程序中应用这些框架实现客户端和服务器通信,而Tomcat和Jetty都是Web容器,一般部署在服务器端,对servlet3.0的api提供了不同的实现

3)客户端使用netty设计通信流程,并设计应用层协议与服务器端的Tomcat/Jetty等Web容器支持的Servlet通信

4)Netty针对Socket,Jetty针对Servlet

5)也可以这样理解:得即时通讯想要走http协议的可以用jetty, 否则还是用netty

2、Jetty、Tomcat、Apache Server和Nginx:Web服务器,基于HTTP协议工作,Jetty可以与tomcat比较和划分为一类,其中Jetty的扩展性更好,但tomcat更稳定,可参考:Jetty的工作与设计原理和Tomcat比较;而Tomcat可以集合到Apache Server中,另外Nginx可以与Apache
Server划分一类,可参考:apache vs tomcat vs nginx

3、Thrift、Spring MVC、Spring RESTful和SOA:待续

4、RMI、Hessian和Burlap:待续

5、RMI、JMS和RPC:待续

时间: 2024-10-14 12:48:28

Netty网络通信框架和JettyWeb容器的关系、区别与适用情况的相关文章

Spark1.6之后为何使用Netty通信框架替代Akka

解决方案: 一直以来,基于Akka实现的RPC通信框架是Spark引以为豪的主要特性,也是与Hadoop等分布式计算框架对比过程中一大亮点. 但是时代和技术都在演化,从Spark1.3.1版本开始,为了解决大块数据(如Shuffle)的传输问题,Spark引入了Netty通信框架,到了1.6.0版本,Netty居然完成取代了Akka,承担Spark内部所有的RPC通信以及数据流传输. 网络IO扫盲贴 在Linux操作系统层面,网络操作即为IO操作,总共有:阻塞式,非阻塞式,复用模型,信号驱动和异

Mycat开发实践---Mycat的网络通信框架

1从一个测试说起 网上有人对Cobar和MyCAT做了一个简单的比较测试,过程如下: 1 测试环境 利用A.B.C三大类服务器,在A台上面安装配置MyCAT及Cobar,这样保证了硬件方面的一致性.B类服务器上安装Apache这一web服务,使用PHP语言.C类安装MySQL数据库,其中B类与C类均不止一台,主要目的是为了作压力的均分.C类服务器安装了4台,存放了相同的数据库,对其中一个表进行分片存储. 测试软件使用的是loadRunner.在对两个中间件分别进行测试的过程中,采用的web服务器

0001 - Spring 框架和 Tomcat 容器扩展接口揭秘

前言 在 Spring 框架中,每个应用程序上下文(ApplicationContext)管理着一个 BeanFactory,BeanFactory 主要负责 Bean 定义的保存.Bean 的创建.Bean 之间依赖的自动注入等.应用程序上下文则是对 BeanFactory 和 Bean 的生命周期中的各个环节进行管理,并且提供扩展接口允许用户对 BeanFactory 和 Bean 的各个阶段进行定制,本文从以下三个点进行切入讲解. refresh()是应用上下文刷新阶段. getBean(

Netty网络框架

Netty网络框架 Netty是一个异步的基于事件驱动的网络框架. 为什么要使用Netty而不直接使用JAVA中的NIO 1.Netty支持三种IO模型同时支持三种Reactor模式. 2.Netty支持很多应用层的协议,提供了很多decoder和encoder. 3.Netty能够解决TCP长连接所带来的缺陷(粘包.半包等) 4.Netty支持应用层的KeepAlive. 5.Netty规避了JAVA NIO中的很多BUG,性能更好. Netty启动服务端 1.创建ServerBootstra

NetworkComms网络通信框架序言

03年大学毕业,主要做Web开发,大家可以看看networkcomms中文站: www.networkcomms.cn  自己基于网上开源程序二次开发的:) 从06年开始,便把主要的学习精力放到网络通信上, 主要使用C#语言,WinForm框架,sql Server数据库. 工作于大企业的IT部门,平时有较多的时间用于技术研究,即便这样,在学习的初期,几年的时间内,都无法开发出比较稳定的CS系统,网络通信中需要调试和考虑的地方太多,能开发稳定的可复用的通信系统,我想只有传说中的高手才能做到,而我

c#网络通信框架networkcomms内核解析 序言

networkcomms是我遇到的写的最优美的代码,很喜欢,推荐给大家:) 基于networkcomms2.3.1开源版本( gplv3)协议,写了一些文章,希望大家喜欢,个人水平有限,不足之处难免. networkcommsc#通信框架来自于美丽的英国剑桥,由大洋彼岸的两位工程师 Marc Fletcher, Matthew Dean开发. c#网络通信框架networkcomms内核解析之一 消息传送 c#网络通信框架networkcomms内核解析之二 消息处理流程 c#网络通信框架net

c#网络通信框架networkcomms内核解析之十 支持优先级的自定义线程池

本例基于networkcomms2.3.1开源版本  gplv3协议 如果networkcomms是一顶皇冠,那么CommsThreadPool(自定义线程池)就是皇冠上的明珠了,这样说应该不夸张的,她那么优美,简洁,高效. 在 <c#网络通信框架networkcomms内核解析之六 处理接收到的二进制数据>中我们曾经提到,服务器收到数据后,如果是系统内部保留类型数据或者是最高优先级数据,系统会在主线程中处理,其他的会交给自定义线程池进行处理. 作为服务器,处理成千上万的连接及数据,单线程性能

c#网络通信框架networkcomms内核解析之八 数据包的核心处理器

我们先回顾一个 c#网络通信框架networkcomms内核解析之六 处理接收到的二进制数据 中,主程序把PacketBuilder 中的数据交给核心处理器处理的过程 //创建优先级队列项目 PriorityQueueItem item = new PriorityQueueItem(priority, this, topPacketHeader, packetBuilder.ReadDataSection(packetHeaderSize, topPacketHeader.PayloadPac

网络通信框架之volley

介绍 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient,几乎在任何项目的代码中我们都能看到这两个类的身影,使用率非常高. 不过HttpURLConnection和HttpClient的用法还是稍微有些复杂的,如果不进行适当封装的话,很容易就会写出不少重复代码.于是乎,一些Android网络通信框架也就应