667 1 分钟

# Aurora 就是 cloud scale 级别的数据库。 # DURABILITY AT SCALE # Replication and Correlated Failures 在分布式系统中,经常会遇到各种故障,并且这些故障有些是独立的,有些是相关的。一个思路来设计容错的 replicated system 就是使用 quorum-based voting protocol。 为了满足一致性,也就是能读到最新的数据,一个读操作获得的票数 Vr 与一个写操作获得的票数 Vw 的和必须是 Vr + Vw > V...
847 1 分钟

# 写在开头的话 MIT6.824 这门课我已经做完一半内容了,而且 lab 也只剩下最后的 lab4。所以我在想似乎现在是时候开启新的副本了。 我知道上一个副本我还没打通关,而且 MIT6.824 是大副本,整个 3 月份加上读论文,我也并没有很大把握能够把这么课程干掉。我的规划里面这么课程是作为我的核心课程,自然也要精细一些。但是 6.S081 的难度并没有那么大,如果时间安排的好的话,在 4...
520 1 分钟

用于记录我在使用 GrimoireLab 遇到的各种问题。 # 搭建 在阿里云的云服务器上搭建的实例。使用的是香港的节点,所以拉取镜像的速度会很快。 # 遇到的坑点 ElasticSearch 无法启动 elasticsearch_1 | max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 报错信息是虚内存不够用,无法启动 Elastic。解决办法: sysctl -w vm.max_map_count=262144# 食用方法 # git git 不需要配置...
3.2k 3 分钟

终于到了 Lab3 了,写一个 KV 服务🐍 # 要求 lab3 需要构建一个 fault-tolerance key/value storage service。用到之前 lab2 写的 Raft library。 三个 api 接口: Put(key, value) , Append(key, arg) , and Get(key) 。如果 key 不存在, Get(key) 返回空 string,并且 append 与 put 操作等价。 each client talks to the service through a Clerk with Put/Append/Get...
1.6k 1 分钟

# 简介 说白了就是 CR 的加强版,将读请求分摊到链上的每个 replicas,搭配 zookeeper 实现了分布式容错机制。 # 基本模型 CRAQ (Chain Replication with Apportioned Queries), 只会提供两个原语,读和写。 两种一致性: 强一致性:所有读操作都能读到最新的数据。 最终一致性:所有节点 apply write order 相同,但是读操作可能读到 stale data。 CRAQ 能够保证强一致性。 # Chain Replication 这张图足够解释 Chain Replication: 所有的 write...
3.9k 4 分钟

# lock-free wait-free 以及 CAS 读这篇文章需要一点关于 wait-free、lock-free 和 CAS 的前置知识。 知乎有一篇文章写了关于 wait-free 和 lock-free 的理解:对 wait-free 和 lock-free 的理解 - 我的猪猪呢的文章 - 知乎 https://zhuanlan.zhihu.com/p/342921323 对于有锁算法: 可以看到在 slip3 没有任何线程 MakeProgress 。这就是因为 T2 在 slip2 加了锁,然后可能因为 IO 操作,它在 slips 不再占用...
1.1k 1 分钟

# Mordred SirMordred is the tool used to coordinate the execution of the GrimoireLab platform, via two main configuration files, the setup.cfg and projects.json , which are summarized in their corresponding sections. 也就是说这个工具是管理平台用的。主要的配置文件有两个 Setup.cfg 和 Projects.json 。 # Setup.cfg 这个配置文件用于管理...
502 1 分钟

# Kibiter Kibiter 就是 Kibana 的定制化 fork。 下图为 kibana: 可以看到这个就是一个仪表盘。。。 # 功能 # 面板菜单 # New visualization plugins Kibiter 默认安装了一些可视化插件,比如 Network plugin,允许用户通过图方式查看数据。 # sigils 这个就是一个 Json 文件夹,包含了所有关于 kibana dashboard 的信息。 Original indexes where the information come from. Searches on those indexes that...
712 1 分钟

# GrimoireELK GrimoireELK 就是一个数据增强组件,这个组件基于 ElasticSearch。这个组件的作用有两个。 存储 perceval 获得的数据,这样就不用反复拉取。 对原来的数据进行加工和 enrich,使其能被 K 从 bit 而使用。 关于 raw 数据和 enrich 数据可以直接查看 https://github.com/chaoss/grimoirelab-elk,这里不多描述。 # Ceres Ceres 就是一个数据解析工具,他负责解析从 perceval 获取得到的数据。 它的工作逻辑如下: # Eventize perceval 会产生...
12k 11 分钟

首先我是读了论文之后再写这个 lab 的,但 raft 论文的内容太多了,只能慢慢一点点看。现在还是先把 lab 完成。 强烈安利:https://mp.weixin.qq.com/s/lUbVBVzvNVxhgbcHQBbkkQ 先上图 4 个小题全部通关,并且并行测试 1000 次无出错。 # Part 2A 任务要求:实现选举算法和心跳包。如果旧的 leader 没有问题就让旧的 leader 继续执行,如果旧的 leader 有问题那么就选举新的 leader。 这意味着我们不用设置 normal term,只要考虑 leader fail 这种情况。 任务提示: 完成...