阅读更多

17顶
1踩

企业架构

原创新闻 Netty3.2.1最终版发布

2010-06-24 14:53 by 副主编 just_cool 评论(12) 有10552人浏览

Netty3.2.1最终版发布了!这是3.2分支的第一个官方稳定版本。

Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

 

新改进:

  • 对NIO transport性能的改进;
  • 对HTTP codec的改进
  • 支持WebSocket
  • 基于Zlib的压缩处理
  • RTSP codec
  • 大小: 48.6 KB
来自: theserverside
17
1
评论 共 12 条 请登录后发表评论
12 楼 yin_bp 2011-03-02 17:38
bbossgroups-3.0发布,新增子项目bboss mvc,详情

bbossgroups-3.0发布
release version : bbossgroups-3.0
release date: 2011/02/26

主要的功能特性:
1.新增的一套mvc框架即bboss-mvc子项目,这是bbossgroups-3.0相比bbossgroups-2.0-RC1最大的变化。
bboss mvc基于bboss aop开发,能够与bboss aop(aop框架,业务组件管理),bboss persistent(持久层框架),bboss taglib(标签库框架)协作完成j2ee项目的开发过程;
bboss mvc很好地实现了mvc 2模型,支持多方法控制器,注解控制器,支持restful功能,能非常方便地与bboss taglib结合实现分页功能;
支持多文件上传功能;
支持基本数据类型、po对象、List<bean>对象数据绑定,提供丰富的参数绑定注解;
控制器全部采用单例模式;
利用bboss aop,可以非常方便地将业务组件注入到mvc 控制器中;
扩展容器规范,支持web应用lib目录下的jar按目录分类存放,方便管理应用中日益增多的jar包。

2.同时为了开发mvc框架,对bboss aop,bboss persistent,bboss taglib,bboss util做了功能扩展。
3.bboss aop新增国际化功能
4.bboss aop改进了rpc远程调用协议,使得rpc更加稳定、性能更好
5.bboss aop新增了http/https rpc远程调用协议,可以直接使用应用服务器提供的http协议,很容易地实现aop 组件的远程调用
6.改进了bboss aop 中提供的集群功能
7.改进了bboss aop 中提供的quartz任务调度功能
8.修复了一系列bug
9.bboss persistent中新增了一套简洁易用的api,实现各种常用的数据库操作更加方便。

10.与bbossgroups-3.0一起发布的文档有:
《BBoss AOP框架技术白皮书.doc》
《bboss mvc开发手册.doc》
《frameworkset开发手册.doc》
这些文档放置在发布包的文档目录下。
11.与bbossgroups-3.0一起发布的demo有
mvcdemo.rar
位于文档目录的mvcdemo子目录下

更详细的情况请浏览release note:
http://sourceforge.net/projects/bboss/files/bbossgroups-3.0/README.txt/download

bbossgroups-3.0下载地址:
http://sourceforge.net/projects/bboss/files/bbossgroups-3.0/bbossgroups-3.0.zip/download

bboss group project blog:
http://blog.csdn.net/yin_bp
http://yin-bp.javaeye.com/

bbossgroups论坛地址:
[url]http://www.xtzy.com:800 [/url]
11 楼 yin_bp 2010-07-20 23:27
最近发布的bbossgroups-2.0-RC版本中集成了Netty3.2.1最终版作为其rpc协议,具体的使用方法如下:
bbossgroups-2.0-RC下载地址:
https://sourceforge.net/projects/bboss/files/bbossgroups-2.0-RC/bbossgroups-2.0-RC.zip/download
补丁下载地址:
https://sourceforge.net/projects/bboss/files/bbossgroups-2.0-RC/cglib%20stackoverflow-patch.zip/download

netty协议的配置文件为:org/frameworkset/spi/manager-rpc-netty.xml

被导入在rpc基础配置文件manager-rpc-service.xml中:

<managerimport file="org/frameworkset/spi/manager-rpc-netty.xml" />

11.5.6.1 NEtty协议配置

11.5.6.1.1 Netty服务请求和响应处理类
    <!--
           netty服务请求和响应处理类
        -->
    <property name="rpc.netty.RPCServerIoHandler" singlable="true"
       class="org.frameworkset.netty.NettyIOHandler">
       <construction>
           <property name="name" value="RPCServerIoHandler" class="String" />
           <property name="request_handler" refid="attr:rpc.request_handler" />        
       </construction>
    </property>  
   
11.5.6.1.2 Netty服务器组件
    <!--
       netty服务器组件
     -->
    <property name="rpc.netty.server" singlable="true"
       class="org.frameworkset.netty.NettyRPCServer">
       <construction>
           <property name="netty.params" refid="attr:rpc.protocol.netty.params" />         
       </construction>
    </property>      
      
       
