libyahoo2使用说明(二)MSGProxy设计

来源:互联网 发布:郭艾伦数据 编辑:程序博客网 时间:2024/05/14 13:17
MSGProxy程序的目的是作为即时消息网关。客户端采用Flash SWF程序。 为啥要开发这个程序咧?主要的原因就是因为Flash SWF不能直接访问如MSN, 雅虎通的服务器(Flash SWF 的Socket连接需要安全认证,即消息服务器必须处理请求)。

当前先实现和雅虎通的通信。后面会逐步增加对MSN, Jabber(XMPP协议)等的支持。

1. MSGProxy设计图
 libyahoo2使用说明(二)MSGProxy设计

2. MSGProxy程序设计
a) 采用多线程设计,基于Linux2.6的NPTL线程库。线程分配策略为:
accept-read thread:监听TCP端口,并建立客户端连接,获取客户端发送报文(收到报文后,提交到该Session的工作队列,由独立线程来处理)。
worker thread:工作线程,每个客户端连接分配一个thread。工作线程处理报文,并与其他IM服务器通信和信息交换。最好的报文输出也是本线程的业务范围。

考虑性能因素,单MSGProxy进程最大服务1000客户端接入。系统部署时,采用多MSGProxy进程部署,进程间不需要通信。

b)采用基于Linux2.6的epoll库。

具体见下图:
 libyahoo2使用说明(二)MSGProxy设计