举个例子,如果业务需求是对一个( https)api 接口,进行密集型请求,例如每秒请求一次,该用什么技术栈比较好?( Twisted? Nodejs? Go?)
1
kslr 2017-11-09 16:09:56 +08:00
每秒一次一天也只有 86400 次.....随便都好啦,瓶颈还是在其他地方。
|
4
coderfox 2017-11-09 16:13:28 +08:00 via Android
选哪个都无所谓的。Node 和 Go 没多大差距,Twisted 没写过。绝大多数代码都不会因为运行时影响性能,而且你这三个选型还都有 GC,差距不大。
不过既然这样设计,是轮询吗?轮询的话可以改成 WebSocket。 如果是数据变动不频繁的,可以加缓存降低一下数据库压力。 |
6
wellsc 2017-11-09 16:15:15 +08:00
Elixir
|
7
zhs227 2017-11-09 16:17:19 +08:00
一秒钟一次,是你请求对方,只要对方不爆掉,好像你说的三种都可以做到,而且不会存在多大区别
|
8
xoxoj OP @coderfox 数据库的话,这个没问题,我们用了 kafka。我问这个问题是初衷是:
1、更快的能得到 https 的响应。(相对而言) 2、能请求的地址更多,例如: api.xxx.com/public/timeline.json api.xxx.com/public/friends.json api.xxx.com/public/news.json .................... ............. ...... |
9
eastpiger 2017-11-09 16:18:55 +08:00
变动不多上缓存,
实时性能用的话用 socket, 读写差距大的话做读写分离,然后读就可以上缓存了, 钱多当然直接堆机器用负载均衡 |
13
hcymk2 2017-11-09 16:23:01 +08:00
这不就是个爬虫问题了么?
记得设计合理的超时时间。 |
14
xoxoj OP 我有个思路,但是不知道可不可行,在传统 c++领域的话,有个复用的概念。
所以我想 https 请求也是基于 tcp 的啊,那么既然是 tcp,是不是可以复用请求链接呢? 那这样的话,就不需要每次请求都去握几次手了。。。 然后这样的情况下,会不会快很多?! |
16
momocraft 2017-11-09 16:28:44 +08:00
一般就是有复用的,tcp 和 tls session 都有
|
18
fuxkcsdn 2017-11-09 21:17:30 +08:00 via iPhone
撸别人的话,你应该考虑的是 ip 代理池,除非对方允许你撸(即使允许你撸,应该也会做流量限制)
|
19
ryd994 2017-11-09 22:36:25 +08:00 via Android
你为什么不和对方商量好呢?
|