zbus.NET网络通讯模块(一)

项目地址 https://git.oschina.net/rushmore/zbus

核心API就三个角色:

Dispatcher -- 负责-NIO网络事件Selector引擎的管理,对Selector引擎负载均衡

IoAdaptor -- 网络事件的处理,服务器与客户端共用,负责读写,消息分包组包等

Session -- 代表网络链接,可以读写消息

这三个角色大部分场景下,需要个性化处理的就只有IoAdaptor,也就是业务逻辑。

服务器、客户端工具,Server\Client等都是辅助上述三个核心角色而产生的。Http模块实现了HTTP协议的编解码与客户端,代码极少,整个zbus.NET ~ 50K,但是其功能很强大,扩展性灵活多变。(proxy模块就是例子,甚至整个zbus项目都是NET模块的应用)

1. 先热个身,写个服务器。不是Hello World,是具有生产高性能特性的服务器代码框架。

第一步,要做的事情很简单,你到底想做啥业务,直接切入主题,个性化一个IoAdaptor

为了能快速演示,并能通过浏览看到效果,我们实现一个HTTP服务,http://localhost/hello  调用返回hello.

MessageAdaptor是扩展了IoAdaptor,完成Http编解码的一个适配基础类。我们只需要在这个基础类之上衍生出一个业务应用即可。

public class MyServerAdaptor extends MessageAdaptor{ 
    public MyServerAdaptor(){  
        uri("/hello", new MessageProcessor() { 
            @Override
            public Message process(Message request) { 
            request.setBody("hello");
            return request;
            }
        });  
    } 
}

第二步,让这个IoAdaptor跑在zbus.NET引擎之上。

那么创建这个引擎(多个Server可共享一个引擎,所以设计上分离了)

final Dispatcher dispatcher = new Dispatcher();

final Server server = new Server(dispatcher);

把第一步的IoAdaptor注册到这个引擎(Server控制)之上,可以方便侦听多端口(cool?)

IoAdaptor ioAdaptor = new MyServerAdaptor();

server.registerAdaptor(80, ioAdaptor);

server.registerAdaptor(8080, ioAdaptor);

第三步,让我们把这个引擎(Server控制)跑起来

server.start();

这个时候你就可以通过浏览器直接访问了,当然也可以通过Client访问。

Simple?压力测试看看吧,一般i7box可以上5w+的QPS。

不妨先看看源码吧,

示例全部源码(可进入zbus项目test目录下玩更多示例)
package org.zbus.net;

import org.zbus.net.core.Dispatcher;
import org.zbus.net.core.IoAdaptor;
import org.zbus.net.http.Message;
import org.zbus.net.http.Message.MessageProcessor;
import org.zbus.net.http.MessageAdaptor;

public class MyServerAdaptor extends MessageAdaptor{ 
	public MyServerAdaptor(){  
		uri("/hello", new MessageProcessor() { 
			@Override
			public Message process(Message request) { 
				request.setBody("hello");
				return request;
			}
		});  
	} 

	@SuppressWarnings("resource")
	public static void main(String[] args) throws Exception {   
		final Dispatcher dispatcher = new Dispatcher();   
		final Server server = new Server(dispatcher);

		//相同的业务处理逻辑可以便捷的侦听多个地址
		IoAdaptor ioAdaptor = new MyServerAdaptor();
		server.registerAdaptor(80, ioAdaptor);
		server.registerAdaptor(8080, ioAdaptor);

    	server.start(); 
	}
}
时间: 2024-08-18 07:37:40

zbus.NET网络通讯模块(一)的相关文章

基于zbus网络通讯模块实现的MySQL透明代理(<100行代码)

项目地址 https://git.oschina.net/rushmore/zbus 我们上次讲到zbus网络通讯的核心API: Dispatcher -- 负责-NIO网络事件Selector引擎的管理,对Selector引擎负载均衡 IoAdaptor -- 网络事件的处理,服务器与客户端共用,负责读写,消息分包组包等 Session -- 代表网络链接,可以读写消息 实际的应用,我们几乎只需要做IoAdaptor的个性化实现就能完成高效的网络通讯服务,今天我们将举例说明如何个性化这个IoA

Neutron与Nova的网络逻辑关系

