首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

模块容易设计——用Jetty实现一个client adapter

2013-01-17 
模块简单设计——用Jetty实现一个client adapter首先看看下面的应用场景传统的服务器端为若干个客户端提供服

模块简单设计——用Jetty实现一个client adapter

首先看看下面的应用场景

模块容易设计——用Jetty实现一个client adapter

传统的服务器端为若干个客户端提供服务,一般需要开启多个服务器端进程。为了进一步提升服务器端的处理能力,可以如图所示将服务解耦为两部分(adapter与workers),它们之间通过消息队列传输数据,其中workers处理具体业务,adapter负责接入请求以及反馈结果,具体包含下面两个工作。

1,将所有客户端的请求发送到消息队列(进而传给后台处理)

2,后台处理完毕后将结果返回响应队列,client adapter获取到结果后返回给相应客户端。

我们选择用Jetty(8),redis以及php简单实现这个场景,主要用到jetty的continuation机制和redis的list数据结构

?

A,先配置一个服务器如下,同时开启一个守护线程阻塞监听response queue(用到json lib库以及jedis库)

C,实现后端worker.php(可以自定义worker进程数,进程数多能获取更好的并发)(用到predis库)

redis 127.0.0.1:6379> lrange request_queue 0 15 1) "{"request_sid":"igiwkwnb715aphw8uvtfa6rj","params":"3"}" 2) "{"request_sid":"wsrglxa3h6ef19ik5i0nbiiys","params":"2"}" 3) "{"request_sid":"tyiqoj6awj5t16ddpqusftwc8","params":"6"}" 4) "{"request_sid":"1052tgkiyy7c31bmxjtbom7ca","params":"5"}" 5) "{"request_sid":"17jo1xwnnkd3h1mhcqcfplrl5k","params":"8"}" 6) "{"request_sid":"1xk521sq6vmmf6enxauwzduj9","params":"4"}" 7) "{"request_sid":"1cxnir1slgjiq1o2n3xwznh0kk","params":"9"}" 8) "{"request_sid":"961vf8hao3stsv4vt1qif3ws","params":"7"}" 9) "{"request_sid":"35pfn5au6p8qdbri17p636si","params":"10"}"10) "{"request_sid":"1ca4wy8qsfr7av0hwk8xtlqhp","params":"1"}"redis 127.0.0.1:6379> lrange response_queue 0 15 1) "{"request_sid":"tyiqoj6awj5t16ddpqusftwc8","results":"6"}" 2) "{"request_sid":"igiwkwnb715aphw8uvtfa6rj","results":"3"}" 3) "{"request_sid":"wsrglxa3h6ef19ik5i0nbiiys","results":"2"}" 4) "{"request_sid":"35pfn5au6p8qdbri17p636si","results":"10"}" 5) "{"request_sid":"1052tgkiyy7c31bmxjtbom7ca","results":"5"}" 6) "{"request_sid":"1cxnir1slgjiq1o2n3xwznh0kk","results":"9"}" 7) "{"request_sid":"17jo1xwnnkd3h1mhcqcfplrl5k","results":"8"}" 8) "{"request_sid":"961vf8hao3stsv4vt1qif3ws","results":"7"}" 9) "{"request_sid":"1xk521sq6vmmf6enxauwzduj9","results":"4"}"10) "{"request_sid":"1ca4wy8qsfr7av0hwk8xtlqhp","results":"1"}"

热点排行