通信是请求响应的方式,这对于接口服务器,消息分发服务器和应用服务器来说都是一直的,所以三者可以采用一致的模型来描述.
包括两个部分:client和server.这里描述一下二者的结构和网络通信.
client构造并发送请求,在异步系统里可以将构造和发送解偶,如图
RequestBuilder生成Request
将Request投入到Request队列(RequestQueue)中
独立线程RequestScanner扫描Request队列并调用RequestSender发送请求.
针对不同类型的请求可以构造不同的队列和不同的sender,队列中Request的优先级策略可以根据需要来定制.
RequestAccepter接收请求并放入Request队列
独立线程扫描队列并将调用RequestHandler进行处理
RequestHandler处理完毕后返回Response.
client与server之间的通信:
通信协议和技术有很多,如web service,EJB,jms,单这里采用基于java NIO的socket,因为其异步性和高并发量.
采用socket的两个基本标准是:
1.服务器上的线程数可控,切忌与请求数线性增长
2.将处理请求和接收请求分开,否则会降低吞吐率和并法量