深入浅出微服务2
1.Feign-》面向接口开发
2.Okhttp
3.HttpClient
4.RestTemplate
Http &Rpc
NIO的实现,针对不同场景使用不同序列化。
分布式实现
1 临时节点、持久化节点
2 watch机制
zookeeper
基于注册中心引入
它的真正用意是什么? 分布式协调组件
google chubby->不开源
分布式一致性问题、分布式锁
GFS -> 存在多个服务
一致性解决方案 -> 服务(chubby)
选举出一个master(类似一个锁)
雅虎->Apache(捐献给zookeeper)
zookeeper设计
- 防止单点故障(设计一个集群(master、slave) leader\follower\observer)
- 数据同步
- leader选举算法(paxos(zookeeper不是使用)-> zab协议(zookeeper使用paxos思想实现的 zab协议)
- 2pc协议:当发送请求后,所有请求都返回确定,才会提交请求,否则会回退
zookeeper:改进的2pc协议,可以理解成进行投票,少数服从多数的思想。
List< ZNode >
private List< ZNode > znode
create/delete/set/get
锁的基本实现
zookeeper的基本特征
1 创建节点
create /node v
a 顺序节点 -s
b 同一级别节点不存在重复
c 创建节点时必须创建全路径
d 临时节点(没有心跳后,会自动删除)
2 删除节点
delete /node
3 修改节点
set /node 3
4 查找节点
#watcher 通过get -w 对节点进行监听
监听事件被被触发后,事件就失效了
负载均衡
- 首先需要拿到目标服务所有地址
- 实现动态感知
命名服务
分布式锁
有序节点、临时节点、唯一性
配置中心
key-value
分布式全局ID
序节点有序新