加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

怎样选型一个吻合的框架-漫衍式使命调治框架选型

发布时间:2019-07-19 23:27:38 所属栏目:建站 来源:Java虫手
导读:1.配景 按时使命是各人再开拓中一个不行停止的营业,好比在一些电商体系中也许会按时给用户发送生日券,一些对账体系中也许会按时去对账。或许再好久早年每个处事也许就一台呆板,再这台呆板上直接搞个Timerschedule根基上就能满意我们的营业需求,可是随
副问题[/!--empirenews.page--]

 1.配景

按时使命是各人再开拓中一个不行停止的营业,好比在一些电商体系中也许会按时给用户发送生日券,一些对账体系中也许会按时去对账。或许再好久早年每个处事也许就一台呆板,再这台呆板上直接搞个Timerschedule根基上就能满意我们的营业需求,可是跟着期间的变迁,单台呆板已经远远不能满意我们的必要,这个时辰我们也许必要10台,20台乃至更多呆板来运行我们的营业,接管我们的流量,这就是我们所说的横向扩展。可是这里就有个题目,这么多台呆板假如还用我们的Timerschedule去做会产生什么呢?再上面的电商体系中有也许会给某个用户发许多张生日券,对公司造成许多丧失,以是我们必要一些其他要领,让按时使命在多台呆板上只执行一次。

怎样选型一个吻合的框架-漫衍式使命调治框架选型

这里想问下各人在没有相识过或行使过漫衍式使命调治框架之前各人是怎样做按时使命的呢?在Spring项目中各人必定都知道Spring-Scheduler,只必要在Spring中的bean的对应要领上加上@Scheduler注解即可完成我们的按时使命,可是光是用这个注解还远远不能担保按时使命执行多次,我们必要一些其他本领的担保,一样平常来说要领也许不过乎下面几种(都是基于Spring的项目来说):

  • 一台呆板,我们可以将一些不太重要的按时使命,可以行使一个专门的处事台承载,然后行使单机跑,就算挂了只要我们再可接管的时刻之内将其规复,我们的营业也不会受到影响。
  • 多台呆板,加漫衍式锁,只要我们执利用命的时辰起首获取一把漫衍式锁,假如获取失败那么久证明有其他处事已经再运行,假如获取乐成那么证明没有处事在运行按时使命,那么就可以执行。
  • 多台呆板,操作ZooKeeper对Leader呆板执行按时使命,有许多营业已经行使了ZK,那么执行按时使命的时辰判定本身是否是Leader,假如不是则不执行,假如是则执行营业逻辑,这样也能到达我们的目标。

今朝我们公司做按时使命也是行使的上面三种要领,在营业初期行使这些要领根基也能概略满意,可是跟着时刻的迁徙,我们碰着的题目越来越多,这里和各人分享一下:

  • 起首是单机题目,怎样分别一个营业不是很重要,这一块原来就较量伟大,有也许每小我私人都说本身的营业都重要,其次是假如单机挂了 这个挂有也许是宕机,有也许是其他的一些环境,这个时刻怎样能担保我们再可接管的范畴之间规复,这些都是难点。
  • 今朝我们行使按时使命的时辰,假如想让它顿时执行一次,这个时辰也许就必要特殊再写一个Rest接口可能再其它写一个单独的Job。
  • 尚有个是我们必要变动按时使命执行时刻,好比此刻有个需求是从每12个小时执行一次酿成每6小时执行一次,我们又得修改代码,提交pr,然后打包上线,只是修改一个时刻又得耗费我们许多时刻。
  • 无法停息我们的按时使命,当我们的按时使命也许呈现一些题目,好比一些按时报警的需求,当报警溘然变得许多,这个时辰必要停息一下让其遏制发送报警,这个时辰也许我们可以用一些漫衍式设置的开关去做,再逻辑中判定按时使命开关是否打开,然其后做。这样做固然也较量简朴,可是我们这样必要新添加一些与使命无关的逻辑。
  • 穷乏对按时使命的监控,使命失败之后开拓职员无从得知,有人说不是有Error日记吗,假如一个Error日记就一次报警那你们的处事能受得了吗,一样平常来说持续屡次Error才会触发报警,而我们按时使命的周期性的特征是不轻易触发持续的Error。

虽然尚有一些或多或少的小题目这里就纷歧一罗列了,假如各人有这种经验可以本身逐步领会发明。

2. 调研的根基原则

上面第一章讲了我们框架的缘故起因,岂论你要引入或改造什么,都必要缘故起因,由于做任何事都有本钱,我常常看到一些很小的项目就开始搞引入动静行列,可能漫衍式事宜等等,这样做反而是舍本逐末,好比也许有一些博客体系就搞个动静行列削峰减流,这样做有也许还没有同法式用来得快。

当我们有了缘故起因之后,就可以着手做一些调研可能技能方案的计划。这里我讲一下我的调研框架一些根基原则,假如各人往后有相同的调研框架的需求都可以往这个内里来套。

  • 简朴-对开拓者接入简朴,对行使者行使简朴。
  • 富厚的文档,有许多开源的项目文档少之又少,虽然尚有一些开源项目只有英文文档,假如你英文不是很行,那也许必要思量中文居多的文档。
  • 有打点界面,很利便执行操纵和统计数据。
  • 支持主流框架:好比Spring,Springboot等,虽然这个至少要支持你们营业中的主流框架。
  • 框架轻量级,利便按照本身的需求举办定制化。
  • 高机能,高靠得住,高可用:不能让框架成为营业中的瓶颈。
  • 代码更新频率和社区行使环境:行使的公司越多证明其越受更多人的喜欢,代码更新频率越高证明呈现题目就会越少,最好是由大厂开源而且维护。
  • 多说话需求:假如在你们营业中有多说话需求,好比你们公司用的开拓说话许多,都必要调治框架那么你必要行使多说话支持。好比Rpc支持多说话的代表就是Thrift。
  • 可否办理当前的痛点:这个是最重要的,假如连你题目都办理不了那行使这个尚有什么意义呢?

当我们有了上述的几大原则之后,我们接下来可以进入调研。

3.调研框架

3.1 TBSchedule

一样平常调研Java系的一些框架,可以先看看阿里是不是有开源的,事实最近这几年阿里在开源这一块做得长短常的好,再网上搜刮到阿里在12年开源了一个调治框架叫TBSchedule,此刻再去搜刮代码,发明已经人走茶凉,代码都被整理干净了。虽然尚有一个小我私人项目将其Fork出来再不绝维护,可是行使者其实是少这里就不声名白。 github地点:github.com/taobao/TBSc…

3.2 elastic-job

elastic-Job 是当当开源的一个漫衍式调治办理方案,由两个彼此独立的子项目 Elastic-Job-Lite 和 Elastic-Job-Cloud 构成。定位为轻量级无中心化办理方案,行使 jar 包的情势提供漫衍式使命的和谐处事。支持漫衍式调治和谐、弹性扩容缩容、失效转移、错过执行功课重触发、并行调治、自诊断和修复等等成果特征。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读