1
9hills 2014-04-04 23:38:35 +08:00 via iPad
你这个逻辑很简单。用高级语言很容易实现。
做个原型,然后性能测试比对。建议用Golang |
2
lidashuang 2014-04-04 23:42:12 +08:00
nginx 不是自带负载均衡吗?后端可以用riak
|
3
ETiV 2014-04-04 23:43:50 +08:00 via iPhone
请求分发的判定条件写在 http 头里,就不用从二进制里解一次了
|
4
aszxqw 2014-04-04 23:55:21 +08:00
要高性能的话,思路2其实还好,c/c++使用libevent应该还不错。libevent连http协议解析的东西也帮你做好了。
目测似乎nodejs非常满足你的需求吧。 |
5
raptor 2014-04-05 00:04:10 +08:00
用C/C++写个nginx扩展模块应该不错
|
6
luckyduck 2014-04-05 00:23:45 +08:00
这个性能更好吧~
http://haproxy.1wt.eu/ |
7
Comdex 2014-04-05 08:40:52 +08:00 via Android
golang应该可以吧
|
8
Actrace 2014-04-05 10:14:04 +08:00
nginx就可以了
|
9
pubby 2014-04-05 10:53:58 +08:00
不太清楚“解二进制”的计算量。
可以先用熟悉的技术写一个dispatch测试一下 clients -> dispatch -> web servers 如果一个dispatch不够,就部署多个 clients -> nginx -> dispatch(s) -> web servers |
11
guotie 2014-04-05 12:14:16 +08:00
golang, 几百行代码就搞定了
|
12
missdeer 2014-04-05 14:31:19 +08:00
用C++不如用golang
|
13
yakczh 2014-04-05 15:17:58 +08:00 1
第一次给客户端写个cookie,下次请求过来直接取出http头,做相应的转发,用nodejs就几行代码就搞定了 这种场景应该才是nodejs能派上用场的地方,可惜很多人都在用nodejs在那里绕圈圈地查数据库写数据库 只是为了证明"我能,我行"
|
14
julyclyde 2014-04-05 15:22:50 +08:00
这个设计是错的
往哪儿分发应该纯粹由URL决定,而不涉及body |
15
yueyoum OP 回ls各位,其实这是一个手游项目,通信用了http协议。 server会生成一个game session 给 client 。client 只要带着这个session 就行。一切对 client都是透明的,并且万一客户端不接受cookie 那怎么办?
所以放弃 cookie headers 的方式 nodejs 我看看 |
16
cnbuff410 2014-04-06 00:12:04 +08:00 via Android
你要想开发快,性能足够高,那就上Go吧
|
17
leofml 2014-04-06 08:01:50 +08:00 via iPad
这种需求我也做过类似的,用go或者nodejs或者nginx实现起来其实基本不难。
用nginx+lua其实就是使用ngx.capture做一个子请求就能搞定。 实际测试中可以看出还是nginx性能好,占内存低。 |
18
panlilu 2014-04-06 16:35:05 +08:00
nginx+lua 应该靠谱
|
19
hmaimi 2014-04-07 00:08:41 +08:00
我自己做的项目前段时间也有一个这样的需求,我用nginx_lua解决的
感觉效率很不错,编码成本也低 |
20
julyclyde 2014-04-07 11:01:20 +08:00
@yueyoum 在现代,想找个不支持cookie的浏览器还真难。实在不行还可以把sessionID放到querystring里。在body里加这个绝对是错误设计,将来会付出惨重代价
|
21
halfbloodrock 2014-04-07 22:44:47 +08:00
可能我理解不太准确, 但是从LZ说 "所有请求达到入口,入口解析发来的数据,根据消息本身或者解开的内容决定将这个请求转发给哪个后端 web server " 这个需求, 其实应该就是负载均衡的7层负载均衡.
|