原创 服务架构 分布式学习十四:etcd实现服务注册/发现 架构图注册/发现流程图代码代码地址:https://github.com/tioncico/etcd_service-registry-discovery 2022-04-15 浏览(1) 评论(0) 阅读全文
原创 编程语言 分布式学习十四:协调任务 分布式协调/通知服务mysql备份数据时,我们会通过读取binlog方式备份,但是如果当从服务器宕机时,则备份就会停止,我们可以通过zookeeper实现分布式协调备份主服务进行备份提交,其他服务监听主服务器状态,如果宕机失去联系,则替代主服务进行工作.实现原理在zookeeper节点结构如下:test└── customBackUp 2022-04-02 浏览(1) 评论(0) 阅读全文
原创 编程语言 分布式学习十三:实现全局唯一id命名 全局唯一id在单体服务中,我们可以通过数据库的自增id去实现唯一id命名,但是在分布式服务中,分库分表之后,就无法直接使用自增id了,数据库只能保证当前表的id唯一,这个时候我们就需要通过其他方式去生成全局唯一id,例如UUIDUUIDuuid通俗来讲,就是针对于 每个机器/机器的线程/当前的时间戳/伪随机数 作为生成凭据,能保证每个机器下的每个线程都会生成不同的id生成的数据大概为一串无规律的数 2022-03-26 浏览(1) 评论(0) 阅读全文
原创 编程语言 分布式学习十二:zookeeper实现数据订阅/发布 数据订阅/发布在分布式集群中,假设数据库发生了改动,就得修改所有分布式服务的数据库配置我们可以通过zookeeper来实现数据库配置的订阅发布我们先初始化数据库配置项环境在zookeeper配置以下数据[zk: localhost:2181(CONNECTED) 51] get /config-server/app1/database{"Hos 2022-03-23 浏览(1) 评论(0) 阅读全文
原创 服务架构 分布式学习十一:搭建zookeeper集群 单机部署之前发过一个单机部署教程,集群部署类似,这次我们通过docker-compse进行编排部署http://www.php20.cn/article/sw/z/317 单机安装制作docker镜像由于centos8停止维护了,这次我们选择Ubuntu,新建dockerfile文件:FROM ubuntuARG ZK_VERSION=3.8.0WORKD 2022-03-12 浏览(1) 评论(0) 阅读全文
原创 服务架构 分布式学习十:ZAB协议 ZAB协议ZAB 协议是为分布式协调服务ZooKeeper专门设计的一种支持崩溃恢复的原子广播协议。ZAB协议的开发设计人员在协议设计之初并没有要求其具有很好的扩展性,最初只 是为雅虎公司内部那些高吞吐量、低延迟、健壮、简单的分布式系统场景设计的。在 ZooKeeper的官方文档中也指出, ZAB协议并不像Paxos算法那样,是一种通用的分布式一致性算法,它是一种特别为ZooKeeper设计的崩溃 2022-03-09 浏览(1) 评论(0) 阅读全文
原创 服务架构 分布式学习九:Raft算法 raft算法由于paxos算法难以理解,今天来理解下 "易于理解的一致性算法" raftraft本质是选举领导,领导进行管理日志,实现的一致性算法选举领导每个节点角色都会在以下几种切换:1:领导者2:候选者3:跟随者在服务初始化时,所有节点为跟随者,在没有领导者的情况时,每个跟随者都有权发起候选投票,投票半数赞成后成为领导者选举的详细过程服务初始化启动选举过程:1: 2022-03-03 浏览(1) 评论(0) 阅读全文
转载 服务架构 转载:分布式学习八:Raft 算法 前言我们之前讲述了 Paxos 一致性算法,虽然楼主尝试用最简单的算法来阐述,但仍然还是有点绕。楼主最初怀疑自己太笨,后来才直到,该算法的晦涩难懂不是只有我一个人这么认为,而是国际公认!所以 Paxos 算法在 1990 就发表出来,但却得不到运用。真正的名声大噪还是在兰伯特使用 “更简单” 的方式重写了一篇论文才开始。这些和今天说的 Raft 有什么关系呢?答:Raft 也是一个一致性算法,和 2022-03-02 浏览(1) 评论(0) 阅读全文
原创 服务架构 分布式学习七:一致性算法:Paxos算法 Paxos算法世界上只有一种一致性算法,就是 Paxos这个难懂,不写了,附带博客链接:https://www.cnblogs.com/linbingdong/p/6253479.html 2022-03-02 浏览(1) 评论(0) 阅读全文
原创 服务架构 分布式学习六:三阶段提交(3PC) 三阶段提交3PC,是Three-Phase Commit的缩写,即三阶段提交,是2PC的改进版,其将二阶段提 交协议的“提交事务请求”过程一分为二,形成了由CanCommit, PreCommit和do Commit 三个阶段组成的事务处理协议.阶段一:CanCommit1:事务询问:协调者向所有的参与者发送一个包含事务内容的canCommit请求,询问是否可以执行事务提交操作,并开始等待各参与者 2022-03-01 浏览(1) 评论(0) 阅读全文