Clarence Java DocClarence Java Doc
开发总结
Java
数据库
缓存
JVM
Spring
微服务
消息队列
高并发
分布式
高可用
设计模式
场景题
Netty
云原生
算法
系统架构
开发协议
IOT
人工智能
开发总结
Java
数据库
缓存
JVM
Spring
微服务
消息队列
高并发
分布式
高可用
设计模式
场景题
Netty
云原生
算法
系统架构
开发协议
IOT
人工智能
  • Java 并发基础
  • ThreadPool
  • 高并发架构
  • 高并发指标
  • 压力测试方案
  • 性能监控工具

高并发指标

一、高并发常见指标:

1、 QPS(Queries Per Second)

  • QPS 是衡量系统处理请求能力的一个重要指标,表示系统每秒钟能够处理多少个请求。
  • 在高并发系统中,QPS 高低直接决定了系统的吞吐量和响应能力。

2、 TPS(Transactions Per Second)

  • TPS 是表示每秒处理的事务数量,通常用于数据库或消息队列等需要进行事务处理的场景。
  • 与 QPS 的区别在于,TPS 是针对带有业务逻辑的事务,而 QPS 更侧重于请求的数量。

3、 RT(Response Time)

  • RT 用来衡量系统对一个请求的响应速度,即从客户端发起请求到接收到响应的时间。
  • 通常以毫秒(ms)为单位,RT 过高意味着系统存在性能瓶颈或资源不足。

4、 并发数(Concurrency)

  • 并发数是指在同一时间内,系统能够处理的并发请求数量。它是衡量系统并发能力的一个重要维度。
  • 高并发的系统需要通过负载均衡、分布式架构等方式来扩展并发数。

5、 吞吐量(Throughput)

  • 吞吐量是指单位时间内系统可以处理的请求或数据的数量,通常与 QPS、TPS、并发数和带宽等指标结合使用。
  • 高吞吐量通常表明系统可以在较短时间内处理大量数据。

二、常用的组件 QPS

1、 Tomcat 与 Undertow

  • Tomcat:作为常用的 Java Web 容器,Tomcat 的 QPS 通常受限于服务器硬件、线程池配置、JVM 设置等因素。在高并发环境中,Tomcat 的 QPS 一般可以达到几千到数万(具体根据配置而定)。
  • Undertow:相比 Tomcat,Undertow 是一个更轻量级的 Web 服务器,能够提供更高的并发性能,特别是在 HTTP2 和异步处理方面表现更好。在相同硬件配置下,Undertow 的 QPS 通常能比 Tomcat 更高,适合用于微服务架构和高并发场景。

2、 MySQL

  • MySQL 的 QPS 与数据表设计、索引优化、查询语句优化、硬件配置和并发连接数等因素有关。在高并发场景中,合理的缓存和负载均衡策略可以显著提高 QPS。

    • 普通查询:在高效索引和优化查询的情况下,MySQL 每秒可以处理数千到数万条简单查询。
    • 事务性操作:涉及事务和较复杂查询时,QPS 会降低,可能在数百到几千条之间。

3、 Redis

  • Redis 是一个高性能的内存数据库,主要用于缓存和会话存储。由于其基于内存存储,Redis 的 QPS 可以非常高,通常在数十万甚至百万级别。

    • 单线程模型:Redis 是单线程的,但其事件驱动模型和高效的 I/O 操作使得它能够处理大量请求。
    • 高并发下的吞吐量:Redis 的吞吐量通常高于 MySQL,特别是在数据量较小且操作简单时(如缓存查询、计数器等)。
    • Redis Cluster:通过分片扩展,单集群的 QPS 可线性提升,支持百万级别并发。

4、 消息队列(MQ)

  • 消息队列(如 Kafka、RabbitMQ、RocketMQ)在高并发系统中用于解耦各个模块,提升系统可扩展性。它的 QPS 取决于队列的实现、消息大小、网络带宽等因素。

    • Kafka:通常可以支持数百万的消息每秒,特别适合处理大规模的日志数据和实时流处理任务。Kafka 利用分区机制和批量写入,达到极高吞吐量。
    • RabbitMQ:虽然支持高并发,但由于其较为复杂的路由机制,通常 QPS 会稍低于 Kafka,适合需要较高消息可靠性的场景。
    • RocketMQ:基于分布式架构,能够承载高吞吐量,支持百万级别的 QPS,且支持事务消息。
    • ActiveMQ:作为老牌 MQ,QPS 一般较 Kafka 和 RocketMQ 低,适合中小规模系统。

5、 Elasticsearch

  • Elasticsearch 是一个分布式搜索引擎,广泛用于日志、监控和全文搜索场景。

    • 在合理硬件和索引设计下,Elasticsearch 可以达到每秒数万到数十万的查询请求。
    • 写入吞吐量视索引结构和副本数量而定,一般在几千到几万条每秒。
    • 通过分片和副本机制,支持横向扩展,提升整体 QPS。

6、 Nginx

  • 作为高性能的反向代理和负载均衡器,Nginx 可轻松支持每秒数十万甚至百万级的 HTTP 请求。
  • 在静态资源分发、负载均衡和反向代理中表现优异,通常是高并发系统的前端入口。
  • 通过事件驱动和异步处理,Nginx 的性能远超传统多线程服务器。

7、 MongoDB

  • MongoDB 是文档型 NoSQL 数据库,适合海量非结构化数据存储。
  • 单节点 QPS 可达数千至数万(取决于查询复杂度和索引优化)。
  • 通过分片集群,可扩展至百万级 QPS,适合高并发读写场景。
  • 写操作较快,但在强一致性需求场景下性能可能受限。

8、 Apache Cassandra

  • Cassandra 是分布式列存储数据库,专为高可用和高写入吞吐量设计。
  • 在大规模集群环境中,Cassandra 可以实现每秒数百万的写入操作。
  • 读写性能稳定且支持线性扩展,适合 IoT、大数据等场景。

9、 ZooKeeper

  • ZooKeeper 主要作为分布式协调服务使用,QPS 不会非常高,通常在几千左右。
  • 它更多关注一致性和可靠性,适合配置管理、分布式锁等场景。

10、 gRPC

  • 作为高性能的 RPC 框架,gRPC 支持 HTTP/2,支持双向流和多路复用。
  • 在相同网络条件下,gRPC 的 QPS 通常比传统 RESTful API 更高,支持几十万的调用吞吐量。
  • 适合微服务间高频通信,特别是对延迟敏感的场景。
Last Updated:
Contributors: hanchen, Clarence, hello0709
Prev
高并发架构
Next
压力测试方案