mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 04:22:22 +00:00
update sd
This commit is contained in:
parent
9bb3d456eb
commit
8ea110260f
@ -53,4 +53,16 @@ redis-cli> sadd order_service.http 100.10.100.11:1002
|
||||
|
||||
上一小节讲的是存储的问题,在服务发现中,还有一个比较重要的命题,就是故障摘除。之所以开源界有很多服务发现的轮子,也正是因为这件事情并不是把 kv 映射存储下来这么简单。更重要的是我们能够在某个服务节点在宕机时,能够让依赖该节点的其它服务感知得到这个“宕机”的变化,从而不再向其发送任何请求。
|
||||
|
||||
最早的解决方案是 zookeeper 的 ephemeral node,java 技术栈的服务发现框架很多是基于此来做故障服务节点摘除。
|
||||
故障摘除有两种思路:
|
||||
|
||||
1. 客户端主动的故障摘除
|
||||
2. 客户端被动故障摘除。
|
||||
|
||||
主动的故障摘除是指,我作为依赖其它人的上游,在下游一台机器挂掉的时候,我可以自己主动把它从依赖的节点列表里摘掉。常见的手段也有两种,一种是靠应用层心跳,还有一种靠请求投票。
|
||||
|
||||
```go
|
||||
```
|
||||
|
||||
被动故障摘除,顾名思义。依赖出问题了要别人通知我。这个通知一般通过服务注册中心发给我。
|
||||
|
||||
被动故障摘除,最早的解决方案是 zookeeper 的 ephemeral node,java 技术栈的服务发现框架很多是基于此来做故障服务节点摘除。
|
||||
|
Loading…
x
Reference in New Issue
Block a user