11.5.6.1.3 Netty的链接参数配置
      
        <!-- 
           netty框架的链接参数
       -->
    <property name="rpc.protocol.netty.params">
       <map>
           <!-- 连接超时时间,默认值60秒,单位:秒 -->
           <property name="connection.timeout" value="60" />
              <!--
                  服务器绑定端口
               -->
           <property name="connection.bind.port" value="12346" />
              <!--
                  服务器绑定ip
               -->
           <property name="connection.bind.ip" value="172.16.17.216" />
          
           <!--
              ssl配置参数开始
              如果启用ssl,那么必须在rpc.protocol.netty.ssl.client和
              rpc.protocol.netty.ssl.server中配置证书的相关信息
              服务器端只需要配置rpc.protocol.netty.ssl.server
              客服端只需要配置rpc.protocol.netty.ssl.client
            -->
           <property name="enablessl" value="false" />
<!--          <property name="enabledCipherSuites" value="SSL_DH_anon_WITH_RC4_128_MD5"  >-->
<!--              <editor class="org.frameworkset.spi.assemble.StringArrayEditor"/>-->
<!--          </property>-->
              <!-- 下述参数不要配置  -->
<!--          <property name="enabledProtocols" value="TLS" >-->
<!--              <editor class="org.frameworkset.spi.assemble.StringArrayEditor"/>-->
<!--          </property>-->
           <property name="needClientAuth" value="true" />
           <property name="wantClientAuth" value="true" />
          
           <!-- ssl配置参数结束 -->
       </map>
    </property>
   
       <!-- 
           netty框架的ssl client参数
       -->
    <property name="rpc.protocol.netty.ssl.client">
       <map>
           <!-- 连接超时时间,默认值60秒,单位:秒 -->
           <property name="keyStore" value="keystore/client.ks" />
              <!--
                  服务器绑定端口
               -->
           <property name="keyStorePassword" value="123456" />
              <!--
                  服务器绑定ip
               -->
           <property name="trustStore" value="keystore/client.ts" />
          
           <property name="trustStorePassword" value="123456" />
       </map>
    </property>
   
    <!-- 
           netty框架的ssl server参数
       -->
    <property name="rpc.protocol.netty.ssl.server">
       <map>
           <!-- 连接超时时间,默认值60秒,单位:秒 -->
           <property name="keyStore" value="keystore/server.ks" />
              <!--
                  服务器绑定端口
               -->
           <property name="keyStorePassword" value="123456" />
              <!--
                  服务器绑定ip
               -->
           <property name="trustStore" value="keystore/server.ts" />
          
           <property name="trustStorePassword" value="123456" />
       </map>
    </property>
11.5.6.2    Netty协议使用方法
11.5.6.2.1 服务组件配置
客服端和服务器端配置组件:
<property name="rpc.test" singlable="true" class="org.frameworkset.spi.remote.RPCTest"/>

11.5.6.2.2 启动服务器
先在配置服务器上配置好以下参 数:
    <!--
                  服务器绑定端口
               -->
           <property name="connection.bind.port" value="12347" />
              <!--
                  服务器绑定ip
               -->
           <property name="connection.bind.ip" value="172.16.17.216" />

在服务器端启动netty服务器协议,启动后客服端即可进行远程服务调用。启动netty服务器方法如下:
org.frameworkset.spi.remote.RPCHelper.getRPCHelper().startNettyServer();

11.5.6.2.3 获取远程组件实例
          单点调用
RPCTestInf testInf = (RPCTestInf)ApplicationContext.get ApplicationContext ().getBeanObject("(netty::172.16.17.216:1186)/rpc.test");
          多点调用
RPCTestInf testInf = (RPCTestInf) ApplicationContext.get ApplicationContext ().getBeanObject("(netty::192.168.11.102:1186;192.168.11.102:12346)/rpc.test");
          组播调用
RPCTestInf testInf = (RPCTestInf) ApplicationContext.get ApplicationContext ().getBeanObject("(netty::all)/rpc.test");

          单点调用-传递认证信息
RPCTestInf testInf = (RPCTestInf) ApplicationContext.get ApplicationContext ().getBeanObject("(netty::172.16.17.216:1186)/rpc.test?user=admin&password=123456");
          多点调用-传递认证信息
RPCTestInf testInf = (RPCTestInf) ApplicationContext.get ApplicationContext ().getBeanObject("(netty::192.168.11.102:1186;192.168.11.102:12346)/rpc.test?user=admin&password=123456");
          组播调用-传递认证信息
