分布式学习十三:实现全局唯一id命名
原创 编程语言

分布式学习十三:实现全局唯一id命名

全局唯一id在单体服务中,我们可以通过数据库的自增id去实现唯一id命名,但是在分布式服务中,分库分表之后,就无法直接使用自增id了,数据库只能保证当前表的id唯一,这个时候我们就需要通过其他方式去生成全局唯一id,例如UUIDUUIDuuid通俗来讲,就是针对于 每个机器/机器的线程/当前的时间戳/伪随机数 作为生成凭据,能保证每个机器下的每个线程都会生成不同的id生成的数据大概为一串无规律的数
阅读全文
分布式学习十一:搭建zookeeper集群
原创 服务架构

分布式学习十一:搭建zookeeper集群

单机部署之前发过一个单机部署教程,集群部署类似,这次我们通过docker-compse进行编排部署http://www.php20.cn/article/sw/z/317 单机安装制作docker镜像由于centos8停止维护了,这次我们选择Ubuntu,新建dockerfile文件:FROM ubuntuARG ZK_VERSION=3.8.0WORKD
阅读全文
分布式学习十:ZAB协议
原创 服务架构

分布式学习十:ZAB协议

ZAB协议ZAB 协议是为分布式协调服务ZooKeeper专门设计的一种支持崩溃恢复的原子广播协议。ZAB协议的开发设计人员在协议设计之初并没有要求其具有很好的扩展性,最初只 是为雅虎公司内部那些高吞吐量、低延迟、健壮、简单的分布式系统场景设计的。在 ZooKeeper的官方文档中也指出, ZAB协议并不像Paxos算法那样,是一种通用的分布式一致性算法,它是一种特别为ZooKeeper设计的崩溃
阅读全文
分布式学习九:Raft算法
原创 服务架构

分布式学习九:Raft算法

raft算法由于paxos算法难以理解,今天来理解下 "易于理解的一致性算法"  raftraft本质是选举领导,领导进行管理日志,实现的一致性算法选举领导每个节点角色都会在以下几种切换:1:领导者2:候选者3:跟随者在服务初始化时,所有节点为跟随者,在没有领导者的情况时,每个跟随者都有权发起候选投票,投票半数赞成后成为领导者选举的详细过程服务初始化启动选举过程:1:
阅读全文
原创 服务架构

分布式学习六:三阶段提交(3PC)

三阶段提交3PC,是Three-Phase Commit的缩写,即三阶段提交,是2PC的改进版,其将二阶段提 交协议的“提交事务请求”过程一分为二,形成了由CanCommit, PreCommit和do Commit 三个阶段组成的事务处理协议.阶段一:CanCommit1:事务询问:协调者向所有的参与者发送一个包含事务内容的canCommit请求,询问是否可以执行事务提交操作,并开始等待各参与者
阅读全文
原创 服务架构

分布式学习五:二阶段提交协议(2PC)

前言在分布式系统中,每个节点都知道自己在事务操作的结果是成功还是失败的,却无法直接获取其他分布式节点的事务结果因此,当一个事务操作需要跨节点时,为了保证事务的ACID特性,就需要引入"协调者(Coordinator)" 的组件来统一调度所有分布式节点的事务处理逻辑,这些被调度的节点称为"参与者(Participant)" 协调者负责调度参与者的行为
阅读全文
原创 服务架构

分布式学习四:ACID理论

ACIDACID,是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)。原子性一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某
阅读全文
本文目录
    Loading...