Dubbo+Zookeeper知识点总结

分布式与微服务

https://www.funtl.com/zh/guide/Apache-Dubbo.html
Dubbo是RPC通信框架,而不是微服务架构解决方案。 zookeeper+Dubbo才能成为微服务架构解决方案。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

分布式锁

​ 分布式协调技术,主要用来解决分布式环境中,多个线程的同步控制,让他们有序的访问临界资源,防止造成脏数据的后果。

zookeeper就是一种分布式协调技术,本质上是利用**分布式锁**。

在这里插入图片描述

分布式锁对象是进程

可以利用redis或者zookeeper来实现分布式锁,但redis本质并不是拿来实现分布式锁的,仅仅是利用了他的单线程处理。

redis分布式锁

在这里插入图片描述

获得锁:某一个进程获得资源后,就会去redis里setnx(此服务,value),这就是加锁。

两大问题:非原子性操作和误删锁

原子性操作:setnx和expire两个命令必须同时执行,要么不要执行。redis2.6提供了set(key,value,expire),保证原子性

误删锁:
    JVM1 ->set(商品1,1,30)
    结果在30秒内,JVM1工作没有完成,reids因锁过期删除(商品1,1)
    JVM2 ->set(商品1,1,30)
    JV1工作结束 -> del(商品1,1),结果删除了jvm2的锁
    
    解决方法
    set(商品1,threadID,expire) 删除前判断是否是此线程的锁
    守护线程:
    JVM中同时有处理线程与守护线程
    守护线程快到expire时间时,加入处理线程没有处理完成,他会向redis中增加expire时间,从而延时
    
    

在这里插入图片描述

zookeeper数据结构

在这里插入图片描述
在这里插入图片描述
每个节点最多只能存1MB数据
Znode 分为四种类型:
持久节点(PERSISTENT)
默认的节点类型。创建节点的客户端与 Zookeeper 断开连接后,该节点依旧存在。

持久节点顺序节点(PERSISTENT_SEQUENTIAL)
所谓顺序节点,就是在创建节点时,Zookeeper 根据创建的时间顺序给该节点名称进行编号
在这里插入图片描述

临时节点(EPHEMERAL)
和持久节点相反,当创建节点的客户端与 Zookeeper 断开连接后,临时节点会被删除:

临时顺序节点(EPHEMERAL_SEQUENTIAL)
顾名思义,临时顺序节点结合和临时节点和顺序节点的特点:在创建节点时,Zookeeper 根据创建的时间顺序给该节点名称进行编号;当创建节点的客户端与 Zookeeper 断开连接后,临时节点会被删除。Zookeeper的分布式锁就是利用了临时顺序节点,临时顺序节点里存放的是临界资源

Zookeeper事件通知

Zookeeper 客户端在请求读操作(exists,getData,getChildre)的时候,可以选择是否设置 Watch。设置watch则是启动服务通知。客户端(即一个调用服务的jvm进程)调用 getData 方法,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值