MQ顺序消息
序言 顺序消息,就是生产端发送的消息顺序和消费端接收的消息顺序一样。消息顺序,一般是指时间上的顺序性。 先看下MQ的消息场景,再来看实现MQ顺序消息需要考虑哪些因素。 从MQ的消息存储看,底层消息是直接写入到文件的,它是一个顺序存储结构,没有用B树、B+树等类似数据结构。一方面,复杂数据结构会影响数据写入/读取的性能;另一方面,MQ功能需求简单,不需要复杂数据结构来支持检索。 ...
序言 顺序消息,就是生产端发送的消息顺序和消费端接收的消息顺序一样。消息顺序,一般是指时间上的顺序性。 先看下MQ的消息场景,再来看实现MQ顺序消息需要考虑哪些因素。 从MQ的消息存储看,底层消息是直接写入到文件的,它是一个顺序存储结构,没有用B树、B+树等类似数据结构。一方面,复杂数据结构会影响数据写入/读取的性能;另一方面,MQ功能需求简单,不需要复杂数据结构来支持检索。 ...
MQ基本模块 一个消息队列至少要有通信协议、网络、存储、生产者、消费者最基础的5个模块,不同的MQ架构就是对这5个模块的选型设计。 消息队列组成部分简图 消息队列中存储的数据分为两大类,分别是元数据和消息数据。元数据是集群维度的资源数据,包括Topic、Group、User、ACL、Config;消息数据是客户端写入的用户业务数据。 RocketMQ RocketMQ Kaf...
序言 业务发展初期,基础设施不够完善,基础架构人员正在为消息队列选型头疼,没有统一、可靠、稳定的消息队列中间件可供使用。某些业务场景需要使用消息队列的生产/消费机制来实现异步解耦,这个时期的业务特点是数据量不大,场景也不复杂,只是需要缓冲实现立即/延时异步分发消息,并没有用到消息队列的高级功能,比如事务消息、顺序消息、死信队列这些。为了及时满足业务需求,可以暂不使用业界标准的消息队列,业务...
什么是消息队列 消息队列(Message Queue,MQ)是具有缓冲功能、具备类发布/订阅能力的存储引擎,架构设计中作为总线和管道,主要用来削峰、异步解耦、缓存。消息队列最基本的功能是生产/消费,在此基础上建设扩展如事务消息、顺序消息、延时消息、死信队列等高级功能,实现了高吞吐、低延时、高可靠等特性。当前开源社区使用较多的标准消息队列有Kafka、RocketMQ、RabbitMQ、Pu...
索引实践 这里所有的实践都是基于MySQL 5.7.26版本的InnoDB存储引擎!!! 在实操之前,需要确定当前使用的MySQL版本,因为不同的版本,对同一问题的表现不同。 mysql> SELECT VERSION(); +-----------+ | VERSION() | +-----------+ | 5.7.26 | +-----------+ 1 row in s...
背景 在应用的开发过程中,由于初期数据量小,开发人员在写SQL语句时更重视功能上的实现,但当应用系统正式上线后,随着生产数据量的急剧增长,很多SQL语句开始逐渐暴露出性能问题,对生产的影响也越来越大,此时这些有问题的SQL就成为了整个系统性能的瓶颈,这时必须对它们进行优化。 进行SQL优化,索引将是数据库用来提高性能的最常用工具。所有MySQL列类型可以被索引,对相关列使用索引是提高SEL...
Case MySQL数据库用的大版本是5.7,InnoDB引擎, MySQL数据库版本 想个问题,在 MySQL 5.7 数据库里,InnoDB引擎,执行⼀条DDL会发生什么事情?举个例子,表记录数 400W+,表字段数 20+,索引4个,数据大小 1.7G,配置4核16G,主从复制,读写分离。 MySQL table count统计 MySQL table 字段统计 M...
现象 发生死锁,服务会出现如下报警,Deadlockfound when trying to get lock; try restarting transaction. 思路 出现类似问题,应先评估死锁对业务和数据的影响范围。如果有损,选择合适的止损方式,然后再去分析解决问题。 查服务日志和 MySQL 死锁日志,定位死锁发生地 es死锁日志 mysql死锁日...
从 jekyll 和 jekyll-now 开始 jekyll 是一个基于 Ruby 开发的开源静态网站生成器,支持 Markdown 和 HTML 两种文件类型,其中 HTML 使用了 Liquid 模板语言。它使用 Ruby 引擎将用 Markdown 编写的文章转换成静态的 HTML 文件,生成的网站可以方便地部署到各种网络服务器上。 jekyll-now是一个 jekyll 脚手...