多个站点向一个站点发送数据 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
magine
V2EX    Django

多个站点向一个站点发送数据

  •  1
     
  •   magine
    Ma233 2014-08-18 21:03:44 +08:00 3554 次点击
    这是一个创建于 4145 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在写一个工程,基本功能是老师发布试卷到网关上运行的站点,学生用app获取网关上的试卷,答题后把答案发送到网关,网关压缩数据分包(暂时计划使用json)发送给总服务器,总服务器会做剩余处理。
    预计一个网关为100间教室提供服务,每间教室60个学生,每天提交3份答案,每份答案大小100个字符。(总计)
    主要有两点疑问:
    如何防止访问超时。(楼主之前写过一个站点可以用xls文件更新数据库,但是当xls超过500行时由于数据量过大就会等待响应超时,这次发送这种大批量数据,也是相当担心超时问题)
    除了json/xml还有哪些可以替代的数据交换方案,如果用json有没有什么分包方案?
    第 1 条附言    2014-08-19 16:14:17 +08:00
    目前测试是先用一个网关,如果学校里接受了那就是好几个网关了,也就是多个多个站点向一个站点发送数据。
    答案会被暂存于网关上,如果不登陆站点查询,数据就会在凌晨后轮流分包发送,如果查询就直接去网关拉取对应数据。
    开发使用Django+Mysql(总)/SQLite(网关),测试时有厂家送来的网关,“总服务器”会在xenserver上临时搭建虚拟机。
    6 条回复    2014-08-19 16:37:07 +08:00
    shiny
        1
    shiny  
    PRO
       2014-08-18 21:06:47 +08:00   1
    这个问题理解起来很费劲,好像使用异步队列能解决。
    akira
        2
    akira  
       2014-08-18 23:20:35 +08:00   1
    最坏的情况下,也就是6000个并发,每个链接提交100个字符, 等于600kb的数据。这个项目的难点根本不在数据入库的这里,而是在前面的gateway。

    如果是我设计的话,会设计成多个网关而不是一个,收到答案直接存本地文件或者干脆就直接丢内存,后面再来做处理提交到后端处理服务器。

    至于数据交换格式,那根本无伤大雅,随便你喜欢。
    Actrace
        3
    Actrace  
       2014-08-19 00:33:58 +08:00   1
    问题的根源是服务端性能.
    从架构上考虑,如果网关没有什么负载,那么瓶颈就在于"总服务器".
    但是实际情况可能更加复杂.你选择的处理语言,处理方式,数据库类型,甚至优化有没有做好,在相同的硬件上会体现出完全不同的负载能力.

    理论上数据库对批量查询会做出很好的处理.我感觉批量提交应该不是卡的根源~
    难道你用的是windows服务器?
    jsjscool
        4
    jsjscool  
       2014-08-19 14:08:37 +08:00   1
    500行超时……应该是服务端处理的问题。平时用PHPExcel处理文件上万行都很轻松。用户上传数据还可以选择csv格式。不过建议你用json。另外6000个算比较大的并发,可以考虑负载均衡。或者协调同学们上传作业的时间,避开高峰。
    magine
        5
    magine  
    OP
       2014-08-19 16:24:44 +08:00
    @shiny
    @akira
    @Actrace
    稍微追加了一下内容。
    其实是想问一下json分包是手动写分包方案,还是说Django有分包的模块。
    magine
        6
    magine  
    OP
       2014-08-19 16:37:07 +08:00
    @jsjscool

    第一次写站点,可能真有写得不好的方,所以稍微说一下我的做法,求斧正:
    先上传xls文件存入/tmp
    按行读取数据(每行14列),存入字典。
    对于每一次行读入:首先,查看‘类型’是否已存在,否则创建新‘类型’;然后,新建‘设备’,外键指向新建或已存在的‘类型’;其间会记录新建的‘类型’和‘设备’。
    读到xls行尾结束返回http。

    另外给一下代码链接(太长了放帖子里影响观看),不过是Django,嫌麻烦不看也可以啦~
    http://paste.ubuntu.com/8086908/
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3527 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 10:25 PVG 18:25 LAX 02:25 JFK 05:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86