分布式架构
文章平均质量分 69
Coding到灯火阑珊
Coding
展开
-
十,分布式链路追踪
链路追踪 ZipkinZipkin是 Twitter 的一个开源项目,基于 Google Dapper实现。使用它来收集各个服务器上请求链路的跟踪数据,及时地发现系统中出现的延迟问题,找出系统的性能瓶颈。项目中应用完整代码:https://github.com/Justin02180218/micro-kit配置文件zipkin: url: "http://zipkin-server:9411/api/v2/spans" service_name: "user-原创 2021-10-07 11:03:48 · 1317 阅读 · 0 评论 -
九,自写网关(library-apigateway)
网关 library-apigateway,接口访问的统一入口。通过 consul 获取注册的微服务的某一个实例,发起访问请求。如图:完整代码:https://github.com/Justin02180218/micro-kit包结构目前网关的功能只是做接口转发,所以只有一个 transport 层。代码实现配置文件server: port: 80 mode: debug name: "apigateway" cons...原创 2021-10-04 16:27:16 · 1385 阅读 · 0 评论 -
八,熔断、降级
熔断器 Hystrix-gohystrix-go是用go实现的hystrix版,提供了基础的熔断、降级功能。项目中应用完整代码:https://github.com/Justin02180218/micro-kit在 pkg 下新建目录 circuitbreakers,创建 hystrix.go 文件:代码如下:import "github.com/afex/hystrix-go/hystrix"func Hystrix(commandNam原创 2021-09-29 22:51:20 · 978 阅读 · 1 评论 -
七,服务注册与发现
Consul 介绍服务注册与发现采用 consul 组件,是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案等。Consul使用gossip协议管理成员关系、广播消息到整个集群,他有两个gossip pool(LAN pool和WAN pool),LAN pool是同一个数据中心内部通信的,WAN pool是多个数据中心通信的,LAN pool有多个,WAN pool只有一个。..原创 2021-09-25 12:12:45 · 1856 阅读 · 0 评论 -
分布式高可用-负载均衡-3 一致性哈希(有限负载、虚拟节点)
一致性哈希先构造一个长度为2^32的一致性Hash环,根据服务器节点地址(ip+port)的Hash值将服务器节点映射到这个Hash环上,然后根据用户请求的Key值(用户ID)计算得到其Hash值,接着在Hash环上按顺时针或逆时针查找距离这个Key值的Hash值最近的服务器节点,由该服务器节点处理此次用户请求。如图:一致性哈希是对普通哈希的改进,有效的解决了稳定性的问题。当服务器节点加入或退出时,只影响该节点在哈希环上顺时针相邻的后继节点。即当加入一个服务器节点时,原来分配到后继节点的一部原创 2020-07-02 09:33:40 · 648 阅读 · 0 评论 -
分布式选举-ZAB算法-2 Leader选举 代码实现
ZAB Leader选举实现设定集群中有3个节点,通过ZAB算法实现选主。节点之间的通信使用的是自我实现的Remoting组件,基于Netty开发,可以以同步,异步的方式发起通信。在后续《分布式通信》系列的文章中,会向大家详细分析Remoting组件。分布式选举的项目名称:justin-distribute-election整体结构如图:主要Package说明:callback:异步请求消息的回调处理器集合client:数据存取接口message:投票、心跳等消息..原创 2020-05-18 14:35:05 · 658 阅读 · 0 评论 -
分布式选举-ZAB算法-1 Leader选举 原理
ZAB(Zookeeper Atomic Broadcast)算法是Zookeeper为了实现分布式协调及数据一致性而设计的算法。相对于Raft算法,ZAB算法除了投票机制,还增加了节点ID和数据ID的比较来优先选主。此系列文章先来分析ZAB Leader选举的原理及实现,在后续《分布式数据复制》的系列文章中,我们再回过头来实现ZAB算法的分布式数据复制功能。Leader选举:选举原则:在同一任职周期内,节点的数据ID越大,表示该节点的数据越新,数据ID最大的节点优先被投票。所有节点..原创 2020-05-11 16:38:11 · 1015 阅读 · 0 评论 -
分布式选举-Raft算法-2 Leader选举 代码实现
Raft Leader选举实现设定集群中有5个节点,通过Raft算法实现选主。节点之间的通信使用的是自我实现的Remoting组件,基于Netty开发,可以以同步,异步的方式发起通信。在后续《分布式通信》系列的文章中,会向大家详细分析Remoting组件。分布式选举的项目名称:justin-distribute-election整体结构如图:主要Package说明:...原创 2020-05-07 15:35:03 · 1037 阅读 · 3 评论 -
分布式选举-Raft算法-1 Leader选举 原理
Raft理论是分布式数据一致性算法,为了便于理解Raft算法分成了4个部分: Leader选举 日志复制 成员变更 日志压缩 此系列文章先来分析Raft Leader选举的原理及实现,在后续《分布式数据复制》的系列文章中,我们再回过头来实现Raft算法的其他功能。Leader选举:选举原则:典型的投票选举算法(少数服从多数),也就是说,在一定周...原创 2020-05-03 23:09:24 · 915 阅读 · 0 评论 -
分布式选举-Bully算法-2 代码实现
Bully 算法实现设定集群中有三个节点,通过Bully算法实现选主。节点之间的通信使用的是自我实现的Remoting组件,基于Netty开发,可以以同步,异步的方式发起通信。在后续《分布式通信》系列的文章中,会向大家详细分析Remoting组件。分布式选举的项目名称:justin-distribute-election整体结构如图:节点和集群类:...原创 2020-04-29 10:36:12 · 1309 阅读 · 2 评论 -
分布式选举-Bully算法-1 原理
分布式选举在大型分布式系统中,会存在多个特定功能的集群。最常见的就是协调者集群,如提供分布式锁,分布式事务的协调者集群。集群中的多个机器对外提供统一的状态、一致的数据,这就需要在集群中选择一个主节点(领导者),来管理集群中的其他节点(跟随者)。这个选择主节点的过程就叫做分布式选举。分布式选举的算法有Bully算法、Raft算法、ZAB算法等。我们先来分析Bully算法的原理及实现,后续文章...原创 2020-04-24 22:49:31 · 1329 阅读 · 0 评论