求阙厅

春有百花秋有月,夏有凉风冬有雪。若无闲事挂心头,便是人间好时节。

MQ 系列 性能对比

消息中间件基本特性

性能对比 Kafka单机写入TPS约在百万条/秒,消息大小10个字节 RocketMQ单机写入TPS: 单实例约7万条/秒,单机部署3个Broker,可以跑到最高12万条/秒,消息大小10个字节 总结:Kafka的TPS跑到单机百万,主要是由于Producer端将多个小消息合并,批量发向Broker。 RocketMQ 为什么不支持Producer端将多个小消息合并?...

MQ 系列 namesrv VS zookeeper

消息中间件基本特性

namesrv VS zk Kafka 通过 zookeeper 来进行协调,而rocketMq通过自身的namesrv进行协调。 RocketMQ 在协调节点的设计上显得更加轻量,用了另外一种方式解决高可用的问题,思路也是可以借鉴的。 Kafka 具备选举功能,在Kafka里面,Master/Slave的选举,有2步:第1步,先通过ZK在所有机器中,选举出一个KafkaCont...

MySQL 系列 常见优化策略

针对不同的瓶颈问题,提供优化策略

Linux操作系统优化 Linux 系统的一些参数配置,会影响到数据库的性能,例如tcp连接数、超时时间配置等 MySQL配置文件优化 MySQL 登录情况下可以通过show variables 命令查看,需要关注的MySQL配置参数。 MySQL 性能瓶颈在 IO 上,如何提升性能 针对这个问题,可以考虑以下三种方法: 设置 binlog_group_commit_syn...

分布式协同服务 系列 etcd 概述

etcd 是一个 Go 语言编写的高可用的一致性分布式键值存储系统,用于提供配置共享和服务发现等功能。常见的 etcd 使用场景包括:服务发现、分布式锁、分布式数据队列、分布式通知和协调、主备选举等。 etcd 这个名字由两部分组成: etc 和 d ,即 UNIX/Linux 操作系统的“/etc”目录和分布式(distributed)首字母的“d” 。我们都知道,/etc 目录一...

分布式协同服务 系列 etcd架构

基础架构 按照分层模型,etcd 可分为 Client 层、API 网络层、Raft 算法层、逻辑层和存储层。这些层的功能如下: Client 层:Client 层包括 client v2 和 v3 两个大版本 API 客户端库,提供了简洁易用的 API,同时支持负载均衡、节点间故障自动转移,可极大降低业务使用 etcd 复杂度,提升开发效率、服务可用性。 API 网络层主...

协同服务 系列 概述

协同服务用来存储服务配置信息、提供分布式锁等能力。 服务目标 一个协调服务,理想状态下大概需要满足以下五个目标: 可用性角度:高可用。协调服务作为集群的控制面存储,它保存了各个服务的部署、运行信息。若它故障,可能会导致集群无法变更、服务副本数无法协调。业务服务若此时出现故障,无法创建新的副本,可能会影响用户数据面。 数据一致性角度:提供读取“最新”数...

Kafka 系列 移位

深入理解Kafka

Rebalance 就是让一个 Consumer Group 下所有的 Consumer 实例就如何消费订阅主题的所有分区达成共识的过程。在 Rebalance 过程中,所有 Consumer 实例共同参与,在协调者组件的帮助下,完成订阅主题分区的分配。但是,在整个过程中,所有实例都不能消费任何消息,因此它对 Consumer 的 TPS 影响很大。 协调者 所谓协调者,在 Kafka ...

Kafka 系列 线程模型

深入理解Kafka

broker Kafka 使用的是 Reactor 模式处理请求。 简单来说,Reactor 模式是事件驱动架构的一种实现方式,特别适合应用于处理多个客户端并发向服务器端发送请求的场景。 从这张图中,我们可以发现,多个客户端会发送请求给到 Reactor。Reactor 有个请求分发线程 Dispatcher,也就是图中的 Acceptor,它会将不同的请求下发到多个工作线程中处...

Kafka 系列 系统架构

深入理解Kafka

Kafka 是分布式的消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform)。它的主要功能是提供一套完备的消息发布与订阅解决方案。Kafka 是一个多分区、多副本且基于 Zookeeper 协调的分布式消息系统。 Topic 是承载真实数据的逻辑容器,而在主题之下还分为若干个分区。 系统架构 Zookeeper 负责集群...

Kafka 系列 移位

深入理解Kafka

老版本的 Consumer Group 把位移保存在 ZooKeeper 中。Apache ZooKeeper 是一个分布式的协调服务框架, Kafka 重度依赖它实现各种各样的协调管理。将位移保存在 ZooKeeper 外部系统的做法,最显而易见的好处就是减少了 Kafka Broker 端的状态保存开销。现在比较流行的提法是将服务器节点做成无状态的,这样可以自由地扩缩容,实现超强的伸缩性...