• 单服务器,多客户端,C/S结构,服务器与客户端用什么通信方式好?

    2015/12/23 bhfwg 4 评论  ,  ,  ,  , 

系统简介:整个系统里有一个服务器A,几千个终端设备B, 还有不定数量的监控客户端C;服务器A会收到很多终端设备B发送来的大量的socket数据包,数据包主要是一些状态信息,A处理这些包并做一些计算,接着存储这些数据到数据库;然后会有数量不定的客户端C需要做一些状态监控工作,比如动态显示B很多属性状态信息,信息显示需具备实时性,同时C还需提供告警、配置、管理等辅助功能,整个系统基本上就这些功能。

现在确定的是服务器A和终端设备B之间是需要通过socket通信的,B采用C语言开发,但是服务器A和客户端C用什么技术开发、两者之间用什么通信好呢?或者整个系统采取哪种架构好?有C,C#,JAVA开发经验。 我想到的最简单的就是A和C也用Socket进行通信,当某个终端设备B状态有变化时,服务器A把相关信息给所有客户端C发遍…但是感觉这种很笨不灵活…大家有什么好建议么?谢谢啦

3 收藏


直接登录
最新评论
  • chisheng   2015/12/23

    我猜这是几千个嵌入式设备,做个平台是吧,可以借鉴游戏服务器架构,最主要的是网络异步通讯吧

    • bhfwg   2015/12/23

      恩恩,是的,其实终端设备和服务器之间通信数量是处理的过来的,因为并不是同时在线的~我比较纠结的是服务器和监控客户端之间的访问方式,我现在已经实现的是每开一个客户端就和服务器之间建立一个tcp连接,两者之间的发送心跳帧,服务器维持一个客户端列表,当有设备的状态发生变化是服务器给每个客户端挨个发送一遍信息来实时更新客户端界面…我觉得这种方式比较笨而且耦合度高,想问问大家有没有更好的实现方式,不知道webservice, remoting什么的适不适合..

  • Anders 程序员 2015/12/23

    用什么架构看要求和预算。要求低没预算找个RMQ这样的中间件帮你处理通信,随便凑点业务、UI代码搞定;如果每秒N千笔时延N百个毫秒就要拆分A做成不同的服务/模块,并行啊优化啊都搞搞;如果每秒N万笔时延N个毫秒甚至毫微秒级别,那就准备钱招标/招人吧。

    • bhfwg   2015/12/23

      恩恩,是的,其实终端设备和服务器之间通信数量是处理的过来的,因为并不是同时在线的~我比较纠结的是服务器和监控客户端之间的访问方式,我现在已经实现的是每开一个客户端就和服务器之间建立一个tcp连接,两者之间的发送心跳帧,服务器维持一个客户端列表,当有设备的状态发生变化是服务器给每个客户端挨个发送一遍信息来实时更新客户端界面…我觉得这种方式比较笨而且耦合度高,想问问大家有没有更好的实现方式,不知道webservice, remoting什么的适不适合..