互联网架构问题
本帖最后由 kdkgod 于 2016-08-02 15:57 编辑先说明一下应用场景
1,手机APP客户端 2,中心服务器 3,节点客户端
手机APP客户端跟节点客户端都没有外网ip,没办法直连。中心服务器具有外网IP,说白了中心服务器就是一个中转服务器。
手机客户端与中心服务器通信用的是http协议,手机客户端是httpclient,中心服务器是httpserver,用libevent实现的。
中心服务器与节点客户端通信用的是websocket协议,中心服务器是websocket server,节点客户端是websocket client。
现在的问题是
手机客户端发送http请求给 http server,httpserver再找到对应的websocket,将消息发送给他。理论上是可行的,但是libevent没办法做到异步处理,当收到一个http请求的时候,将数据发送给websocket client后就得等,等的话就会严重影响其他的请求。有没有好的办法处理,处理有其他的解决方案。如果用java去实现这个中心服务器是不是更容易?
流程是这样的
手机APP客户段====http request===》中心服务器==== websocket ====》 节点服务器
手机APP客户端《====http response==== 中心服务器《==== websocket==== 节点服务器
最近做的这个项目和楼主需求类似 说下思路
中心服务器用提供restful接口, 每个请求有一个唯一标识id,手机app客户端定时轮询中心服务器获得相应数据。
中心服务器和节点服务器之间用websocket就行。
你们的server是用什么语言实现的?回复 3# evaspring
本帖最后由 yulihua49 于 2016-08-03 10:29 编辑
kdkgod 发表于 2016-08-02 15:44 static/image/common/back.gif
先说明一下应用场景
1,手机APP客户端 2,中心服务器 3,节点客户端
手机APP客户端跟节点客户端都没有外网 ...
为什么不用epoll?epoll可以实现完全的异步操作,而且支持协程,坛子里有很多这方面内容,你找找看。 回复 4# kdkgod
java 做互联网产品用c++很痛苦的 这不就相当于推送吗,有很多开源项目可用,比如nginx的push模块,python的tornado。
比较简单的是icomet: https://github.com/ideawu/icomet。
顺便一说,都说用http了,用c/c++和java或者python已经没区别了,这时c/c++性能要高的多,比如nginx,java骑马也追不上。 回复 5# yulihua49
epoll不是同步IO吗
收藏了~~ golang**好,退c++保平安。
页:
[1]
2