分布式和集群
- 分布式一定是集群,集群不一定是分布式
- 分布式:把一个系统拆分为多个子系统,每个子系统各司其职,独立部署
- 集群:多个实例共同工作
一致性Hash
环的开始是1,结束是2^32-1,首尾相连。服务器的ip进行hash求值,对应到环上的某个位置。客户端请求过来也进行hash求值,按顺时针方向去最近的服务器节点
时钟同步
ntpdate -u ntp.api.bz
分布式id
雪花算法数据结构
- 符号位(1bit),时间戳(41bit),机器id(10bit),序列号(12bit)
定时任务
定时任务形式
每隔一定时间/某一时刻执行
分布式调度
- 运行在分布式集群环境下的调度任务。同一个定时任务部署多份,只有一个定时任务执行。
- 把一个大的作业任务拆分为多个小的作业任务,同时执行
Quartz
- 创建任务调度器
- 创建任务
- 创建任务时间触发器
- 任务调度器根据时间触发器执行任务
// 创建任务调度器
ScheduleFactory factory = new StdScheduleFactory();
Scheduler scheduler = factory.getScheduler();
// 创建任务,DemoJob实现 org.quartz.Job接口
JobBuilder builder = JobBuilder.newJob(DemoJob.class);
builder.withIdentify("jobName","myJob");
JobDetail jobDetail = builder.build();
// 创建任务时间触发器,每隔2s执行
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentify("triggerName","myTrigger")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?"))
.build();
// 任务调度器根据时间触发器执行任务
scheduler.scheduleJob(jobDetail,trigger);
scheduler.start();
Session共享
Session一致性解决方案
- Nginx的IP_Hash策略
- Session复制
- Session集中存储
网友评论