V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xoxoj
V2EX  ›  问与答

密集型(https)api 请求的技术栈?

  •  
  •   xoxoj · 2017-11-09 16:07:46 +08:00 · 2101 次点击
    这是一个创建于 2569 天前的主题,其中的信息可能已经有所发展或是发生改变。

    举个例子,如果业务需求是对一个( https)api 接口,进行密集型请求,例如每秒请求一次,该用什么技术栈比较好?( Twisted? Nodejs? Go?)

    21 条回复    2017-11-09 23:10:15 +08:00
    kslr
        1
    kslr  
       2017-11-09 16:09:56 +08:00
    每秒一次一天也只有 86400 次.....随便都好啦,瓶颈还是在其他地方。
    xoxoj
        2
    xoxoj  
    OP
       2017-11-09 16:11:24 +08:00
    @kslr 我不是个随便的人儿.....
    hgc81538
        3
    hgc81538  
       2017-11-09 16:13:20 +08:00
    @kslr 應該是每用戶每秒请求一次, 如果多用戶就 GG
    coderfox
        4
    coderfox  
       2017-11-09 16:13:28 +08:00 via Android
    选哪个都无所谓的。Node 和 Go 没多大差距,Twisted 没写过。绝大多数代码都不会因为运行时影响性能,而且你这三个选型还都有 GC,差距不大。

    不过既然这样设计,是轮询吗?轮询的话可以改成 WebSocket。

    如果是数据变动不频繁的,可以加缓存降低一下数据库压力。
    xoxoj
        5
    xoxoj  
    OP
       2017-11-09 16:14:46 +08:00
    @coderfox 问题是我们要请求的对象,他并不支持 websocket,只提供 https 接口!
    wellsc
        6
    wellsc  
       2017-11-09 16:15:15 +08:00
    Elixir
    zhs227
        7
    zhs227  
       2017-11-09 16:17:19 +08:00
    一秒钟一次,是你请求对方,只要对方不爆掉,好像你说的三种都可以做到,而且不会存在多大区别
    xoxoj
        8
    xoxoj  
    OP
       2017-11-09 16:18:05 +08:00
    @coderfox 数据库的话,这个没问题,我们用了 kafka。我问这个问题是初衷是:

    1、更快的能得到 https 的响应。(相对而言)
    2、能请求的地址更多,例如:
    api.xxx.com/public/timeline.json
    api.xxx.com/public/friends.json
    api.xxx.com/public/news.json
    ....................
    .............
    ......
    eastpiger
        9
    eastpiger  
       2017-11-09 16:18:55 +08:00
    变动不多上缓存,
    实时性能用的话用 socket,
    读写差距大的话做读写分离,然后读就可以上缓存了,
    钱多当然直接堆机器用负载均衡
    xoxoj
        10
    xoxoj  
    OP
       2017-11-09 16:19:15 +08:00
    @zhs227 对方爆不爆,那不是我该管的事儿,我就是要最快速度得到响应结果。
    xoxoj
        11
    xoxoj  
    OP
       2017-11-09 16:20:09 +08:00
    @all 注意: 不是别人请求我,是我去撸别人!!!!
    xoxoj
        12
    xoxoj  
    OP
       2017-11-09 16:20:42 +08:00
    @wellsc erlang 不会~~~
    hcymk2
        13
    hcymk2  
       2017-11-09 16:23:01 +08:00
    这不就是个爬虫问题了么?
    记得设计合理的超时时间。
    xoxoj
        14
    xoxoj  
    OP
       2017-11-09 16:23:04 +08:00
    我有个思路,但是不知道可不可行,在传统 c++领域的话,有个复用的概念。

    所以我想 https 请求也是基于 tcp 的啊,那么既然是 tcp,是不是可以复用请求链接呢?

    那这样的话,就不需要每次请求都去握几次手了。。。

    然后这样的情况下,会不会快很多?!
    xoxoj
        15
    xoxoj  
    OP
       2017-11-09 16:23:45 +08:00
    @hcymk2 不完全是,但也接近吧。
    momocraft
        16
    momocraft  
       2017-11-09 16:28:44 +08:00
    一般就是有复用的,tcp 和 tls session 都有
    gamexg
        17
    gamexg  
       2017-11-09 16:54:39 +08:00 via Android
    @xoxoj 靠谱的 http 库都带 tcp 连接复用。
    fuxkcsdn
        18
    fuxkcsdn  
       2017-11-09 21:17:30 +08:00 via iPhone
    撸别人的话,你应该考虑的是 ip 代理池,除非对方允许你撸(即使允许你撸,应该也会做流量限制)
    ryd994
        19
    ryd994  
       2017-11-09 22:36:25 +08:00 via Android
    你为什么不和对方商量好呢?
    xoxoj
        20
    xoxoj  
    OP
       2017-11-09 23:09:01 +08:00
    @ryd994 因为这个“对方”,太多了,没法一一跟他们去谈啊。
    xoxoj
        21
    xoxoj  
    OP
       2017-11-09 23:10:15 +08:00
    @fuxkcsdn

    我在韩国、日本、香港、美国,都已经布好集群了,每个集群 10 台机器。先试试水
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2467 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:00 · PVG 00:00 · LAX 08:00 · JFK 11:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.