分布式甲骨文(自测版)

文章目录

          • 1.分布式Id的生成方案有哪些
          • 2.雪花算法生成Id由那些部分组成
          • 3.分布式锁在项目中有哪些应用场景
          • 4.分布式锁有哪些解决方案
          • 5.Redis做分布式锁用什么命令
          • 6.Redis做分布式锁死锁有哪些情况,如何解决
          • 7.Redis如何做分布式锁
          • 8.Mysql如何做分布式锁
          • 9.什么是分布式系统中的幂等
          • 10.幂等技术的解决方案(复习)
          • 11.分布式微服务项目设计
          • 12.分布式架构下,Session有什么共享方案(空)

注: 自测

1.分布式Id的生成方案有哪些
1.UUID:通用唯一标识码,分布式系统所有元素唯一辨识信息
	缺点:占用空间大
2.Mysql自增:Mysql数据库设置主键自增
	缺点:分表分库复杂,数据容易泄露
3.Redis自增:Redis计数器
	缺点:数据容易丢失,容易泄露
4.雪花算法:分布式Id经典解决方案
	优点:不依赖外部组件,性能好
2.雪花算法生成Id由那些部分组成
1.符号位:占用12.时间戳:占用41位(可支持69年时间跨度)
3.机器Id:占用104.序列号:占用12
3.分布式锁在项目中有哪些应用场景
1.同时访问:如文件
2.操作共享资源:同时操作一条数据
3.系统是一个分布式系统
4.分布式锁有哪些解决方案
1.Redis锁
2.zookeeper 顺序,临时锁
	临时锁:在于zookeeper建立连接时,会生成一把临时锁,其他数据不能操作,结束时,临时锁释放
	顺序锁:A创建一号节点,B创建二号节点,按顺序先执行一号节点,在执行二号
3.基于数据库:如Mysql(主键或唯一索引)
5.Redis做分布式锁用什么命令
set key value nx ex 50000
nx:代表该value设置为key,如果key存在,则设置不成功
ex:代表存在时间
如果设置时间到了 然而程序没有执行完,可以加入watch dog,来延长时间
delete key 释放锁
6.Redis做分布式锁死锁有哪些情况,如何解决
1.delete key 释放锁
2.设置ex时间 过期自动释放
7.Redis如何做分布式锁
AB服务
1.A服务向Redis发出命令
	set key value1 nx ex 30000
2.B服务向Redis发出命令
	set key value2 nx ex 30000
	同名key设置不成功,进入循环请求
3.A超过30秒,key超时释放锁,此时B获得锁,如果A没有执行完,对key进行续期
4.A执行完,释放锁,判断value1是否与Redis的value1一致,确定是A的value,删除key
8.Mysql如何做分布式锁
DB分布式锁:假如同时执行了插入id=1的数据,其他插入进行等待,id=1存在,那么其他插入id=1的语句执行失败,需要将id=1的数据删除,才能+执行操作
9.什么是分布式系统中的幂等
执行某一操作,执行了好多次,最后结果不变
如:查询,删除,set固定值
10.幂等技术的解决方案(复习)
1.提交向服务器申请token,将token放在Redis或者JVM中,设置token有效时间
2.后端校验token时,同时删除token,生成新的token
特点:一次性有效,可以限流
11.分布式微服务项目设计
1.负载层:nginx负载均衡,网关
2.业务层:api					日志	权限
3.能力层:模块,中间件,缓存,	日志	权限
4.存储层:mysql,redis
5.运行环境:阿里云,docker,linux
12.分布式架构下,Session有什么共享方案(空)
在这里插入代码片

你可能感兴趣的:(分布式,数据库,java)