
获得徽章 7
- 如果自己实现一个任务调度,需要从哪些方面去入手呢?是否需要考虑重复调度、任务扫描间隔、触发时机判断、任务调度的路由和负载均衡、以及任务之间的隔离等问题。
来看看XXL-JOB是如何解决这些问题的吧!赞过11 - XXL-JOB作为一款分布式的任务调度中间件,是通过集中式的调度中心对分布式的执行器进行任务调度来完成的定时任务。
那么,执行器运行的过程中停机或宕机了,调度中心还会去调用这个执行器吗?
如果有新的执行器上线了,调度中心又是如何调用到新的执行器的呢?
实际上,XXL-JOB在调度中心维护了一个 注册中心,提供了注册和注销接口,并配合自身的探活线程,共同维护活跃状态的执行器列表,从而获得了对执行器上下线感知的能力。
来看看它的实现原理吧展开赞过评论1 - 将Docker容器中的数据持久化到主机中有三种方式,前两种是持久化到硬盘中,后一种是持久化到主机内存(一般不用),分别是volume与bind mount,它们之间有什么区别呢?
volume是由Docker来管理的,可以使用 docker volume相关的api指令来进行操作,可以在挂载的时候自动创建一个主机文件路径,使用volume,就等于是创建了一块与主机中其他文件或目录隔离的空间,专用于某个(某些)容器做文件的同步。
而bind mount需要明确的指定一个主机的文件路径,需要注意的是,这个路径是可以任意指定的,哪怕是一些重要的文件路径。一旦挂载完成,通过Docker容器中的文件变更就可以影响到主机目录下的文件变更,这具有一定的风险性,所以在选择主机路径的时候需要注意不要选择重要文件目录。
如何做选择呢?
虽然两者都的数据同步都是双向的,但是volume一般是由容器向主机同步,而bind mount更多的是由主机向容器同步。
也就是说,volume更加适合与保存容器中的应用运行时产生的数据,如mysql、redis的数据文件。
bind mount更适合将容器中应用需要使用到的配置文件,由主机同步到容器中,例如Nginx的conf文件。展开赞过评论1