搜索
bottom↓
回复: 17

想建立一套数据服务器,请各位高手指点一下需要的资源...

[复制链接]

出0入0汤圆

发表于 2015-11-6 19:09:33 | 显示全部楼层 |阅读模式
现在有一个项目,用于设备上传数据到数据库存储。

第一个阶段

设备2万到5万的数量规模,通过HTTP每次上传的数据量大约100Byte。一天上传一次。所有设备几乎都是集中在5分钟内传完。
上传的数据需要保留3个月。

我计划采用阿里云的服务,但不知道这样需要用什么样规模的数据库?什么规模的服务器?什么样的程序架构?

第二个阶段

设备上传频率调整为每分钟一次,其他不变。

能否考虑在上面的基础上扩展?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2015-11-6 19:10:39 | 显示全部楼层
搞惯了单片机。算一下数据库的条数,感觉很恐怖,无所适从了

出0入0汤圆

发表于 2015-11-6 19:15:56 | 显示全部楼层
直接用阿里的数据库,先随便买个入门的,等容量不够了再加。
在线升级容量的,多省事。

出0入0汤圆

 楼主| 发表于 2015-11-6 19:27:57 | 显示全部楼层
aozima 发表于 2015-11-6 19:15
直接用阿里的数据库,先随便买个入门的,等容量不够了再加。
在线升级容量的,多省事。 ...

主要考虑几个方面的问题

1、数据库的选型,MySQL不知道搞不搞得定这个

算起来,三个月60万~150万条数据了。不过数据查询倒是很简单,一天查不了几次。

但数据量倒没多大,第一阶段总量才60MB~150MB

2、系统代码的架构,第一阶段需要并发处理。5分钟内会有5万个设备上传,这样是否需要做什么处理?

3、服务器带宽和并发数需要多少?

出350入477汤圆

发表于 2015-11-6 20:23:28 | 显示全部楼层
FireHe 发表于 2015-11-6 19:27
主要考虑几个方面的问题

1、数据库的选型,MySQL不知道搞不搞得定这个

默认的mySql好像不支持直接用http上传数据,你还得弄几个VPS来收HTTP请求,然后VPS自己负责写入数据库。
这样,VPS顺便可以缓冲瞬间突发的数据,顺便也降低了对数据库的并发要求。

出0入0汤圆

 楼主| 发表于 2015-11-6 22:50:03 | 显示全部楼层
redroof 发表于 2015-11-6 20:23
默认的mySql好像不支持直接用http上传数据,你还得弄几个VPS来收HTTP请求,然后VPS自己负责写入数据库。
...

肯定是需要服务器软件啦

但这个数据上传时间很集中,算起来这个并发数量很大啊

5分钟5W个连接,对于服务器也是不小的挑战。对于数据库也是个难题。

出0入0汤圆

发表于 2015-11-6 23:30:57 来自手机 | 显示全部楼层
golang  or   nodejs

出0入0汤圆

发表于 2015-11-7 01:29:13 来自手机 | 显示全部楼层
阿里云,按量购买,你的流量很小,每年服务器租用只要450。数据量太小,直接用SQLite

出0入0汤圆

发表于 2015-11-7 04:20:33 | 显示全部楼层
这个需求其实和数据量关系不大,因为每个数据才100Byte

5分钟5W的连接,还算OK的,算下来每秒也就166个请求,不管大量。

但是不建议程序直接往数据库里面写,因为虽然算下来每秒只有166个请求,但是很可能集中在前几秒并发访问。

建议:
1、程序获得数据后,往消息队列中放,然后有后端程序消费队列写入数据库。所以需要ECS、RDS和Message Service;
2、因为设备和服务器之间只有一次数据交换,所以服务器尽量是接收完请求后立即主动关闭连接,释放资源。需要调整linux几个tcp参数的;
3、设备端最好有重试机制,第一次失败后,隔几秒重新上传;

出90入4汤圆

发表于 2015-11-7 07:03:59 来自手机 | 显示全部楼层
服务器用什么语言php?

出350入477汤圆

发表于 2015-11-7 08:29:57 来自手机 | 显示全部楼层
FireHe 发表于 2015-11-6 22:50
肯定是需要服务器软件啦

