330面试官:你们是如何保证分布式环境下一个定时任务同一时间只在一台机子上跑的?
Posted huoyingfans
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了330面试官:你们是如何保证分布式环境下一个定时任务同一时间只在一台机子上跑的?相关的知识,希望对你有一定的参考价值。
|
rabbitmq 同一队列多个消费者。或者用db做乐观锁
面试官在抬杠,如果数据库挂了呢,xxljob一样嗝屁。就两种方式,一是利用分布式锁,二是分片,分片有个元数据节点最终一致协议问题,至于实现组件多了去了
|
核心还是分布式锁啊,像zk这种五副本分布式锁宕机,还玩啥啊[大无语]
把你用过的方案都说出来,不要管面试官问啥。他只是想多挖点东西,其实还有多少种他自己都不确定
|
分片是啥呀?有谁教一下嘛?
xxl job
面试官的意思是你用的那些调度方式不好保证ha吧。用xxl job这种分布式调度中间件,有高可用保障
xxl-job的设计原理也得懂才能说的出来才行,我才刚听说这个东西,只说用了这个框架也不行的,当当的那个elastic-job我也说了,还在追问有没有别的方式,麻了都
原理其实都差不多,无非就是用啥锁实现的,redis,db,zk。或者是用队列,airflow这种
xxl-job用了数据库的select for update
serverless
不依赖第三方,完全单机实现,咋弄
用zk选主?
怼他,写个配置当开关
这问得就有问题,核心应该是一条数据怎么只被一台机器上的定时任务消费,不知道为什么他说分片不能解决,他是认为分片需要一台机器来做分发吗?
是的,还是得保证批量的数据每一条只能被执行一次。
redis list不就可以吗,谁pop到了,谁执行
他可能是想问你用数据库的乐观群
quartz可以做分布式定时任务啊
高纬观察者:这个也是数据库里实现的锁
简单粗暴点,指定ip不就可以了。
通过redis选举一个master节点,只有master才能执行任务调度?
楼主:xd看题,不给用分布式锁
LTS,只把任务推给一台机器
k8s cronjob
中心化调度,负载均衡 取第一个进行调度 ,调度后插入队列,队列也可以加丢弃策略。xxl-job的几个核心我都说了。
以上是关于330面试官:你们是如何保证分布式环境下一个定时任务同一时间只在一台机子上跑的?的主要内容,如果未能解决你的问题,请参考以下文章