Skip to content

Commit

Permalink
Merge pull request #3 from BowenXiao1999/master
Browse files Browse the repository at this point in the history
fix some small typo
  • Loading branch information
mapleFU authored Aug 9, 2020
2 parents 22367da + 585e3bb commit 3486f6f
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ Figure 3显示了 YMB 的`znode`数据分布的一部分。 每个 broker 域都

## 4 ZooKeeper Implementation

ZooKeeper通过在组成服务的每台服务器上复制 ZooKeeper 数据来提供高可用性。 我们假设服务器因崩溃而失败,并且此类故障服务器稍后可能会恢复。 Figure 4显示了 ZooKeeper 服务的层次组件。 收到请求后,服务器会为执行做 prepare(request processor)。 如果这样的请求需要服务器之间的协调(是写请求),则它们使用 a greement protocol(原子广播的一种实现),最后服务器将更改提交到 ZooKeeper 数据库中,该更改已在整个集成服务器中完全复制。 对于读取请求,服务器仅从本地数据库读取状态并生成对该请求的响应。
ZooKeeper通过在组成服务的每台服务器上复制 ZooKeeper 数据来提供高可用性。 我们假设服务器因崩溃而失败,并且此类故障服务器稍后可能会恢复。 Figure 4显示了 ZooKeeper 服务的层次组件。 收到请求后,服务器会为执行做 prepare(request processor)。 如果这样的请求需要服务器之间的协调(是写请求),则它们使用 agreement protocol(原子广播的一种实现),最后服务器将更改提交到 ZooKeeper 数据库中,该更改已在整个集成服务器中完全复制。 对于读取请求,服务器仅从本地数据库读取状态并生成对该请求的响应。

复制数据库是一个包含整个数据树的内存数据库。默认情况下,每个数据库中的 `znode` 最多存储 1MB 的数据,但是这个值是一个可配置的值,在特殊的情况下可以被更改。为了可恢复性,我们高效的把 log 更新在磁盘中,我们强制在写入内存数据库之前写入磁盘。实际上,与 Chubby 一样,我们对于提交的操作维护了一个重放日志 (在我们的例子中,是一个 write-ahead log),并周期性的为内存数据库生成快照。

Expand Down Expand Up @@ -266,7 +266,7 @@ ZooKeeper通过在组成服务的每台服务器上复制 ZooKeeper 数据来提

### 4.4 Client-Server Interactions

当一个服务器处理写请求的时候,它也会发送通知并清楚和这个更新有关的 watch。服务器顺序处理 write,并且以非并行的方式处理读写。这严格保证了通信的顺序。请注意,服务器在本地处理通知。 仅客户端连接到的服务器跟踪并触发该客户端的通知。
当一个服务器处理写请求的时候,它也会发送通知并清除和这个更新有关的 watch。服务器顺序处理 write,并且以非并行的方式处理读写。这严格保证了通信的顺序。请注意,服务器在本地处理通知。 仅客户端连接到的服务器跟踪并触发该客户端的通知。

读请求由每个服务器在本地处理,每个读取请求都经过处理并用 zxid 标记,该 zxid 对应于服务器看到的最后一个事务。 该 zxid 定义了读取请求相对于写入请求的偏序。 通过本地处理读取,我们获得了出色的读取性能,因为它只是本地服务器上的内存中操作,并且没有要运行的磁盘操作或者广播协议。 这种设计选择是我们获得读为主的负载中高性能的关键。

Expand Down

0 comments on commit 3486f6f

Please sign in to comment.