+ -
当前位置:首页 → 问答吧 → 服务器之间的通信!

服务器之间的通信!

时间:2011-11-12

来源:互联网

工作流程这样:
客户端A 发送数据到 服务端B 但是为了做一些合法的检验,服务端B 又把数据转发到 服务端C,当 服务端C 检验数据完成了再数据返回给 服务端B ,再 服务端B 又把数据返回给 客户端A ,整个流程都使用TCP异步(非阻塞)通信。 


客户端A ---> 服务端B ---> 服务端C  

客户端A <--- 服务端B <--- 服务端C

服务端B 和 服务端C 的通信应该怎么做? 找了一大片都是C/S的通信,没有见到S/S通信的!

作者: xernet   发布时间: 2011-11-12

有什么区别啊,都是socket

作者: bdmh   发布时间: 2011-11-12

简单点的就是: 服务B接受客户A时,创建一个线程,并创建一个socket,连接到服务C,等接收客户A发来数据,再把客户A的数据发到服务C检测,再把服务C返回的数据发给客户A.

作者: zhuang_bx   发布时间: 2011-11-12

zhuang_bx
当初我也是这么想的,但是多客户端并发访问的时候就有问题了,假如有1000个并发访问那么就要在服务B创建1000个线程!!!服务B很容易就瘫痪。(服务B用的是IOCP模型)

作者: xernet   发布时间: 2011-11-12

那就用队列的方式,创建一个Socket与服务C连接,把客户端发来的数据加入到列表中,Socket每隔N秒或其它方式检查列表中是否有数据需要发到服务C

设置一个类型

客户端句柄
服务B中的句柄
客户端发来的数据
服务C返回的数据

socket直接把返回的数据发给客户端

作者: zhuang_bx   发布时间: 2011-11-12