但这个数据上传时间很集中,算起来这个并发数量很大啊

平均一秒不到两百个连接,http的数据量并不大。当然,对数据库的写入事务来说有点多,很多数据库一秒钟写不了200个事务。最好用消息队列来缓冲一下,以便可以批量写入。
不放心了你先拿web测试工具试一下

出0入0汤圆

 楼主| 发表于 2015-11-7 15:39:37 | 显示全部楼层
redroof 发表于 2015-11-7 08:29
平均一秒不到两百个连接,http的数据量并不大。当然,对数据库的写入事务来说有点多,很多数据库一秒钟写 ...

主要是不太可能平均,峰值可能会出现每秒上千甚至上万。数据量不大,但是连接数的量挺大的,瞬间PV上万哦。

出0入0汤圆

发表于 2015-11-7 18:18:50 | 显示全部楼层
用公有云服务的好处就是这些都不用自己操心
楼主看一下阿里云的ACE

出350入477汤圆

发表于 2015-11-7 18:42:23 来自手机 | 显示全部楼层
FireHe 发表于 2015-11-7 15:39
主要是不太可能平均,峰值可能会出现每秒上千甚至上万。数据量不大,但是连接数的量挺大的,瞬间PV上万哦 ...

连接数多少都归ecs管,这种并发连接是无状态的,你用它自带的负载均衡就行了,多个ecs一起上。
ecs收下数据去写数据库,这个时候需要一个消息队列来缓冲一下,以便让数据库可以批量写。一大群ecs并发去写数据库的效率很低的。交给一个单独的ecs去批量写会快的多

出350入477汤圆

发表于 2015-11-7 19:25:48 来自手机 | 显示全部楼层
FireHe 发表于 2015-11-7 15:39
主要是不太可能平均,峰值可能会出现每秒上千甚至上万。数据量不大,但是连接数的量挺大的,瞬间PV上万哦 ...

另外,你是小米什么的专门做秒杀吗?否则为什么不想办法来平均一下负载?
就算所有设备都规定为每天几点整上传数据,实际你稍微加个随机数,在正负三分钟内微调一下,几万个设备就均匀分布在六分钟内了。每秒钟几百个数据量很小的http请求,单个ecs都能撑下来。

出0入0汤圆

 楼主| 发表于 2015-11-7 20:52:29 | 显示全部楼层
redroof 发表于 2015-11-7 19:25
另外,你是小米什么的专门做秒杀吗?否则为什么不想办法来平均一下负载?
就算所有设备都规定为每天几点 ...

感谢 redroof 的热心指导

这个平均负载是有做的。但是只能平均负载的计划上传时间,由于网络延时、操作延时等因素,实际的集中情况会比理论上高。我只是考虑得比较保守,相对数据夸张了

从目前的了解来看,楼上诸位推荐的方案都是非常靠谱的方案。阿里云这方面确实做得很到位呀。几乎都不用自己想这些事情了。我原来还以为要自己建立服务器自己做,几乎要打退堂鼓了。

出350入477汤圆

发表于 2015-11-7 22:24:46 来自手机 | 显示全部楼层
FireHe 发表于 2015-11-7 20:52
感谢 redroof 的热心指导

这个平均负载是有做的。但是只能平均负载的计划上传时间,由于网络延时、操作 ...

放心吧,有几万个客户端了,大家的网络延时会抵消掉的。有人延时大,也有延时小的。
一个低配的ecs,对付每秒几百个请求很容易。请求再多可以上负载均衡。注意:单机一旦超过5兆的带宽,价格就明显上涨,就是让你尽量用大量的低配机器,而不是少量高配的。
批量写数据库,一秒钟写入几万条很轻松的。完全够你用。

出0入0汤圆

 楼主| 发表于 2015-11-8 11:54:29 | 显示全部楼层
redroof 发表于 2015-11-7 22:24
放心吧,有几万个客户端了,大家的网络延时会抵消掉的。有人延时大,也有延时小的。
一个低配的ecs,对付 ...

谢谢redroof

我再去深入了解一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 07:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表