xoxoj
V2EX  ›  问与答

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

  •  
  •   xoxoj · Nov 9, 2017 · 3008 views
    This topic created in 3132 days ago, the information mentioned may be changed or developed.

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

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

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

    如果是数据变动不频繁的,可以加缓存降低一下数据库压力。
    xoxoj
        5
    xoxoj  
    OP
       Nov 9, 2017
    @coderfox 问题是我们要请求的对象,他并不支持 websocket,只提供 https 接口!
    wellsc
        6
    wellsc  
       Nov 9, 2017
    Elixir
    zhs227
        7
    zhs227  
       Nov 9, 2017
    一秒钟一次,是你请求对方,只要对方不爆掉,好像你说的三种都可以做到,而且不会存在多大区别
    xoxoj
        8
    xoxoj  
    OP
       Nov 9, 2017
    @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  
       Nov 9, 2017
    变动不多上缓存,
    实时性能用的话用 socket,
    读写差距大的话做读写分离,然后读就可以上缓存了,
    钱多当然直接堆机器用负载均衡
    xoxoj
        10
    xoxoj  
    OP
       Nov 9, 2017
    @zhs227 对方爆不爆,那不是我该管的事儿,我就是要最快速度得到响应结果。
    xoxoj
        11
    xoxoj  
    OP
       Nov 9, 2017
    @all 注意: 不是别人请求我,是我去撸别人!!!!
    xoxoj
        12
    xoxoj  
    OP
       Nov 9, 2017
    @wellsc erlang 不会~~~
    hcymk2
        13
    hcymk2  
       Nov 9, 2017
    这不就是个爬虫问题了么?
    记得设计合理的超时时间。
    xoxoj
        14
    xoxoj  
    OP
       Nov 9, 2017
    我有个思路,但是不知道可不可行,在传统 c++领域的话,有个复用的概念。

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

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

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

    我在韩国、日本、香港、美国,都已经布好集群了,每个集群 10 台机器。先试试水
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   853 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 19:51 · PVG 03:51 · LAX 12:51 · JFK 15:51
    ♥ Do have faith in what you're doing.