pull/6/head
yuanguangxin 4 years ago
parent ec326b5438
commit 3883f0520a

@ -268,14 +268,7 @@
<workItem from="1591451838662" duration="723000" />
<workItem from="1591524368167" duration="184000" />
<workItem from="1591587079718" duration="3483000" />
<workItem from="1591599367868" duration="974000" />
</task>
<task id="LOCAL-00021" summary="update Rocket.md">
<created>1581851491537</created>
<option name="number" value="00021" />
<option name="presentableId" value="LOCAL-00021" />
<option name="project" value="LOCAL" />
<updated>1581851491537</updated>
<workItem from="1591599367868" duration="2080000" />
</task>
<task id="LOCAL-00022" summary="update Rocket.md">
<created>1581855774959</created>
@ -613,7 +606,14 @@
<option name="project" value="LOCAL" />
<updated>1591590258725</updated>
</task>
<option name="localTasksCounter" value="70" />
<task id="LOCAL-00070" summary="update">
<created>1591633493322</created>
<option name="number" value="00070" />
<option name="presentableId" value="LOCAL-00070" />
<option name="project" value="LOCAL" />
<updated>1591633493323</updated>
</task>
<option name="localTasksCounter" value="71" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
@ -689,20 +689,20 @@
<MESSAGE value="add q61" />
<MESSAGE value="add q62" />
<MESSAGE value="增加问题" />
<MESSAGE value="update" />
<MESSAGE value="add q78" />
<option name="LAST_COMMIT_MESSAGE" value="add q78" />
<MESSAGE value="update" />
<option name="LAST_COMMIT_MESSAGE" value="update" />
</component>
<component name="WindowStateProjectService">
<state x="458" y="204" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog" timestamp="1587221348872">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state x="458" y="204" key="#com.intellij.refactoring.safeDelete.UnsafeUsagesDialog/0.0.1440.900@0.0.1440.900" timestamp="1587221348872" />
<state x="404" y="60" key="CommitChangelistDialog2" timestamp="1591590258488">
<state x="404" y="60" key="CommitChangelistDialog2" timestamp="1591633493160">
<screen x="0" y="0" width="1920" height="1080" />
</state>
<state x="303" y="50" key="CommitChangelistDialog2/0.0.1440.900@0.0.1440.900" timestamp="1588749779133" />
<state x="404" y="60" key="CommitChangelistDialog2/0.0.1920.1080@0.0.1920.1080" timestamp="1591590258488" />
<state x="404" y="60" key="CommitChangelistDialog2/0.0.1920.1080@0.0.1920.1080" timestamp="1591633493160" />
<state x="191" y="94" width="1152" height="720" key="DiffContextDialog" timestamp="1591262490778">
<screen x="0" y="0" width="1920" height="1080" />
</state>
@ -769,11 +769,11 @@
<screen x="0" y="0" width="1440" height="900" />
</state>
<state x="221" y="63" key="SettingsEditor/0.0.1440.900@0.0.1440.900" timestamp="1585223890241" />
<state x="427" y="228" key="Vcs.Push.Dialog.v2" timestamp="1591590259825">
<state x="427" y="228" key="Vcs.Push.Dialog.v2" timestamp="1591633495184">
<screen x="0" y="0" width="1920" height="1080" />
</state>
<state x="320" y="190" key="Vcs.Push.Dialog.v2/0.0.1440.900@0.0.1440.900" timestamp="1588749781144" />
<state x="427" y="228" key="Vcs.Push.Dialog.v2/0.0.1920.1080@0.0.1920.1080" timestamp="1591590259825" />
<state x="427" y="228" key="Vcs.Push.Dialog.v2/0.0.1920.1080@0.0.1920.1080" timestamp="1591633495184" />
<state x="100" y="100" width="1240" height="700" key="com.intellij.history.integration.ui.views.FileHistoryDialog" timestamp="1587219014962">
<screen x="0" y="23" width="1440" height="797" />
</state>
@ -786,14 +786,11 @@
<screen x="0" y="23" width="1440" height="797" />
</state>
<state x="100" y="100" width="1240" height="700" key="dock-window-1/0.23.1440.797@0.23.1440.797" timestamp="1585037767258" />
<state x="378" y="207" width="683" height="486" key="find.popup" timestamp="1586846937826">
<screen x="0" y="0" width="1440" height="900" />
<state x="504" y="248" width="911" height="584" key="find.popup" timestamp="1591635370753">
<screen x="0" y="0" width="1920" height="1080" />
</state>
<state x="378" y="207" width="683" height="486" key="find.popup/0.0.1440.900@0.0.1440.900" timestamp="1586846937826" />
<state x="398" y="248" key="git4idea.merge.GitPullDialog" timestamp="1582971880352">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state x="398" y="248" key="git4idea.merge.GitPullDialog/0.0.1440.900@0.0.1440.900" timestamp="1582971880352" />
<state x="504" y="248" width="911" height="584" key="find.popup/0.0.1920.1080@0.0.1920.1080" timestamp="1591635370753" />
<state x="385" y="196" width="670" height="676" key="search.everywhere.popup" timestamp="1587219643331">
<screen x="0" y="0" width="1440" height="900" />
</state>

