高并发总结

高并发概念

高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。

高并发的相关指标

并发数

系统同时处理的请求数。
请求分为:查询类请求、事务类请求。

QPS

每秒能够处理的查询类请求次数。

TPS

每秒能够处理的事务类请求次数。

响应时间

系统对某个请求做出相应的时间。

高并发的开发语言或技术框架

  • Node.js、Go、Erlang、Lua、OpenResty、…
  • Netty、Quasar
  • Nginx、Haproxy、LVS、…
  • Varnish、Squid、CDN、…
  • RabbitMQ、Kafka、…
  • Redis、Memcache、Elasticsearch、Mongodb、…

语言层面,如果不是高并发的语言(如java),那么在提升并发层面能做的只有:

  • 优化数据结构(如集合)和代码性能
  • 线程池
  • 异步网络模型(NIO),如Netty框架
  • 优化JVM

如何提高并发能力

优化设计

  • 无状态
  • 幂等性
  • 事务补偿机制
  • 将 CPU密集型 任务与 IO密集型 任务分开

提高速度

  • 缓存
  • 异步、多线程
  • 性能优化
  • 提升硬件性能
    提升CPU、内存、硬盘、网卡等物理设备性能

提高并发能力

  • 优化操作系统内核
    如升级系统内核、内核调优
  • 读写分离
  • 请求合并
    将多个小请求合并成一个大请求
  • 池化技术
    如线程池、连接池、…

增加处理人手

基于代理、主从、负载均衡等进行横向扩容。

单机并发数

中间件\指标 最大连接数(默认值) 最大连接数 最大并发
Tomcat 100 200 1000
Tomcat8(NIO) 100 250 10000
MySQL 100 4000,一般设置为1024 -
Redis 10000 不限制 6万-10万
RabbitMQ 924 65536+ 6万
Kafka - - 17万
Nginx 1024 65535 5万
坚持原创技术分享,您的支持将鼓励我继续创作!