求助!!!集群服务器与客户端通讯模型

verylcg 2012-04-28 06:17:38
客户端为2种,web(短链接)与客户端(长链接),现在有2种不成熟思路。

1,集群网络共享:
集群前端采用负载均衡,所有服务器在内存中保持一致的数据结构,一台服务器收到信息把信息广播给所有集群中的服务器。定期验证链接(集群内通讯)是否正常,数据是否一致.其中一台服务器与客户端保持链接(长链接),当其中一台服务器出现问题,客户端自动重链。通过内存中同步的数据进行业务处理.

2,分布式
服务器分为2大类,即公共数据服务器与私有服务器,只维护一个公共资源在公共服务器,私有服务器对外开放端口(负载均衡),
通过私有服务器与公共服务器交换信息处理业务逻辑.(即业务逻辑主要放在私有服务器上,包括数据据的操作).

请问:
1,集群共享如果其中一台服务器压力过大(因为是长链接),是否影响整个系统的性能。
2,分布式的共享服务器压力回有多大(按1W链接算).
3,请问现在普遍采用的模型是什么样的.
4,有没有必要用多个accept处理短链接, 2.6内核据说没有惊群现象了。accept线程组(非阻塞+epoll)->read线程组->接收队列->业务处理模块->发送队列->write线程组,这么设计是否有问题.
...全文
113 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
verylcg 2012-04-29
  • 打赏
  • 举报
回复
感谢您的解答,不过有些地方还是有些疑惑。

如果所有逻辑处理都放在SM层,是否可以理解成也是一个集群,因为C2S传过来的数据是2大类型的web与客户端数据,这时候肯定有客户端与web交互,客户端与客户端交互,可以不考虑web之间交互,所有的逻辑需要sm层处理后返回给相应的链接,

请问:是否需要在C2S在维护一个链接信息呢,比如用户名等,那么不广播的话是否要在sm层维护这个信息呢,(返回给那个C2S上的链接)如果SM来维护的话,这个同步机制应该如何设计呢,

中间router路由是否只是起到类似LVS的功能呢。

web端采用Ajax 客户单用QT,第一步先实现基本的聊天交互,然后在扩充其他功能服务.
verylcg 2012-04-29
  • 打赏
  • 举报
回复
谢谢帮忙。
verylcg 2012-04-29
  • 打赏
  • 举报
回复
谢谢帮忙.
qq120848369 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

感谢您的解答,不过有些地方还是有些疑惑。

如果所有逻辑处理都放在SM层,是否可以理解成也是一个集群,因为C2S传过来的数据是2大类型的web与客户端数据,这时候肯定有客户端与web交互,客户端与客户端交互,可以不考虑web之间交互,所有的逻辑需要sm层处理后返回给相应的链接,

请问:是否需要在C2S在维护一个链接信息呢,比如用户名等,那么不广播的话是否要在sm层维护这个信息呢,(返回……
[/Quote]

看你的应用的话,最好去了解一下XMPP这个协议,以及一个实现叫做jabberd2。
qq120848369 2012-04-28
  • 打赏
  • 举报
回复
太不成熟了。。。 一团乱。。。

竟然还有广播。。。


1,不可能出现这个问题,对于长连接服务来说,可以DNS将域名映射到多个C2S服务器或者F5/LVS负载均衡,这里的概念就是无限的横向扩展C2S服务器,C2S服务器的唯一作用就是负责长连接用户接入以及数据解析修饰后向内网转发。

2,什么意思。。。 服务器的压力永远都不在内存,也不在于带宽,只会因为慢速的磁盘访问或者慢速的逻辑处理或者长距离的网络传输造成瓶颈。

3,看你疑惑的是长连接,基本模型是前端C2S接入(可横向扩展),中间router路由(可横向扩展),后端sm会话管理(可横向扩展),最后是数据库与缓存系统。 系统的组建故障均可以定时检测踢出下线, 因为组建离线而引起的会话不一致问题可以配合客户端逻辑做断线重连,会话信息需要持久化到数据库。

4,不知道你想干嘛。。。 网络I/O进程用epoll,计算/缓慢磁盘I/O进程用线程池,master-worker进程模型用lock-accept,根据服务类型(网络I/O进程用epoll,计算/缓慢磁盘I/O进程用线程池)选择合适的程序设计模型。

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