FishChat 分布式可伸缩 IM 服务器 FishChat

agolangf • 5732 次点击    
这是一个分享于 的项目,其中的信息可能已经有所发展或是发生改变。
FishChat(鱼传——鱼传尺素),是一款纯 golang 编写优秀的即时通讯软件(IM), 它集合了市面上已有产品的优点, 并具备 智能硬件网关管理(学习QQ物联思想, 构思中)。 FishChat Android 客户端见 [https://github.com/oikomi/FishChatAndroid](https://github.com/oikomi/FishChatAndroid) (紧张开发中) **系统架构** ![image](http://static.oschina.net/uploads/img/201505/06105317_sY7b.png) **关键服务器详解** **gateway** gateway server主要是接受client请求,进行通用的功能设置,目前这块只做了分配msg_server的功能,后面可根据需要进行扩展 在gateway server的配置文件中最重要的是配置msg_server列表 <pre class="brush:cpp ;toolbar: true; auto-links: false;">&#34;MsgServerList&#34;      : [         &#34;192.168.159.169:19000&#34;,         &#34;192.168.159.169:19001&#34;     ],</pre> ### **msg_server** msg_server是消息的主体,维护着客户端连接和keeplive,同时要注意router、manager和monitor都订阅了msg_server的channel <pre class="brush:cpp ;toolbar: true; auto-links: false;">    SYSCTRL_CLIENT_STATUS = &#34;/sysctrl/client-status&#34;     SYSCTRL_TOPIC_STATUS  = &#34;/sysctrl/topic-status&#34;     SYSCTRL_TOPIC_SYNC    = &#34;/sysctrl/topic-sync&#34;     SYSCTRL_SEND          = &#34;/sysctrl/send&#34;     SYSCTRL_MONITOR       = &#34;/sysctrl/monitor&#34;</pre> 这些channel保证了msg_server在事件触发时会广播通知后面的router、manager和monitor服务 ### **router** router顾名思义是做了msg_server之间的消息转发 ### **manager** manager主要是管理client信息存储、离线消息存储等等,通过它和redis联系 ### **monitor** monitor主要是收集监控各服务器状态信息,目前monitor是可选项,可按需要启动它 **部署** FishChatServer采用分布式可伸缩部署方式。如果没有多机条件,可以单机部署: 建议: 单机测试部署 * gateway一台 * msg_server两台 * router一台 * manager一台 * monitor一台 ./gateway ./msg_server -conf_file=msg_server.19001.json ./msg_server -conf_file=msg_server.19000.json ./router ./manager ./monitor 按上面的默认启动方式,查看系统的监听端口如下[![image](http://static.oschina.net/uploads/img/201505/06105319_nbUy.png)](https://github.com/oikomi/FishChatServer/blob/master/docs/pics/listen_port.png) 当然你可以修改各文件夹下面的json配置文件修改配置参数
授权协议:
Apache
开发语言:
Google Go 查看源码»
操作系统:
跨平台
5732 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传