专题1 分布式ID

唯一ID来标识,全局唯一

方案

1.UUID

缺点:1.空间占用多
2.不能生成递增有序的数字,索引效率下降

2.数据库主键自增

缺点:1.并发性能不高,受限于数据库性能
2.分库分表,需要改造,较复杂
3.自增容易泄漏数据量

3.Redis自增

缺点:1.数据丢失
2.自增容易泄漏数据量

4.雪花算法(snowflake)

缺点:时钟回拨

方案总结

1.号段模式

      比如100、200、300...... ,  当第一台服务器申请,获取100,则分配1—100范围的号段;当第二台服务器申请,获取200,则分配101—200范围的号段.........

2.雪花算法

开源组件

1.百度 uid-generator

uid-generator
特点:只支持雪花算法,无人维护

2.滴滴 tinyid

tinyid
特点:只支持数据库号段,多DB,高可用,java-client
适合对id有高可用需求

3.美团 Leaf (推荐)

Leaf
特点:号段模式,需要使用数据库;
雪花算法,使用了zookeeper, 上报服务器标识到zk;
适合多种场景的分布式id

文档中有针对号段模式和雪花算法的代码实践;

专题2 分布式session

1.传统Session

 Cookie和Session  ----  再去熟悉下原理Cookie的跨域问题

2.Spring-Session

Spring-Session-Redis方案的使用
微服务多模块下解决session共享问题
redis.conf文件中的bind参数

3. Token + Redis

token登录验证

4.JWT

jwt的使用
java-jwt
jwt实现拦截器和token认证
Spring拦截器

5.OAuth2

专题3 分布式任务调度

非分布式调度框架

@Scheduled
@Scheduled注解

fixedDelay参数:从上一次任务结束到下一次任务开始的固定时间间隔(毫秒)
fixedRate参数:从上一次任务开始到下一次任务开始之间的时间间隔(毫秒)
cron参数:[秒] [分] [小时] [日] [月] [周]

@Scheduled与多线程

