首页IT科技dubbo服务发布原理(分布式专题 – Dubbo + Zookeeper)

dubbo服务发布原理(分布式专题 – Dubbo + Zookeeper)

时间2025-04-28 01:12:31分类IT科技浏览4739
导读:雪花算法的原理...

雪花算法的原理

第一位符号位固定为0            ,41位时间戳                   ,10位workld      ,12位序列号         ,位数可以有不同实现

优点:

每个毫秒值包含的ID值很多                   ,不够可以变动位数来增加          ,性能佳 (依赖workld的实现)            。.时间戳值在高位      ,中间是固定的机器码                  ,自增的序列在低位             ,整个ID是趋势递增的                   。0能够根据业务场景数据库节点布置灵活调整bit位划分   ,灵活度高      。

缺点:

强依赖于机器时钟                  ,如果时钟回拔                ,会导致重复的ID生成,所以一般基于此的算法发现时钟回拨               ,都会抛异常.

处理                   ,阻止ID生成   ,这可能导致服务不可用         。

为什么Zookeeper可以用来作为注册中心

可以利用Zookeeper的临时节点和watch机制来实现注册中心的自动注册和发现            ,另外Zookeeper中的数据都是存在内存中的                   ,并且Zookeeper底层采用了nio      ,多线程模型         ,所以Zokeeper的性能也是比较高的                   ,所以可以用来作为注册中心          ,但是如果考虑到注册中心应该是注册可用性的话      ,那么Zookeeper则不太合适                  ,因为Zookeeper是CP的             ,它注重的是一致性   ,所以集群数据不-致时                  ,集群将不可用                ,所以用Redis             、Eureka                  、Nacos来作为注册中心将更合适                   。

数据库实现分布式锁的问题及解决方案

利用唯一约束键存储key,insert成功则代表获取锁成功               ,失败则获取失败                   ,操作完成需要删除锁问题:

非阻塞   ,锁获取失败后没有排队机制            ,需要自己编码实现阻塞                   ,可以使用自旋      ,直到获取锁;

不可重入         ,如果加锁的方法需要递归                   ,则第二次插入会失败          ,可以使用记录线程标识解决重入问题;

死锁      ,删除锁失败      、则其他线程没办法获取锁                  ,可以设置超时时间          、使用定时任务检查.

数据库单点故障             ,数据库高可用          。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
悟空问答答案在哪里(什么答题可以赚钱-网上最靠谱的赚钱方法,操作悟空问答日赚200+) 引号之间打不打顿号(Word中引号不能成对输入)