在开始讲Neutron与Nova的网络关系前,先理解一下Openvswitch是两个模块组件中,特别重要的网络通讯模块了,而Openvswitch主要为管理Linux bridge及接口,了解Linux Bridge是学习Neutron很重要的一部份,下面我带着一个平台中的两个节点(Neutron和Nova)去理解Neutron和Nova的网络逻辑关系: 1.通过以下Vxlan的逻辑图,去理解每个节点中,到底存在些什么组件与接口 2.通过以上图,先从计算节点(Nova)入手,通过使用相关命令去查

浅析播报制战斗的代码实现

最近做了一个包含播报制战斗的活动,活动大致是玩家一起挑战某个世界boss,直至将boss消灭,按伤害量进行奖励.该活动的战斗是播报类型的,即战斗过程是完全无操作,玩家只是要看完整个完整的战斗过程. 很显然,在玩家一开始进行战斗时,战斗结果已经确定了,客户端只是在接收到服务端发来的该场战斗的数据后,像播“视频”般将整场战斗播放出来.在此总结分析下战斗部分的代码. 与战斗相关的UML类图: Main为活动的核心类,拥有很多模块的引用,如声音模块,网络通讯模块,资源加载模块,窗口管理模块,这些在上面的

alibaba的COBAR真是强大.

近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了),特此推荐给大家.Cobar是阿里巴巴研发的关系型数据 的分布式处理系统,该产品成功替代了原先基于Oracle的数据存储方案,目前已经接管了3000+个MySQL数据库的schema,平均每天处理近 50亿次的SQL执行请求. 首先,使用Cobar的核心功能如下: 分布式: Cobar的分布式主要是通过将表放入不同的库来实现: 1. Cobar支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分 2

Cobar使用文档(可用作MySQL大型集群解决方案)

最近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了),特此推荐给大家.Cobar是阿里巴巴研发的关系型数据的分布式处理系统,该产品成功替代了原先基于Oracle的数据存储方案,目前已经接管了3000+个MySQL数据库的schema,平均每天处理近50亿次的SQL执行请求. 首先,使用Cobar的核心功能如下: 分布式:Cobar的分布式主要是通过将表放入不同的库来实现:1. Cobar支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分2. Co

mysql集群配置

最近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了),特此推荐给大家.Cobar是阿里巴巴研发的关系型数据的分布式处理系统,该产品成功替代了原先基于Oracle的数据存储方案,目前已经接管了3000+个MySQL数据库的schema,平均每天处理近50亿次的SQL执行请求. 首先,使用Cobar的核心功能如下: 分布式: Cobar的分布式主要是通过将表放入不同的库来实现: 1. Cobar支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分 2.

转:阿里开源Mysql分布式中间件:Cobar

原文来自于:http://hualong.iteye.com/blog/2102798 这几天研究了下Cobar, Cobar是阿里巴巴研发的关系型数据的分布式处理系统(Amoeba的升级版,该产品成功替代了原先基于Oracle的数据存储方案,目前已经接管了3000+个MySQL数据库的schema,平均每天处理近50亿次的SQL执行请求.)(github上面的是源码,大家下来需要自己用maven2编译后运行.者放Eclipse里面运行,一开始我用maven3没有执行成功.) 首先,使用Coba

智慧停车上传数据的无线通讯模块无线网络连接传感器

方案需求 随着城市里车辆的增加,停车位需求越来越多,城市停车场.机场.大学学校.园区.购物中心和办公写字楼停车场管理系统可以在泊车过程中感受到方便快捷,又可让整个停车场在使用中通畅有序,使管理部门减少用工成本,从而提高经济效益,科学高效管理.优质物业服务. 智慧停车解决方案集成了一整套的自动化服务,如预约.在线支付.停车时间通知,甚至是汽车搜索定位功能.智慧停车涉及到使用传感器.实时数据传输和移动应用程序开发,物业管理PC端,帮助用户监控剩余空位停车.实现泊车自动化.减少开车寻找停车场或空位,第

智能输液上传数据的无线通讯模块无线网络连接传感器

方案需求 中国每年输液人次已经达到1.6亿,人们对输液中存在的种种不便早已习以为常:调节滴速.时刻关注药液余量.家属看护等.微不足道的不便可能会威胁病人的生命安全,中国年输液死亡人数已经高达39万.临床患者这边喊着拔针,这边又喊着回血了"这种情况完全不担心了,护士可以合理的安排时间,不但提高了工作效力,更改善了服务质量,同时,患者及家属更加省心,不用无时无刻地关注输液情况,极大改善了患者的就医感受.为了确保护理工作质量,随时注意液体余量的变化,护士常常要穿梭于各个病房.为了将护理人员观察输液余量