330面试官:你们是如何保证分布式环境下一个定时任务同一时间只在一台机子上跑的?

Posted huoyingfans

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了330面试官:你们是如何保证分布式环境下一个定时任务同一时间只在一台机子上跑的?相关的知识,希望对你有一定的参考价值。

面试官:你们是如何保证分布式环境下一个定时任务同一时间只在一台机子上跑的?

我:我们用的redis分布式锁控制的。

面试官:那如果分布式锁服务挂了,或者不用分布式锁,从代码层面怎么做呢?

我:用分片的方式也可以做。

面试官:分片也不能完全解决呀,还有别的方法吗?

我:。。。。

各位脉脉大佬,面试官想问的是什么,才疏学浅,给我整不会了啊

https://maimai.cn/web/gossip_detail/29878742?src=app&webid=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6Mjk4Nzg3NDIsInUiOjE3ODcxMzYzNiwiZWdpZCI6IjI0NmQxOWQ3OGI3MjQ1YjY4OTA0NmUwMTFlMzVhZWZjIn0.rk-7uRve-7pNeu6fi3jtQsRtg2iJvv7WRoupy5Wk5oY&share_channel=2

rabbitmq 同一队列多个消费者。或者用db做乐观锁

面试官在抬杠,如果数据库挂了呢,xxljob一样嗝屁。就两种方式,一是利用分布式锁,二是分片,分片有个元数据节点最终一致协议问题,至于实现组件多了去了

元数据节点是啥

节点元数据,打错了,比如哪个节点活着,哪个节点挂了,分别都保存哪些slot

这两种方式确实比较常用

核心还是分布式锁啊,像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面试官:你们是如何保证分布式环境下一个定时任务同一时间只在一台机子上跑的?的主要内容,如果未能解决你的问题,请参考以下文章

面试官:高并发场景下,你们是怎么保证数据的一致性的?

面试官:如何保证定时任务的执行顺序呢?

分布式缓存的面试题11

字节跳动面试官问:微服务下如何保证分布式事务的最终一致性?

面试官问:分库分表后,你们是怎么迁移和部署上线的?怎么保证一致性?

面试官:分布式环境下,如何实现session共享