全球主机交流论坛

标题: 打算用PHP写一个日数据量200W的系统,是否现实可行? [打印本页]

作者: luoluo    时间: 2023-1-4 18:25
标题: 打算用PHP写一个日数据量200W的系统,是否现实可行?
每天只有3000~5000人的系统,但产生日数据量在200W左右,在下午有2个小时的时间是高峰期,有时一分钟插入数据量可达20W ,这两小时可占全天数据量的50%。综合来说,插入占80%,查询占20%

优先考虑用PHP的原因是,团队几个人都只熟悉PHP。换JAVA学习成本高。

PHP考虑的框架是Laravel ,ThinkPHP也考虑,但是担心漏洞多。

架构方面,如果仅用用Laravel + Redis消息列队上面业务的数据安全吗?或者打算用各家云服务的 SLB+RabbitMQ 解决高峰期数据插入的情况。查询缓存方面用Redis。

不考虑¥¥的情况下,安全性、稳定性要求高,请问这样的系统,用PHP架构是否现实可行?

或者哪位大JJ能在前期架构上,能给些建议的,麻烦PM我交流一下。有帮助会发红包。
作者: Salta    时间: 2023-1-4 18:27
日200W数据,也不是很大,确实可以用PHP实现的。
作者: luoluo    时间: 2023-1-4 18:43
Salta 发表于 2023-1-4 18:27
日200W数据,也不是很大,确实可以用PHP实现的。

但是有2个小时并发数据高。
作者: shwish    时间: 2023-1-4 18:46
只写一下核心的逻辑,自己mock下请求,做下压力测试就知道了,这种问题很难回答的
作者: Salta    时间: 2023-1-4 18:51
本帖最后由 Salta 于 2023-1-4 18:53 编辑
luoluo 发表于 2023-1-4 18:43
但是有2个小时并发数据高。


Redis单机写 每秒8W次, 读每秒11万次,你在担心什么?
PHP,就算撑不住你也可以上DNS轮训吧。

话又说回来,就算redis撑不住,那也可以上集群
作者: vihs    时间: 2023-1-4 19:05
担心是多余的,买阿里云,腾讯云的数据库集群,KV集群。  直接上,性能扛不住直接找云客服官方,比啥都强。
作者: 1121744186    时间: 2023-1-4 19:08
瓶颈在数据库,和php无关
作者: whiler    时间: 2023-1-4 19:09
本帖最后由 whiler 于 2023-1-4 19:10 编辑

写入 20万/分,基本达到 8 核 32G 内存独服跑 MySQL 8.0 的上限了,和 PHP 无关,上队列吧,削峰填谷,或者优化业务,减少不必要的写入
作者: holinhot    时间: 2023-1-4 19:26
光是插入数据那太简单了,直接写到redis然后你再慢慢往mysql里写
作者: 有容乃大    时间: 2023-1-4 19:33
标题: 灰产?
灰产?

三方 四方系统?

php自己写吧
作者: luoluo    时间: 2023-1-4 20:33
Salta 发表于 2023-1-4 18:51
Redis单机写 每秒8W次, 读每秒11万次,你在担心什么?
PHP,就算撑不住你也可以上DNS轮训吧。


不是担心redis撑不住,是担心如果宕机了,redis会丢数据呢
作者: luoluo    时间: 2023-1-4 20:35
vihs 发表于 2023-1-4 19:05
担心是多余的,买阿里云,腾讯云的数据库集群,KV集群。  直接上,性能扛不住直接找云客服官方,比啥都强。 ...

运维不熟悉的我一开始也这么想,想到一天能产生10g左右的数据,这个方案成本有点承受不住
作者: luoluo    时间: 2023-1-4 20:37
whiler 发表于 2023-1-4 19:09
写入 20万/分,基本达到 8 核 32G 内存独服跑 MySQL 8.0 的上限了,和 PHP 无关,上队列吧,削峰填谷,或者 ...

平均是20w一分钟,但是也不排除有1秒5w的数据插入的时候
作者: luoluo    时间: 2023-1-4 20:39
whiler 发表于 2023-1-4 19:09
写入 20万/分,基本达到 8 核 32G 内存独服跑 MySQL 8.0 的上限了,和 PHP 无关,上队列吧,削峰填谷,或者 ...

对呀,就是考虑列队,不知道laravel支持redis列队,不知道这个方案若是在宕机情况下,能不能保证数据安全。
作者: Salta    时间: 2023-1-4 20:40
luoluo 发表于 2023-1-4 20:33
不是担心redis撑不住,是担心如果宕机了,redis会丢数据呢

Redis AOF持久化了解一下?

作者: whiler    时间: 2023-1-4 20:51
本帖最后由 whiler 于 2023-1-4 20:53 编辑
luoluo 发表于 2023-1-4 20:39
对呀,就是考虑列队,不知道laravel支持redis列队,不知道这个方案若是在宕机情况下,能不能保证数据安全 ...


写多读少还要保证数据不丢,完美契合 Cassandra
可以看看它,性能不弱,水平扩展,磁盘存储,宕机也不担心丢数据,适合存储大规模数据
作者: flyqie    时间: 2023-1-4 20:55
laravel漏洞这块问题不大。

性能这边做好心理准备,laravel性能指标这块不能算是强项。
作者: vihs    时间: 2023-1-4 21:01
luoluo 发表于 2023-1-4 20:35
运维不熟悉的我一开始也这么想,想到一天能产生10g左右的数据,这个方案成本有点承受不住 ...

