1.1 分布式和集群
分布式一定是集群,但是集群不一定是分布式。
单体应用:所有服务写在一个机器上。(用户、支付、物流、商品)。
分布式:各个子系统是一个服务。(拆分系统)
集群:多个实例一起工作。
分布式一定是集群,集群不一定是分布式
1.2 一致性Hash算法
HD5(加密)
普通hash算法存在的问题
- 浪费空间
- 相同内容,存不了同样的数据
改进:
1,6,7,8 对5 取余数
1)可以对数区模运算
2)开放寻址法。
如果空闲,可以向前、先后找空闲
3)拉链法
横向放不下,纵向放置链表
4)除留余数法
H = H*a + x%b
1.3 Hash算法负载均衡算法应用
应用场景
1)负载均衡(Nginx)
ip或者sessionid跟机器数区模运算,可以实现会话粘滞
分布式存书(redis)
hash(key)%3=index
1.4 一致性hash算法
1)1~2**32-1 组成一个闭合环。
2)集群ip地址求hash值hash(ip),
3)顺时针算 hash(user)最近的 hash(ip)
1.6 扩容,缩容
1)普通hash算法如果扩容,缩容 % 服务器数目的话,所有节点都要重新算,重新分配
2)一致性hash算法只影响从 服务器hash(ip1) ~ hash(ip2)之前的逆时针用户
1.7 一致性Hash虚拟节点
如果够成的Hash环分布不均匀容易有数据倾斜问题。可以用虚拟节点解决。
虚拟节点:对现有ip计算多个hash值。(好像这个hash环增加了ip一样)
2.1 时钟不同步问题
可以从前向后带时间
可以设置为处理的服务器时间
可以选一个服务器用来记录时间
数据混乱。
3.1 为什么需要分布式ID
可能导致数据重复
3.2 分布式ID生成方案 UUID
直接用java带的接口。缺点:太长,没规律
3.3 分布式ID生成方案数据库方式
去找一个数据库。有一张表,需要的时候就插入一个记录,生成一个唯一id
3.3 分布式ID生成方案雪花算法
时间戳+机器码+随机数
4.1 分布式调度问题
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。