|
|
发表于 2009-5-29 11:12:00
|
显示全部楼层
Re:我写的网络模块,大家来看看,不用也来讨论讨论……
呵呵,LS误会了,只是类似,不是一样的东西,我那个是一套“框架”,netgate(我叫gatesvr)是其中一个组件,它也只负责数据包分流中转,也是代码足够简单,但是它要求要足够高效,所以经常做各种优化,而优化做不好往往导致不稳定,这个是我自己得到的教训了。由于可以做数据包中转,获取到gatesvr列表后,找个连接数最少的连上去就可以,也变相实现连接负载分流(无论连在哪个gatesvr,都可以访问服务网络内所有服务《因为应用层IP无关,具体后面说》)
我所谓透明,说的是“服务物理分布”的透明,即应用层不关心服务具体在哪个IP,(甚至10分钟前可能还在某服务器,但是由于该服务器down掉,为了不中断整个服务链,很快在其他服务器上开了一个应急),也不关心是否已经连接到指定IP,一律按照“域名”请求即可
RPC这些都是框架层的东西,而且是自行定义的异步RPC,他在某些应用方面有无可比拟的优势,可能是你在开发中没有遇到而已,某些功能开发,利用这个,甚至可以做到一天开发,隔日上线的开发速度(服务独立进程,不干扰已有任何服务,就算挂掉也只是新功能暂停使用)
例如帐号验证,在我的代码里仅仅是
SCall::Call(this,"帐号中心","Login",CVar(2,"ss",用户名,密码),"LoginOk","LoginErr",15000);
//我框架内实现了一套Event机制,LoginOk是结果返回时,如果成功范围则调用到第一个参数的对象的“LoginOk”Event,LoginErr类同
这套框架商用已2年,其有利方面以及局限性可能我比LS理解的更为深刻,呵呵
你现在单独只有netgate,我相信对于开发者来说,面临如下选择,功能基本相同,已有成熟的网络模块可直接使用,还有个跨进程但是暂时不知稳定性的独立进程模块,而后者所能提供的额外功能非常少,你觉得大部分人会选择什么? |
|