MQ系列(四):ActiveMQ发送与消费优化,异步,同步,流控,预取限制,慢消费
ActiveMQ 为生产者发送消息提供了根据业务场景需要的相关优化配置,支持同步,异步发送,支持流量控制,Broker存储空间设置等。
也为消息者提供了优化设置,支预取限制,为慢消费者提供了等待消息策略和消息丢弃策略的配置,支持异步消费者和优先级消费设置。
ActiveMQ 为生产者发送消息提供了根据业务场景需要的相关优化配置,支持同步,异步发送,支持流量控制,Broker存储空间设置等。
也为消息者提供了优化设置,支预取限制,为慢消费者提供了等待消息策略和消息丢弃策略的配置,支持异步消费者和优先级消费设置。
本篇文章算是 Spring Boot 2实践系列(四十六):API接口请求限制之AOP与拦截器实现 的下篇,也是基于拦截器和 AOP 两种方式实现对 API 接口请求响应的耗时进行统计,也是对涉及的知识点学习和巩固。
开发任何一个系统,都应当对 API 接口响应时长进行监控以了解系统性能,帮助判断性能瓶颈(当然很多小公司或小系统并没有这个意识,或有这个意识但没有落地实行)。
MySQL 对范围查询提供了 range access method(范围访问方法) 来优化查询。
范围访问方法使用单个索引来检索包含在一个或多个索引值区间内的表行的子集。这里的单个索引可以是单列索引或多列索引。
MySQL 查询是以 SELECT 语句形式执行数据库中的所有查找操作,SELECT 操作在执行的 SQL 语句中占大比例,SELECT 调优可以说是对 SQL 优化的首要任务。
查询调优除了应用于 SELECT 语句外,还适用于诸如 create table…as select、insert in to…select 和 delete 语句中的 where 子句等构造。这些语句还有额外的性能考虑,因为它们将写操作与面向读的操作结合在了一起。
使用索引来提高查询性能效果是显著的,但不正确的 SQL 语句使用也会导致索引失效,索引使用未达预期,甚至执行全表扫描,此情况是严重影响性能的,在编写 SQL 语句时特别注意。
特别强调,在每提交一条 SQL 语句时,必须使用 Explain 分析下索引的的使用。在生产环境或测试环境下,小数据的 SQL 执行感觉不到性能的差异,但一旦发布到线上大数据表,不正确的 SQL 可能会严重影响生产库的性能,并给业务带了损失,此情况仍时有发生。
给列创建索引是提高 SELECT 查询性能的最佳方式。索引类似于表行的指针,在查询时可以根据索引快速定位某些行与 WHERE 子句中的条件匹配,并检索该行的其他列值。MySQL 所有数据类型都可以创建索引。
虽然添加索引对查询带来的性能提效果是显著的,但也不是为每一个列都创建索引为好,索引还会增加 插入、更新和删除的成功,因为必须更新每个索引。
Redis 部署个测试或者测开环境是非常简单的,但如果部署生产环境,则需要考虑更多的因素。
Redis 生产环境几乎都是部署在基于 Linux 操作系统的服务器上,需要考虑操作系统级别优化、还有客户端连接参数、Redis 安全、内存策略、日志配置、基准测试等。
这篇文章持续了一个多星期,查了 N 多资料,虽然只是几个优化参数的设置,但有必要深入理解其含义,涉及到对 Linux 底层相关概念的理解,挺费劲的,终于成章。
Redis 为满足业务需求提供了丰富的数据类型,在使用时需要注意它们在不同业务场景中的优缺点,还需要考虑选中的数据类型在性能和内存消耗上是否还有优化的空间。
Redis 对小的聚合类型数据进行了特殊的编码处理。Redis2.2版本及以后,存储集合数据的时候会采用内存压缩技术,以使用更少的内存存储更多的数据。当集合中的元素小于给定的个数,或元素小于给定的最大值时,Redis 会以一种非常有效的内存方式进行编码,最多可节省10倍的内存(平均至少节省5倍)。