新项目,新架构

来源:互联网 发布:淘宝客建站程序 编辑:程序博客网 时间:2024/06/11 09:50

新项目需要一个长连接架构的实现,而长连接对于性能的要求决定了用c或者c++来写比较靠谱,但是公司的技术人员组成决定了不可能用c或者c++来写业务逻辑,而且这个也不现实,会使得开发周期和维护成本很高。于是决定采用boost/asio + fastcgi + php来实现,也即前端有一个保持长连接的服务器,当前端将请求发上来之后,长连接服务器通过fastcgi协议将请求发给php,由php处理完成后再返回给长连接服务器,由长连接服务器返回给用户。

 

有人可能会说,这跟web服务器有啥区别?区别有这么几个,一个是web服务器是基于http协议的,即使采用keep-alive,在使用上也有很多不便;二是,http协议是无状态的。用上面的架构显然协议不一定是http的,可以任意自己想要的协议,我们采用的是AMF0。那么第二个问题,如何解决无状态,通常web服务器是通过session,这个显然有性能问题,而且session是没有保证的。于是我们反过来,长连接服务器同时作为session服务器,在把请求发给php时,同时将存储在长连接服务器的session也发给php,php对session的任何更改也在响应中回传给服务器,由服务器保存,下一次调用时再传回去。这样一来,从php服务器端看到的是一个有状态的请求序列。

 

今天终于把代码写完了,大概测试了一下,响应速度还是可以接受的。接下来主要是就是写php端的业务逻辑了,这个纯粹就是堆代码的体力活了。