@Scheduled实现多个任务并发执行
@Async注解
@Async注解失效的原因
[@Async注解失效的原因]](https://blog.csdn.net/weixin_43241706/article/details/121555913)

    @Beanpublic ThreadPoolTaskScheduler threadPoolTaskScheduler(){ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();threadPoolTaskScheduler.setPoolSize(10);return threadPoolTaskScheduler;}

分布式调度框架

推荐使用xxl-job

xxl-job

xxl-job调度中心管理界面搭建
xxl-job和springboot的整合

路由策略

xxl-job文档
高级配置:
- 路由策略:当执行器集群部署时,提供丰富的路由策略,包括;
FIRST(第一个):固定选择第一个机器;
LAST(最后一个):固定选择最后一个机器;
ROUND(轮询):;
RANDOM(随机):随机选择在线的机器;
CONSISTENT_HASH(一致性HASH):每个任务按照Hash算法固定选择某一台机器,且所有任务均匀散列在不同机器上。
LEAST_FREQUENTLY_USED(最不经常使用):使用频率最低的机器优先被选举;
LEAST_RECENTLY_USED(最近最久未使用):最久未使用的机器优先被选举;
FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度;
BUSYOVER(忙碌转移):按照顺序依次进行空闲检测,第一个空闲检测成功的机器选定为目标执行器并发起调度;
SHARDING_BROADCAST(分片广播):广播触发对应集群中所有机器执行一次任务,同时系统自动传递分片参数;可根据分片参数开发分片任务;

分片广播----一个任务,分配给多台执行器共同来完成

阻塞处理策略

  • 阻塞处理策略:调度过于密集执行器来不及处理时的处理策略;
    单机串行(默认):调度请求进入单机执行器后,调度请求进入FIFO队列并以串行方式运行;
    丢弃后续调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,本次请求将会被丢弃并标记为失败;
    覆盖之前调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列,然后运行本地调度任务;

专题4 分布式限流

压测工具

Apache Bench (ab) 压测工具

常见限流原理

漏桶算法

令牌桶算法

单机版限流组件:Guava RateLimiter

1.令牌桶算法
guava limiter的使用

分布式限流组件: Sentinel

1.控制台和java客户端
sentinel接入
sentinel的配置及简单使用
sentinel官方文档
sentinel 官方文档
sentinel 主流框架适配
sentinel控制台jar

自定义限流处理逻辑

public class CustomUrlBlockHandler implements BlockExceptionHandler {@Overridepublic void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, BlockException e) throws Exception {//TODO}
}

Sentinel控制台中的流控规则持久化

控制台中的流控规则默认是保存在内存中的,需要自己来实现持久化
在生产环境使用Sentinel

1.Sentinel控制台将流控规则推送到zookeeper

Sentinel流控规则持久化到zookeeper
持久化到zookeeper

2.Zookeeper推送流控规则到Sentinel客户端

分库分表

拆分方式

1.水平拆分
每个表结构都一样
2.垂直拆分
一个多字段的表拆分成多个表

分库分表解决方案

  1. ShardinSphere
  2. Mycat

ShardingSphere

官方文档

分库规则
分表规则

Docker搭建主从数据库

分布式事务

要解决的问题:比如创建订单失败,则商品系统不应该扣减库存。

解决方案:
Seata
分布式事务 Seata 及其三种模式详解
本次分享的视频回顾以及PPT 查看地址

RestTemplate和Seata

@GlobalTransactional
Seata的使用
注:RestTemplate需要Spring托管,不要自己new,不然分布式事务不起作用。

Feign和Seata (生产环境常用)

分布式的各种解决方案相关推荐

  1. cap理论与分布式事务的解决方案

    现在很火的微服务架构所设计的系统是分布式系统.分布式系统有一个著名的CAP理论,即一个分布式系统要同时满足一致性(Consistency).可用性(Availablility)和分区容错(Partit ...

  2. 分布式事务终极解决方案探讨

    2019独角兽企业重金招聘Python工程师标准>>> 分布式事务终极解决方案探讨 转载于:https://my.oschina.net/dslcode/blog/1606115

  3. tcp out of order解决_分布式集群解决方案 学习笔记

    回到目录: OrangeZh:拉勾教育:JAVA高薪训练营 学习技术篇​zhuanlan.zhihu.com 介绍 文章内容输出来源:拉勾教育 Java高薪训练营 分布式集群解决方案相关 什么是分布式 ...

  4. 分布式事务的解决方案

    数据库事务 在说分布式事务之前,我们先从数据库事务说起. 数据库事务可能大家都很熟悉,在开发过程中也会经常使用到.但是即使如此,可能对于一些细节问题,很多人仍然不清楚.比如很多人都知道数据库事务的几个 ...

  5. 谈谈分布式的场景及分布式事务的解决方案

    一.解决java集群的session共享的解决方案: 1.客户端cookie加密.(一般用于内网中企业级的系统中,要求用户浏览器端的cookie不能禁用,禁用的话,该方案会失效). 2.集群中,各个应 ...

  6. 分布式事务一致性解决方案

    一.从数据一致性谈起↑ 一致性问题,"万恶之源"是数据冗余和分布并通过网络交互+网络异常是常态. 1.数据一致性的情形 主库.从库和缓存数据一致性,相同数据冗余,关系数据库,为保证 ...

  7. 分布式事务,EventBus 解决方案:CAP【中文文档】

    前言 很多同学想对CAP的机制以及用法等想有一个详细的了解,所以花了将近两周时间写了这份中文的CAP文档,对 CAP 还不知道的同学可以先看一下 .NET Core 事件总线,分布式事务解决方案:CA ...

  8. 这些分布式事务的解决方案,你都知道吗

    转载自   这些分布式事务的解决方案,你都知道吗 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免. 数据库事务 在说分 ...

  9. 分布式Session共享解决方案

    转载自 分布式Session共享解决方案 Session是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理.单机情况下,不存在Session共享的情况,分布式情况下,如果不进行Sessio ...

  10. Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从

    Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从 参考文章: (1)Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从 (2)https://ww ...

最新文章

  1. 不能从农行服务器获取配置文件,#新手入门#请问,农行网银用的好好的突然出现这个就不能用了怎么解决呢?谢谢...
  2. fatfree-f3小型php框架(二)
  3. iosselect简单使用(三级联动)
  4. 整数区间(信息学奥赛一本通-T1324)
  5. [linux驱动]linux块设备学习笔记(二)
  6. E9表单按钮置灰功能与单元格自定义属性说明
  7. C++ 输入多行以空格分隔的数将其变为数组,动态申请二维数组
  8. 2021-08-3116. 最接近的三数之和 排序+双指针
  9. C#TTS语音播报带背景音乐
  10. R语言 伯努利试验和二项分布
  11. 计算机系统使用寿命,笔记本电脑的使用寿命是多久,你了解吗?
  12. 像差校正的一些常用方法
  13. 不会查看GIT版本历史?快收藏这个工具
  14. Oracle SQL_TRACE使用小结
  15. 前端之vue监测数据改变的原理
  16. 企业年会直播该怎么玩
  17. Shader编程】之十四 边缘发光Shader(Rim Shader)的两种实现形态
  18. ckeditor粘贴上传图片
  19. 一些kaldi常用的术语和命令(二)
  20. Matlab:matlab 画图总结(二维图、饼图、直方图,坐标轴设置)及输出高清晰度图

热门文章

  1. 新书推荐 |《区块链工程实践:行业解决方案与关键技术》
  2. 时间戳转换LocalDateTime输出为1970-01-01T00:00:00Z
  3. pdf转成ppt文件的简单教程?
  4. 乐高机器人linux,乐高机器人
  5. 在家网上娱乐,网上飙歌渐成流行,炎热夏季都市白领的轻松减压十种方法,...
  6. 低代码开发流程是怎么样的?
  7. csp2015-12
  8. matlab运行stata命令,一文读懂108个常用stata命令
  9. 查询出某个字段不重复的记录
  10. 上海linux运维培训,在上海想学习Linux运维去哪里