kuroko Asked: 2024-05-26 21:29:33 +0800 CST2024-05-26 21:29:33 +0800 CST 2024-05-26 21:29:33 +0800 CST 每秒处理 100K 请求 772 我如何设计一个在高峰时间处理 100k req/s 的系统,每个请求执行 20kb 大小内的对象更新? 我使用nodejs作为非阻塞io的后端,使用redis作为缓存和mongodb作为数据库的后写模式,但它在峰值时仅处理10k req/s。 performance 1 个回答 Voted Best Answer dariush jokar 2024-05-27T02:56:52+08:002024-05-27T02:56:52+08:00 如果您的硬件资源足够,但您想优化您的应用程序,您可以考虑以下一些技术 集群模块:使用nodejs的集群模块来获得多核系统的一些优势,这将允许您创建应用程序的多个实例,每个实例都在一个CPU核心上运行 Worker:对于昂贵的操作任务(CPU 限制),考虑使用工作线程,这可以将任务分离到多个线程,从而使主事件循环负责其他异步任务 作业管理器:您可以使用像bull这样的作业管理器通过将它们添加到队列来在后台执行一些操作 压缩:您可以使用压缩技术来减少数据大小,使用良好的压缩算法,如Gzip或 Brotli
如果您的硬件资源足够,但您想优化您的应用程序,您可以考虑以下一些技术
集群模块:使用nodejs的集群模块来获得多核系统的一些优势,这将允许您创建应用程序的多个实例,每个实例都在一个CPU核心上运行
Worker:对于昂贵的操作任务(CPU 限制),考虑使用工作线程,这可以将任务分离到多个线程,从而使主事件循环负责其他异步任务
作业管理器:您可以使用像bull这样的作业管理器通过将它们添加到队列来在后台执行一些操作
压缩:您可以使用压缩技术来减少数据大小,使用良好的压缩算法,如Gzip或 Brotli