NO WAY OUT | 无往不前


  • 首页

  • 分类

  • 欧拉计划

  • ARTS计划

  • 归档

  • 标签

  • 关于

  • 搜索

分布式系统的 Raft 算法

发表于 2021-11-14 | 分类于 数据一致性 | | 阅读次数:

Raft 算法是一个共识的算法,在集群的分布式状态中,保证每个节点都处于一致的状态。

Raft 算法主要可以分为两个阶段:

  1. 领导者选举阶段
  2. 日志复制(数据同步)阶段
阅读全文 »

数据一致性算法

发表于 2021-11-10 | | 阅读次数:

Zab(Zookeeper 采用的一致性协议)、或 Paxos 算法来保证 kafka 副本的数据一致性,而是采用另一套 ISR 副本管理机制来保证数据一致性呢?

redis raft协议数据一致性

Zab 协议 - 广播模式

客户端每发送一个更新请求,ZooKeeper 都会生成一个全局唯一的递增编号,这个编号反映了所有事务操作的先后顺序,这个唯一编号就是事务 ID(ZXID),只有更新请求才算是事务请求。
为保证按照事务的 ZXID 先后顺序来处理,Leader服务器会分别为每个 Follower 服务器创建一个队列,并将事务的先后顺序放入队列中,并按照 FIFO 的策略进行消息发送。收到需要处理的事务后,Follower 服务器会首先以事务日志的形式写入服务器的磁盘中,写入成功后会向 Leader 服务器发送 ACK 响应。当 Leader 服务器收到超过一半的 Follower 服务器的 ACK 响应后,会向所有 Follower 服务器广播 Commit 消息,收到 Commit 消息的 Follower 服务器也会完成对事务的提交。
如果接收到事务请求的是 Follower 服务器,它会将请求转发给 Leader 服务器处理。

Introduction-to-RocketMQ

发表于 2021-10-29 | | 阅读次数:

Kafka 核心架构机制总结

发表于 2021-10-28 | | 阅读次数:

Kafka 是一个分布式流平台。是一种高吞吐量的分布式发布订阅消息系统。

消息中间件一般支持两种模式的队列:

一是消息队列模式
二是发布订阅 (Pub-Sub) 模式

Kafka 是发布订阅模式的轻量级消息系统、流平台。

这个系统需要满足如下三个特性:

  1. 能够对流记录(每条消息)进行发布、订阅。
  2. 能够支持容错地持久化每一条流记录。(注:采用时间复杂度O(1)的磁盘存储结构,即使TB级别以上的数据也可以常数时间访问)
  3. 能够及实地处理每一条实时的流记录消息。
阅读全文 »

分布式锁的 Redisson 实现

发表于 2021-10-18 | 分类于 分布式锁 | | 阅读次数:

本文主要介绍 Redisson 如何实现分布式锁的原理

阅读全文 »

MySQL 索引及优化技巧

发表于 2021-09-16 | | 阅读次数:

引言

MySQL 性能优化包括很多方面,比如数据库设计、参数配置(软&硬)、sql语句、读写分离、分表技术(水平拆分、垂直拆分)等,完整的 MySQL 优化需要很深的功底,掌握这些知识不是一朝一夕可以完成的事情。本文章主要针对 sql 语句优化中的索引优化开展。

阅读全文 »

gRPC 对比 WebSocket

发表于 2021-09-16 | | 阅读次数:

gRPC

gRPC 是一个远程过程调用框架,默认使用 protobuf3 进行数据的高效序列化与 service 定义,使用 HTTP/2 进行数据传输。 这里讨论的是 gRPC over HTTP/2 协议。

目前 gRPC 主要被用在微服务通信中,但是因为其优越的性能,它也很契合游戏、loT 等需要高性能低延迟的场景。

其实从协议先进程度上讲,gRPC 基本全面超越 REST:

  1. 使用二进制进行数据序列化,比 json 更节约流量、序列化与反序列化也更快。
  2. protobuf3 要求 api 被完全清晰的定义好,而 REST api 只能靠程序员自觉定义。
  3. gRPC 官方就支持从 api 定义生成代码,而 REST api 需要借助 openapi-codegen 等第三方工具。
  4. 支持 4 种通信模式:一对一(unary)、客户端流、服务端流、双端流。更灵活
阅读全文 »

Redis 高可用方案

发表于 2021-09-14 | 分类于 Redis | | 阅读次数:

Redis 中为了实现高可用(High Availability,简称 HA ),采用了如下两个方式:

  1. 哨兵( Sentinel ):可以管理多个 Redis 服务器,它提供了监控,提醒以及自动的故障转移的功能。
  2. 复制( Replication ):则是负责让一个 Redis 服务器可以配备多个备份的服务器。

主从模式(Redis 2.8 版本之前的模式)、哨兵 sentinel 模式(Redis 2.8 及之后的模式)、redis cluster模式(Redis 3.0版本之后)

阅读全文 »

Redis 缓存穿透、缓存击穿、缓存雪崩和解决方案

发表于 2021-09-04 | 分类于 Redis | | 阅读次数:

设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。

缓存穿透

原因

缓存穿透:是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。

阅读全文 »

布隆过滤器

发表于 2021-09-01 | | 阅读次数:

Data structures are nothing different. They are like the bookshelves of your application where you can organize your data. Different data structures will give you different facility and benefits. To properly use the power and accessibility of the data structures you need to know the trade-offs of using one.

不同的数据结构有不同的适用场景和优缺点,你需要仔细权衡自己的需求之后妥善适用它们

布隆过滤器就是践行这句话的代表

阅读全文 »
12…6
xiaolong

xiaolong

51 日志
18 分类
62 标签
RSS
GitHub Twitter weibo LinkedIn
© 2017 — 2021 xiaolong
since 2017