大家好,欢迎来到IT知识分享网。
文章目录
1、分布式ID
1. 雪花算法
2.号段模式
是当下分布式ID生成器的主流实现方式之一,号段模式可以理解为从数据库批量的获取自增ID,每次从数据库取出一个号段范围,例如 (1,1000] 代表1000个ID,具体的业务服务将本号段,生成1~1000的自增ID并加载到内存。
CREATE TABLE id_generator ( id int(10) NOT NULL, max_id bigint(20) NOT NULL COMMENT '当前最大id', step int(20) NOT NULL COMMENT '号段的布长', biz_type int(20) NOT NULL COMMENT '业务类型', version int(20) NOT NULL COMMENT '版本号', PRIMARY KEY (`id`) )
2、分布式session
session不是服务器管理的,是tomact管理的。
session原理:
Spring-session +redis 可实现
JWT实现
jwt配置 #签发者 jwtconfig.issuer: xxx # 密钥 jwtconfig.secret: xxx,xxx # 接收jwt的一方 jwtconfig.audience: light-data # 过期时间,时间戳 jwtconfig.expiresSecond: xxx
3、分布式任务调度
1、QuartZ的使用
1.引入依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>
2、配置项
@Configuration public class JobConfig {
@Resource private UserService userService; @Bean("jobOneDetail") public JobDetailFactoryBean jobOneDetailFactoryBean(JobOne jobOne) {
JobDetailFactoryBean jobDetailFactoryBean =new JobDetailFactoryBean(); jobDetailFactoryBean.setJobClass(jobOne.getClass()); //没有绑定触发器仍然保留在Quartz的JobStore中 jobDetailFactoryBean.setDurability(true); jobDetailFactoryBean.setName("jobOneDetailName"); jobDetailFactoryBean.setGroup("jobOneDetailGroup"); JobDataMap jobDataMap = new JobDataMap (); jobDataMap.put ("userService",userService); jobDetailFactoryBean.setJobDataMap(jobDataMap) ; return jobDetailFactoryBean; } @Bean("jobOneTrigger") public CronTriggerFactoryBean cronTriggerOneFactoryBean(@Qualifier("jobOneDetail") JobDetailFactoryBean jobDetailFactoryBean){
CronTriggerFactoryBean cronTriggerFactoryBean=new CronTriggerFactoryBean(); cronTriggerFactoryBean.setJobDetail(Objects.requireNonNull(jobDetailFactoryBean.getObject())); cronTriggerFactoryBean.setCronExpression("0 0 0/1 * * ? *"); cronTriggerFactoryBean.setName("jobOneTriggerName"); cronTriggerFactoryBean.setGroup("jobOneTriggerGroup"); return cronTriggerFactoryBean; } @Bean("jobTwoDetail") public JobDetailFactoryBean jobTwoDetailFactoryBean(JobTwo jobTwo) {
JobDetailFactoryBean jobDetailFactoryBean =new JobDetailFactoryBean(); jobDetailFactoryBean.setJobClass(jobTwo.getClass()); jobDetailFactoryBean.setDurability(true); jobDetailFactoryBean.setName("jobTwoDetailName"); jobDetailFactoryBean.setGroup("jobTwoDetailGroup"); JobDataMap jobDataMap = new JobDataMap (); jobDataMap.put ("userService",userService); jobDetailFactoryBean.setJobDataMap(jobDataMap) ; return jobDetailFactoryBean; } @Bean("jobTwoTrigger") public CronTriggerFactoryBean cronTriggerTwoFactoryBean(@Qualifier("jobTwoDetail") JobDetailFactoryBean jobDetailFactoryBean){
CronTriggerFactoryBean cronTriggerFactoryBean=new CronTriggerFactoryBean(); cronTriggerFactoryBean.setJobDetail(Objects.requireNonNull(jobDetailFactoryBean.getObject())); cronTriggerFactoryBean.setCronExpression("0 0 0/1 * * ? *"); cronTriggerFactoryBean.setName("jobTwoTriggerName"); cronTriggerFactoryBean.setGroup("jobTwoTriggerGroup"); return cronTriggerFactoryBean; } }
2、XXL-JOB
3、SchedulerX
SchedulerX 是阿里中间件自研的基于 Akka 架构(Akka in SchedulerX 2.0)的新一代分布式任务调度平台,提供定时、任务编排、分布式跑批等功能,具有高可靠、海量任务、秒级调度及可运维等能力。
4、分布式限流
5、分布式数据库
1.ShardingSphere是什么
ShardingSphere是Apache基金会下的一个孵化项目,它是由一套开源的分布式数据库中间件解决方案组成的生态圈,主要关注数据分片、分布式事务和数据库协调。它的前身是Sharding JDBC,Sharding JDBC是当当网发布的一款分布式数据库中间件。
ShardingSphere主要由以下3个产品构成:
●Sharding-JDBC:它的定位为一种轻量级框架,基于传统的JDBC层,并且在此基础上提供了额外的服务,所以他能够兼容其他的Java数据库技术,例如,连接池和ORM框架(如Hibernate和MyBatis等)。当前能够支持MySQL、Oracle、SQLServer和PostgreSQL。
●Sharding-Proxy:它的定位为透明化的数据库代理端,提供封装数据库二进制协议的服务端版本,目前最先提供的是MySQL版本,它可以使用任何兼容MySQL的协议访问客户端(如MySQL Command Client、MySQL Workbench等)操作数据。因为可以代理分布式数据库,所以它对数据库管理员(DBA)会更友好。
●Sharding-Sidecar:这是目前没有发布的组件,它的定位为Kubernetes或Mesos的云原生数据库代理,以DaemonSet的形式代理所有对数据库的访问,它属于新一代网格数据库.
ShardingSphere是一个能够支持分片和分库的轻量级框架,在使用它之前,需要了解它的一些重要概念。
逻辑表:
分表技术是将一个原本存储大量数据的表拆分为具有相同字段但表名不同的一系列表,我们把这一系列表统称为逻辑表。例如,当我们把产品表拆分为表t_product_1、t_product_2、t_product_3……时,把表t_product_1、t_product_2、t_product_3……统称为表t_product,它是一个逻辑概念,不是一个真实存在的表。
真实表:
是指在数据库中真实存在的表,例如,逻辑表概念中谈到的表t_product_1、t_product_2、t_product_3……这些就是真实表,它真实地存在于数据库中。
数据节点
它是ShardingSphere拆分的最小分片单位,它会定位到具体的某个数据库的某张真实表,格式为ds_name.t_product_x,其中ds_name为数据库名称,t_product_x为真实表的名称。
绑定表:
指分片规则下的主表和子表,这个概念有点复杂,后面再解释它。
2、 ShardingSphere的分片
6、分布式事务
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/124857.html