留言与评论(共有 0 条评论) |
发布时间:2020-04-15 16:37:59
硬件层面需要根据数据量,业务复杂度一起综合评估的,建议先买两台云主机(4核8g内存)搭建集群环境就行。后继再根据实际需要扩展。
软件层面:
一、如果是写入操作的,应该:
1.1 使用消息队列来异步处理(如activemq等),避免消息堵塞
1.2 使用MongoDB的批量写入功能,比如每1000条数据才写入一次
二、MongoDB部署为集群模式,可以分散压力
三、如果是读取操作,可以考虑加入redis,将热点数据进行一级缓存
1秒1000的并发不是太高,只要简单优化一下就行了,现在一般的服务器应该都能够支撑。首先看看线程池分配,看看linux系统的io数限制。
当然不建议让数据库去抗频繁的高并发,应该在整体架构上面作优化,在数据库上层是不是可以考虑架构缓存服务器,还有针对具体业务做些优化。
首先思路不能完全固化在服务器硬件上提升,你可以从软件上,比如数据库缓存技术,然后到服务器层面上你可以使用负载均衡技术,总之一个原则把你的并发请求拦截到上层然后去想办法解决!
从题主的描述来看,这是一个以写入数据为主的应用,每秒1000个4k大小的数据,对于mongo db来说应该距瓶颈还有一定距离,不知道加硬件的依据是什么,服务器的cpu内存硬盘读写达到了什么程度。个人觉得还是程序写得有问题,建议仔细排查:
读多还是写多,索引建得如何?慢sql有哪些?单次访问数据量如何?
从正常角度讲,远远没有到数据库的性能瓶颈,具体问题要具体分析。
硬件看上去够用,程序优化比较重要
正常情况单机抗几千妥妥没问题,看你的情况问题可能出在两方面:web服务的io或DB。
web服务的性能关键因素是io和线程模型,如果采用epoll系列的nio的web框架(netty,mina等)性能相比bio会高很多。
其次就是DB,索引,os的页缓存等等。
一千块的程序员都能写一秒一千单的服务器
宽带肯定是要万兆的,硬件这块其实还好,现在可以用很廉价的pc来做分布式的架构,至于内存和硬盘的大小主要是根据数据量的大小和存储多少来决定的。希望我的回答能帮助到你!
1秒才1000并发?不算高呀,我都上万并发一秒,我是独立服务器
留言与评论(共有 0 条评论) |
全站搜索