RPCTestInf testInf = (RPCTestInf) ApplicationContext.get ApplicationContext ().getBeanObject("(netty::all)/rpc.test?user=admin&password=123456");
11.5.6.2.4 远程方法调用
Object count = testInf.getCount();
11.5.6.2.5 调用结果处理
单点调用的结果就是服务接口返回的值,无需处理。如果方法调用失败,系统将抛出具体的远程异常。
多点调用和组播调用的结果处理方法一样,以多点调用为例:
RPCTestInf testInf = (RPCTestInf) ApplicationContext.get ApplicationContext ().getBeanObject("(netty::192.168.11.102:1186;192.168.11.102:12346)/rpc.test?User=admin&password=123456");
Object count = testInf.getCount();
Object count = testInf.getCount();
获取192.168.11.102:1186返回的结果:
Object count_1186 = BaseSPIManager.getRPCResult("192.168.11.102", "1186", count);如果返回值是异常,那么直接抛出该异常。
或者
Object count_1186 = ApplicationContext.getNettyRPCResult
("192.168.11.102:1186", count);如果返回值是异常,那么直接抛出该异常。
或者
Object count_1186 =
   ApplicationContext.getRPCResult("192.168.11.102:1186", count,
org.frameworkset.remote.Target.BROADCAST_TYPE_NETTY);  如果返回值是异常,那么直接抛出该异常。
获取192.168.11.102:12346返回的结果:
Object count_12346 = ApplicationContext.getRPCResult("192.168.11.102", "12346", count); 如果返回值是异常,那么直接抛出该异常。
或者
Object count_12346 = ApplicationContext.getNettyRPCResult
("192.168.11.102:12346", count);
或者
Object count_12346 =
   ApplicationContext.getRPCResult("192.168.11.102:12346", count,
org.frameworkset.remote.Target.BROADCAST_TYPE_NETTY);  如果返回值是异常,那么直接抛出该 异常
10 楼 kellersoon 2010-06-28 21:45
支持web socket,很棒!
9 楼 xjwm 2010-06-28 08:28
基本上没有多大变化的重写了mina,都是一个人写的嘛
8 楼 afei1689 2010-06-27 20:29
鹤惊昆仑 写道
plurk微博弃用Netty了,转而使用nodejs。看plurk作者的理由:"We have rewritten to node.js from Java+JBoss Netty, because the old solution had scalability problems. We have also been able to build a very sophisticated messaging system given JavaScript expressiveness and the simplicity of node.js. Generally, we have found node.js and V8 very impressive - and it uses about 10 times less memory than Java+Netty did. "


用netty打开一个tcp连接,大约要用掉10k内存左右(os要8k,jvm要2k),按这么算,百万连接也就10G左右,不知道node.js对内存消耗情况怎么样
7 楼 鹤惊昆仑 2010-06-26 10:56
plurk微博弃用Netty了,转而使用nodejs。看plurk作者的理由:"We have rewritten to node.js from Java+JBoss Netty, because the old solution had scalability problems. We have also been able to build a very sophisticated messaging system given JavaScript expressiveness and the simplicity of node.js. Generally, we have found node.js and V8 very impressive - and it uses about 10 times less memory than Java+Netty did. "
6 楼 yinchonging 2010-06-25 15:02
phoenixup 写道
turionboy 写道
与mina比起来如何?

进化版Mina,加强版Mina,勤快版Mina。


对头!
5 楼 crazier9527 2010-06-25 10:14
用下试试
4 楼 phoenixup 2010-06-25 08:49
turionboy 写道
与mina比起来如何?

