常用组件的一些数据指标

QPS

metrics 机制,利用 AtomicLong 算出核心接口每分钟调用多少次(除以 60 就是高峰期每秒访问次数)以及每天被调用总次数

TP99 = 100ms , 99%的接口耗时在 100ms以内,1%的接口耗时在100ms以上

TP95 = 100ms , 95%的接口耗时在 100ms以内,5%的接口耗时在100ms以上

平均响应延时 = (每次调用的耗时 + 历史总耗时 )/ 当前请求的总次数

最大 QPS
假设最大 QPS 为 800 ,当压测工具每秒发起 1000 个请求的时候,只有 800个可以同时被处理,200 个在排队被阻塞住

lvs+nginx

详情链接

一个大致的配置可能包括:

硬件配置:4台高性能的服务器,每台配备多核 CPU、大容量内存和高速磁盘;例如,每台服务器有 16 核 CPU、64GB 内存、SSD 硬盘等。

网络带宽:每台服务器具有较高的网络带宽,例如千兆或更高的带宽。

LVS:LVS 作为负载均衡器,配置为四台服务器的后端。

Nginx:Nginx 配置为每台服务器的前端,用于处理 HTTP 请求并进行负载均衡。Nginx 配置了反向代理、缓存策略和负载均衡算法等。

Keepalived:用于实现高可用性,确保负载均衡器的高可用性。

对于这样的配置,大概能抗的并发连接数可能在数十万到数百万级别。然而,这个估计仅供参考,实际的性能还会受到请求类型、网络流量、优化设置等多种因素的影响。最准确的评估方法是进行压力测试,模拟实际负载并评估集群的性能极限。

数十万到数百万并发

nginx

中等nginx配置
处理器:4核或以上
内存:8GB或以上
存储:SSD硬盘
网络:1Gbps带宽

单台nginx一般能抗数万到数十万个并发数

同时,Nginx的并发连接数也可以通过调整Nginx的配置文件来进行优化,例如调整worker_processes和worker_connections参数。这些参数的调整需要根据具体的硬件配置和应用需求来进行评估和优化

redis

单机6-8w qps,采用claster分片模式理论上可以横向扩容

rabbitMq

万级并发,主从结构,存在单机瓶颈,横向扩容有限
中小公司 4核8GB

rocketMq

十万级并发
分布式架构,横向扩容无压力

kafka

十万级
分布式架构,横向扩容无压力

mysql

16 核 32G,物理机,高峰期每秒几千(三四千的时候,网络负载比较高,CPU 使用率比较高,I/O 负载比较高)请求问题不大

数据库换成32 核 128G (每秒抗住几千请求问题不大)

采用分库分表、读写分离(一主一备两从,两主两从等),再怎么优化很难超过10w级 qps

固态硬盘

IOPS 大概在 3 万左右

eureka

配置 8核 16G 单台,16 核 32G,每台机器每秒钟的请求支撑几千绝对没问题,可以支撑上千个服务

建议3~5台左右配置就可以了

中小型公司 20~30 个服务,注册中心 2 ~3 台机器(4 核 8G),每秒抗上千请求
注册中心优化服务注册和发现配置
注册表多级缓存同步 1 秒,注册表拉取频率 1 秒
服务心跳 1 秒上报一次,服务故障发现 1 秒,发现 2 秒内服务没上报心跳,就故障

zuul

每秒并发在1000 以内,每个服务部署 2 台机器,每台机器 4 核 8G,每台机器抗几百请求一点问题都没
大部分系统高峰期每秒几百请求,低峰期每秒几十请求,几个请求

springCloudGateway

每台机器 8 核 16G 能抗2000左右,springCloudGateway性能是比较吃cpu和内存的

elasticSearch

一般单台4核16g、8核32g
es不吃cpu,吃内存和磁盘,磁盘ssd
内存不能少于8g(可能不够用)也不要超过64g(超过64jvm内存回收不太友好)

一般来说qps几万级是可以支撑的,写入qps也可以达到上万
(最终还是压测为准,分片量,数据量,参数配置这些做对应优化)

一次用户请求时长

一般互联网类的企业,对用户的直接操作,一般要求每个请求都必须在 200ms以内,对用户几乎是无感知的。

示例cat查看指标
在这里插入图片描述

在这里插入图片描述

一次数据库查询时长

在十毫秒级别完成一次简单的查询

binlog同步延迟

十毫秒级别(几毫秒到十几毫秒不等)

一次rpc接口调用时长

30毫秒左右,最好在50毫秒以内(十几毫秒到几十毫秒不等)

