sun1993
2023-06-21 17:18:10 +08:00
基础一点的服务有 5k 左右(比如判断是否付费),判断用户是否登录态的服务能达到几十万;
但是单纯比较并发量高低意义不太大,如何将单机 CPU 和内存发挥到极致才是需要考虑的,比如降低锁粒度、无锁设计、NIO/AIO 等都是在降低阻塞、让 CPU 物尽其用;调整部分池组件的参数,合理利用 CPU ,防止任务堆积导致内存先爆掉(后果就是 CPU 会大量浪费在 GC 上);
这些处理完就压测,榨干 CPU 和内存,压出瓶颈,并分析瓶颈可以通过什么方式解决(横向扩容?调参?),此时的 qps 就是单机上限,记下这个上限,做好限流,剩下的就交给横向扩容吧(虽然这样说很简单,但实际情况往往更复杂,你还要考虑上下游的上限以及容灾能力)。
其实现在大部分的组件、中间件已经帮我们做了无锁设计,大部分需要 IO 通信的底层也都是 NIO 了,我们只要不瞎搞,正常写业务代码,合理设置参数,都不会有啥性能问题,剩下的基本上就是压测,做好限流熔断容灾,扩容堆机器...