进化版Mina,加强版Mina,勤快版Mina。
3 楼 jayghost 2010-06-24 20:51
刚用了3.1.5GA,就更新了
2 楼 zhangchen 2010-06-24 20:06
比Mina强
1 楼 turionboy 2010-06-24 16:30
与mina比起来如何?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Netty 框架的源码与使用

    Netty是一个开源的、高性能、异步通信框架。它提供了许多强大的功能,使开发人员能够快速开发出健壮、高吞吐量的网络应用。在Java领域,Netty是最流行、最知名的网络库之一,被多款知名公司如Twitter、Facebook、...

  • 利用Editplus2的用户工具功能来即时调试PHP

    地址:http://www.7880.com/Info/Article-9eb100.html 转载于:https://www.cnblogs.com/antony1029/archive/2006/10/10/525402.html

  • Netty核心技术十--Netty 核心源码剖析

    3.1 目的 服务器启动后肯定是要接受客户端请求并返回客户端想要的信息的,下面源码分析Netty 在启动之后是如何接受客户端请求的 3.2 源码剖析 3.2.1 说明 从之前服务器启动的源码中,我们得知,服务器最终注册了一个...

  • Netty

    这里写目录标题1 概述2 为什么使用Netty 1 概述 Netty的官网:https://Netty.io/ Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance ...

  • meethigher-Netty小白入门教程

    pipeline 负责发布事件(读、读完成等)传播给各个 handler , handler 对自己感兴趣的事件进行处理 handler分为Inbound(数据输入时走入站handler)和Outbound(数据输出时走出站handler)两类 eventLoop(底层...

  • netty源码解读五(channel消息处理)

    netty源码之channel消息处理

  • 03、Netty学习笔记—(Netty组件学习)

    文章目录一、认识Netty1.1 Netty 是什么?1.2 Netty 的作者1.3 Netty 的地位1.4 Netty 的优势二、netty入门程序HelloWorld!2.1、netty入门:客户端-&gt;服务端 helloworld2.1.1、服务端2.1.2、客户端2.2、流程梳理...

  • 基于netty实现websocket高并发服务

    3.2.1.单线程模型 理论上一个NIO线程,既能够接收客户端的链接,同时也能够处理IO操作以及其他任务操作等等,但是一个线程对cpu利用率不高,并且,一旦有大量的请求连接,性能上势必会下降,甚至无法响应的情况. ...

  • netty源码解读六(内存池相关)

    netty源码之内存池

  • Netty防止内存泄漏措施

    某直播平台,一些网红的直播间在业务高峰期,会有 10W+ 的粉丝接入,如果瞬间发生大量客户端连接掉线、或者一些客户端网络比较慢,发现基于 Netty 构建的服务端内存会飙升,发生内存泄漏(OOM),导致直播卡顿、或者...

  • Netty——入门

    1.1、Netty是什么 Netty是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。 1.2、Netty的地位 Netty在Java网络应用框架中的地位就好比Spring框架在JavaEE开发中的地位...

  • 【NIO与Netty】Netty 入门

    黑马程序员 Netty入门学习:笔记中包含大量可供参考的代码案例以及案例的结果分析

  • Netty源码解析-EventLoop线程状态变化

    前言: ...而所有的事件监听和执行呢,也都是在这个EventLoop上,前面的run()方法分析中已经说明过。 而NioEventLoop的父类SingleThreadEventLoop和SingleThreadEventExecutor则代表了一个任务执行器,其创建了唯一...

  • Netty简述以及应用案例

    Netty的官网:https://Netty.io/Netty是一个异步事件驱动...也就是说,Netty 是一个基于NIO的客户、服务器端的编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。

  • 两个案例带你搞定JBoss Marshalling编解码在Netty中的应用

    消息编解码器 3.2.1. 编码器 3.2.2. 解码器 3.3. 服务端代码 3.4. 客户端代码 3.5. 运行结果 1. Marshalling环境配置 本节主要介绍Marshalling开发环境的配置,本文所用工具版本如下: JDK 1.8 Netty 4.0 IDEA 2020...

  • BIO、NIO与netty的架构关系

    目录1.BIO2.NIO3.Netty3.1 传统阻塞式IO模型3.2 Reator模型3.2.1单reactor单线程模型3.2.2单reactor多线程模型3.2.3主从reactor多线程模型3.3 netty架构模型3.4 Netty的执行流程 1.BIO BIO的基本特点:BIO基本特点...

  • Netty编解码框架:Java序列化、Protobuf、 Marshalling

    LineBasedFrameDecoder是回车换行解码器,如果用户发送的消息以回车换行符作为消息结束的标识,则可以直接使用Netty的LineBasedFrameDecoder对消息进行解码,只需要在初始化Netty服务端或者客户端时将...

  • Netty 防止内存泄漏措施

    某直播平台,一些网红的直播间在业务高峰期,会有 10W+ 的粉丝接入,如果瞬间发生大量客户端连接掉线、或者一些客户端网络比较慢,发现基于 Netty 构建的服务端内存会飙升,发生内存泄漏(OOM),导致直播卡顿、...

  • Netty系列之Netty编解码框架分析

    LineBasedFrameDecoder是回车换行解码器,如果用户发送的消息以回车换行符作为消息结束的标识,则可以直接使用Netty的LineBasedFrameDecoder对消息进行解码,只需要在初始化Netty服务端或者客户端时将...

  • NIO 与 Netty 编程

    Netty 框架 概述 核心API 入门案例 网络聊天案例 编码和解码 自定义RPC 整体分析 设计和实现** 一.多线程编程 1.1基本知识回顾 线程是比进程更小的能独立运行的基本单位,它是进程的一部分,一个...

Global site tag (gtag.js) - Google Analytics