<think>好的,用户之前询问了Spring中的@RequestMapping注解,现在他们接着问“常用组件”。需要确定用户是在继续Spring框架的话题,还是转向其他技术领域的通用组件。由于之前的对话是关于Spring MVC的,可能用户现在想了解Spring中常用组件,或者是更广泛意义上的软件工程中的常见组件。 首先,我需要明确“组件”的具体上下文。在Spring框架中,组件通常指被@Component及其派生注解标记的类,如@Controller、@Service、@Repository等。但用户可能也可能指一般软件架构中的常用组件,比如日志、数据库连接池、缓存等。根据用户之前的兴趣点,可能更倾向于Spring相关的组件,但也不排除其他可能性。 接下来,我应该考虑如何组织回答。如果用户指的是Spring中的组件,需要详细列出各个核心组件及其作用,比如IoC容器、AOP、数据访问模块等。同时,结合用户之前的问题,可能需要提到与@RequestMapping相关的组件,比如DispatcherServlet、HandlerMapping等。此外,用户可能对实际开发中常用的第三方组件感兴趣,比如数据库连接池HikariCP,JSON处理库Jackson,安全框架Spring Security等。 另外,用户可能希望了解这些组件的用途和如何选择,所以在介绍时应该简要说明每个组件的功能和适用场景。需要保持结构清晰,分点列出,便于用户理解。同时,要避免使用过多技术术语,保持解释通俗易懂。 可能还需要考虑用户的学习阶段。他们可能正在学习Spring框架,所以需要从基础开始,逐步深入。例如,先介绍Spring核心组件,再扩展到相关生态中的常用库,最后提到微服务架构中的组件,如Spring Cloud相关项目。这样层次分明,帮助用户构建完整的知识体系。 最后,需要检查是否有遗漏的重要组件,并确保信息准确,如版本兼容性、最新趋势等。例如,现在Spring Boot已经成为主流,简化了配置,所以在介绍组件时可以提到Spring Boot中的自动配置和starter依赖,这也是用户可能感兴趣的部分。</think>以下是对软件开发中常用组件的分类介绍,分为基础架构、功能模块和开发工具三个层面: ### 一、基础架构组件 1. **Spring Framework核心** - **IoC容器**:通过`ApplicationContext`实现依赖注入 - **AOP模块**:提供面向切面编程能力 - **事务管理**:声明式事务控制(`@Transactional`) 2. **持久层组件** ```java // MyBatis示例 @Mapper public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User findById(@Param("id") Long id); } ``` - **HikariCP**:高性能数据库连接池 - **JPA/Hibernate**:ORM框架 3. **Web服务组件** - **Tomcat/Jetty**:嵌入式Servlet容器 - **Netty**:异步事件驱动网络框架 - **Spring WebFlux**:响应式Web框架 ### 二、功能模块组件 1. **安全控制** ```java // Spring Security配置示例 @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin/**").hasRole("ADMIN") .anyRequest().authenticated(); } } ``` 2. **消息处理** - **Kafka/RabbitMQ**:消息队列中间件 - **Spring Batch**:批处理框架 3. **缓存组件** ```java // Redis缓存示例 @Cacheable(value = "users", key = "#id") public User getUser(Long id) { // 数据库查询逻辑 } ``` - **Redis**:内存数据存储 - **Ehcache**:本地缓存框架 ### 三、开发支持组件 1. **监控管理** - **Prometheus+Grafana**:指标监控可视化 - **Spring Boot Actuator**:应用健康检查端点 2. **配置中心** ```yaml # Nacos配置示例 spring: cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension: yaml ``` 3. **文档工具** - **Swagger/OpenAPI**:API文档生成 - **Spring REST Docs**:文档测试一体化 ### 四、微服务组件(Spring Cloud体系) | 组件 | 功能 | 对应实现 | |-------------------|-------------------------|-------------------| | 服务注册发现 | 服务实例管理 | Eureka/Nacos | | 配置中心 | 统一配置管理 | Config Server | | 服务网关 | 路由与过滤 | Gateway/Zuul | | 负载均衡 | 请求分发策略 | Ribbon/LoadBalancer | | 熔断降级 | 服务容错保护 | Hystrix/Sentinel | **组件选型建议**: 1. 根据项目规模选择单体/微服务架构 2. 优先考虑Spring官方维护的组件 3. 社区活跃度和版本更新频率很重要 4. 注意组件间的兼容性(如Spring Boot与Cloud版本对应关系) **最新趋势**: - 响应式编程(WebFlux+Reactor) - 云原生组件(Kubernetes+Service Mesh) - Serverless架构支持 - 低代码平台集成 建议根据具体业务场景组合使用这些组件,可参考Spring官方提供的start.spring.io创建项目模板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值