你的想法恰恰相反。
1、这么大数据量,更需要数据安全,公司又不是你的,不需要你考虑成本。你替公司省钱,出了事情你背锅,纯粹吃饱了撑的。
2、数据量很大又很重要,请一个DBA的工资保守计算每月1.5W 一年就是18W+ , 还不算硬件投入,买云数据库怎么算都划算。
作者: mfch666    时间: 2023-1-4 21:10
可以考虑异步的 nodejs
作者: theoneman    时间: 2023-1-4 21:23
几千人 如果业务没有交集的话,完全可以分库嘛? 分五个,一千人一个库。

作者: luoluo    时间: 2023-1-5 16:50
vihs 发表于 2023-1-4 21:01
你的想法恰恰相反。
1、这么大数据量,更需要数据安全,公司又不是你的,不需要你考虑成本。你替公司省 ...

我也是这样想的,一开始先用云服务。后面摸索清楚了再自建,那这样省出来的钱。。。
作者: 静香    时间: 2023-1-5 16:57
上springcloud数据存储用mysql 缓存用redis
插入量大的话在内存中做个队列缓存  然后批量save
作者: 小怪    时间: 2023-1-5 17:01
用java嘛
作者: zlwzlx    时间: 2023-1-5 17:28
laravel 的性能不是强行 需要做好心理准备,这种数据量 设计时就应该考虑 程序可分布式运行,性能不行就堆机器,上队列异步插入,不要用redis做队列 用更成熟的kafka这类的。mysql,redis,kafka 这些建议直接上云服务商的 集群。
能做到这些基本没啥大问题
作者: 拉斯    时间: 2023-1-5 17:30
算下来每秒不到一万,数据库没问题,不知道你这个日志是怎么产生的,如果不是访问一次接口产生一条日志用php问题就不大,
作者: hzjdhr    时间: 2023-1-5 17:32
luoluo 发表于 2023-1-4 20:39
对呀,就是考虑列队,不知道laravel支持redis列队,不知道这个方案若是在宕机情况下,能不能保证数据安全 ...

laravel 肯定是支持redis队列的, 自带就有 用着很方便
作者: Backkom    时间: 2023-1-5 17:35
redis集群然后持久化写入mysql呗
作者: kagurazakashira    时间: 2023-1-5 17:35
没遇到过这么高的场景
最高的是以前一个公司的1月1e条,设备每秒上传日志用的
然后老板钱多堆配置,512core 内存好像是1t,硬盘不确定是hdd还是ssd还是nvme组的阵列
跑的php5.2+mysql5.1
没有任何优化
写入很丝滑,只有查询慢
作者: 诡谲    时间: 2023-1-5 17:39
换webman laravel转过来没压力
作者: 奧巴马    时间: 2023-1-5 17:41
PHP做过每秒并发3万(写入肯定不止3万,单日志就3万了).
放内存里面跑,然后主从分,每月分一次表.
作者: bagheera    时间: 2023-1-5 17:42
这点数据算什么很多??
FB一秒几万贴 -- php
WB一秒数万新帖子 -- php

看你怎么规划,跟语言没啥关系,瓶颈不在这里.
另外,MySQL撑不撑得住, 还得看你数据是什么样子的,别看不起MySQL
作者: MukaichiMion    时间: 2023-1-5 18:51
关键是看数据是怎么来的,是通过HTTP接口来的还是怎么来的
如果是HTTP接口的话,直接用负载均衡就可以搞定
单机Redis都能随便抗万级的QPS,只是为了防止数据丢失,最好是往ES里面转移,数据量大了后,查询走ES会比Redis更好
作者: luoluo    时间: 2023-1-6 18:00
zlwzlx 发表于 2023-1-5 17:28
laravel 的性能不是强行 需要做好心理准备,这种数据量 设计时就应该考虑 程序可分布式运行,性能不行就堆 ...

上laravel是考虑到安全性,感觉tp的洞洞太多了,并发和业务不复杂,单用户一条post能产生几百几千条数据。但只有2000 3000个用户而已。
作者: luoluo    时间: 2023-1-6 18:02
MukaichiMion 发表于 2023-1-5 18:51
关键是看数据是怎么来的,是通过HTTP接口来的还是怎么来的
如果是HTTP接口的话,直接用负载均衡就可以搞定
...

是从http来的,就一条post,按需产生几百几千条数据。
作者: luoluo    时间: 2023-1-6 18:04
拉斯 发表于 2023-1-5 17:30
算下来每秒不到一万,数据库没问题,不知道你这个日志是怎么产生的,如果不是访问一次接口产生一条日志用ph ...

mysql数据库每秒2000插入就已经差不多了吧
作者: 拉斯    时间: 2023-1-6 18:27
luoluo 发表于 2023-1-6 18:04
mysql数据库每秒2000插入就已经差不多了吧

不考虑钱就上云数据库,这个只能自己本地压测,一般索引不多能顶住的。
作者: luoluo    时间: 2023-1-6 22:31
拉斯 发表于 2023-1-5 17:30
算下来每秒不到一万,数据库没问题,不知道你这个日志是怎么产生的,如果不是访问一次接口产生一条日志用ph ...

记录是1用户post一次,大概要插入几百到几千条数据不等。
作者: luoluo    时间: 2023-1-6 22:32
奧巴马 发表于 2023-1-5 17:41
PHP做过每秒并发3万(写入肯定不止3万,单日志就3万了).
放内存里面跑,然后主从分,每月分一次表. ...

求方案,能不能细说一下
作者: Sage    时间: 2023-1-6 22:41
MQ够了
作者: 伊丽莎白    时间: 2023-1-7 01:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: yangken    时间: 2023-1-7 09:47
5000ip能产生10g数据,人均20m,要打几百万字呢




欢迎光临 全球主机交流论坛 (https://91ai.net/) Powered by Discuz! X3.4