相关推荐
-
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入门:客户端->服务端 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基本知识回顾 线程是比进程更小的能独立运行的基本单位,它是进程的一部分,一个...
12 楼 yin_bp 2011-03-02 17:38
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下载地址:
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
9 楼 xjwm 2010-06-28 08:28
8 楼 afei1689 2010-06-27 20:29
用netty打开一个tcp连接,大约要用掉10k内存左右(os要8k,jvm要2k),按这么算,百万连接也就10G左右,不知道node.js对内存消耗情况怎么样
7 楼 鹤惊昆仑 2010-06-26 10:56
6 楼 yinchonging 2010-06-25 15:02
进化版Mina,加强版Mina,勤快版Mina。
对头!
5 楼 crazier9527 2010-06-25 10:14
4 楼 phoenixup 2010-06-25 08:49
进化版Mina,加强版Mina,勤快版Mina。
3 楼 jayghost 2010-06-24 20:51
2 楼 zhangchen 2010-06-24 20:06
1 楼 turionboy 2010-06-24 16:30