@ -2,7 +2,7 @@
## ZooKeeper
### CAP定理
一个分布式系统不可能同时满足以下三种,一致性C:Consistency,可用性A:Available,分区容错性P:Partition Tolerance.在此ZooKeeper保证的是CPZooKeeper不能保证每次服务请求的可用性在极端环境下ZooKeeper可能会丢弃一些请求消费者程序需要重新请求才能获得结果。另外在进行leader选举时集群都是不可用所以说ZooKeeper不能保证服务可用性。
一个分布式系统不可能在满足分区容错性P的情况下同时满足一致性C和可用性A:)。在此ZooKeeper保证的是CPZooKeeper不能保证每次服务请求的可用性在极端环境下ZooKeeper可能会丢弃一些请求消费者程序需要重新请求才能获得结果。另外在进行leader选举时集群都是不可用所以说ZooKeeper不能保证服务可用性。
### BASE理论
@ -20,7 +20,7 @@ BASE理论是基本可用软状态最终一致性三个短语的缩写。B
### ZAB协议
ZAB协议包括两种基本的模式崩溃恢复和消息广播。当整个 Zookeeper 集群刚刚启动或者Leader服务器宕机、重启或者网络故障导致不存在过半的服务器与 Leader 服务器保持正常通信时,所有服务器进入崩溃恢复模式,首先选举产生新的 Leader 服务器,然后集群中 Follower 服务器开始与新的 Leader 服务器进行数据同步。当集群中超过半数机器与该 Leader 服务器完成数据同步之后退出恢复模式进入消息广播模式Leader 服务器开始接收客户端的事务请求生成事物提案来进行事务请求处理。
ZAB协议包括两种基本的模式崩溃恢复和消息广播。当整个 Zookeeper 集群刚刚启动或者Leader服务器宕机、重启或者网络故障导致不存在过半的服务器与 Leader 服务器保持正常通信时,所有服务器进入崩溃恢复模式,首先选举产生新的 Leader 服务器,然后集群中 Follower 服务器开始与新的 Leader 服务器进行数据同步。当集群中超过半数机器与该 Leader 服务器完成数据同步之后退出恢复模式进入消息广播模式Leader 服务器开始接收客户端的事务请求生成事物提案(超过半数同意)来进行事务请求处理。
### 选举算法和流程FastLeaderElection(默认提供的选举算法)
@ -31,6 +31,12 @@ ZAB协议包括两种基本的模式崩溃恢复和消息广播。当整个 Z
4. 服务器4启动给自己投票同时与之前启动的服务器1,2,3交换信息尽管服务器4的编号大但之前服务器3已经胜出所以服务器4只能成为follower。
5. 服务器5启动后面的逻辑同服务器4成为follower。
### zk中的监控原理
zk类似于linux中的目录节点树方式的数据存储即分层命名空间zk并不是专门存储数据的它的作用是主要是维护和监控存储数据的状态变化通过监控这些数据状态的变化从而可以达到基于数据的集群管理zk中的节点的数据上限时1M。
client端会对某个znode建立一个watcher事件当该znode发生变化时这些client会收到zk的通知然后client可以根据znode变化来做出业务上的改变等。
## Redis
### 应用场景

Loading…
Cancel
Save