一个简单的通讯服务框架(大家发表意见一起研究)JAVA版本

最近研究下java语言,根据一般使用的情况,写了个连接通讯服务的框架;

框架结构 C-Manager-S;

把所有通讯内容抽取成三个方法接口:GetData,SetData,带返还的Get;

所有数据都处理为byte[];客户端与服务端和管理器以及服务端有多重处理模式

管理信息:

1.不需要中心管理器;服务端启动时向客户端广播自己绑定的地址;接收数据;客户端使用时广播一次请求,向所有服务端获取服务信息;

2.管理中心:客户端向管理器请求服务信息;服务端向管理器注册地址;根据需要,可以把客户端传递的数据直接转发给服务,也可以将地址转发给客户端,具体哪种由客户端需要决定

服务端:

1.服务端必须是命名的;整个结构以服务名称为准;所有请求也以名称为准;

2.服务端具有相同名称时;根据服务配置;将服务分为主从模式和负载均衡模式;如果是主从模式,则管理器或者客户端只调用主服务,当判断主服务死掉才会启用从服务;多个从服务时按照产生的序列依次启用(也会按照时间,其实是参考了zookeeper中的选举算法);如果是负载均衡模式(没有设置服务是主从模式则是负载均衡),负载均衡采用Hash一致算法,抽取服务使用;

客户端:

客户端直接封装为一个代理接口,又内部转换,只需要调用接口方法,传入服务名称,返回一个代理接口,然后传送数据

信息缓存:

采用了多个本地数据库(关系型,非关系型,内存数据库,都是本地化的);

传输层:

传输层现在只提供了最基本的TCP,UDP;我把通讯层高度抽取,抽取为接口,通过一个通讯管理器来创建接口对象(反射),只需要传入一个名称(“TCP”,"UDP")来建立通讯,方便修改,可以很灵活的修改通讯方式,也可以替换熟悉的第三方通讯;大家可以自己开发自己的通讯层,只需要实现接口,给该通讯取一个名称即可

做了一个简单的管理器界面如图:


该框架中有一个序列化组件:magpack;另外就是本地化数据库

现在网络上的框架组件都比较复杂比较大,比如:zookeeper;其实我们很多都是中小企业或者是小数据运用,没有必要那么复杂庞大,也不一定好维护,我只是想弄一个易用,通用,很小,很快的东西,简化通讯处理,高度抽象;

另外就是所有网络组件都是选择处理快,简单的,尤其是免费开源;设计的时候考虑这些组件易更换,尽量不去复杂引用,尽可能抽象接口;

另外准备了一个加载更多的界面:


Java的界面当前不适合复杂开发,只是准备简单的显示

已经将代码提交到了github;

框架功能将逐步更新,可能完善以后也会庞大,基于设计目标,在使用中会尽量模块化,可以分离使用(比如只使用封装的数据库连接池,数据库操作,通讯层,代理转换这些);或通过配置,反射,接口分离代码;

现在主要是JAVA语言实现,其实所有语言都一样;

最后一点:很多人在部署时害怕中心节点,因为它挂了就一切完蛋。这里的服务端可以有多种模式;至于管理器,它更加类似DNS解析地址,DNS都挂了,大家都没有玩的了;不过可以讨论有没有其它方式,我考虑到用多个,内部替换(类似用zookeeper选举一个中心的中心管理服务,然后切换),有懂通讯或者地址解析的多多提意见;

下一步完善可能添加的技术UDP挖洞;



转载于:https://www.cnblogs.com/jinyu20180311/p/10312395.html

JAVA服务通讯框架-聊天功能演示程序 V0.1 alpha 2012 瞿正峰版权所有,保留所有权利 中国 杭州 一、概述 JAVA服务通讯框架是基于NIO开发的Socket通讯框架,实现了客户端和服务器,服务器与服务器之间的通讯功能,适合应用于大型聊天服务器,大型游戏服务器。 本演示程序实现了一个基本的命令行聊天功能,以演示基本的通过socket发送游戏指令或聊天消息的能力。 二、使用方法 1、注册 命令格式: reg 用户名 密码 例如: >reg lions 123456 2、登录 命令格式: login 用户名 密码 例如: >login lions 123456 3、列表 命令格式: list 例如: >list 4、发送 命令格式: send 对方用户名 消息 例如: >send user hello 5、退出 命令格式: logout 例如: >logout 三、安装 1、下载ChatDemo.zip 2、解压缩到目录中 3、运行sql脚本,建立数据库,默认数据库名为:account,数据表名为:account,用户名为:root 密码为:123456 4、启动服务器,执行bat文件,按以下顺序启动服务器:GlobalServer, RecordServer, SessionServer, GatewayServer, AccountServer. 必须按此顺序,不能搞错,否则全部关闭重启,演示程序默认IP为127.0.0.1,端口为2000~2007. 5、启动客户端,运行client.bat,可以运行多个客户端,出现提示行,就可以输入命令了。第一次执行命令要多等一会,之后执行就快了,这个原因做JAVA的都懂。 有问题可在博客留言,也可以加我QQ 191506998,有需要代码的,可与我联系,价格面议! chinalions 2012.3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值