如何选型一个合适的框架 (如何选一个好的)

技术教程 2025-05-07 07:27:44 浏览
如何选一个好的

如何选型一个合适的框架-分布式任务调度框架选型

2019-07-19 15:51:11定时任务是大家再开发中一个不可避免的业务,比如在一些电商系统中可能会定时给用户发送生日券,一些对账系统中可能会定时去对账。

如何选型一个合适的框架 1.背景

定时任务是大家再开发中一个不可避免的业务,比如在一些电商系统中可能会定时给用户发送生日券,一些对账系统中可能会定时去对账。大概再很久以前每个服务可能就一台机器,再这台机器上直接搞个Timerschedule基本上就能满足我们的业务需求,但是随着时代的变迁,单台机器已经远远不能满足我们的需要,这个时候我们可能需要10台,20台甚至更多机器来运行我们的业务,接受我们的流量,这就是我们所说的横向扩展。但是这里就有个问题,这么多台机器如果还用我们的Timerschedule去做会发生什么呢?再上面的电商系统中有可能会给某个用户发很多张生日券,对公司造成很多损失,所以我们需要一些其他方法,让定时任务在多台机器上只执行一次。

这里想问下大家在没有了解过或使用过分布式任务调度框架之前大家是如何做定时任务的呢?在Spring项目中大家肯定都知道Spring-Scheduler,只需要在Spring中的bean的对应方法上加上@Scheduler注解即可完成我们的定时任务,但是光是用这个注解还远远不能保证定时任务执行多次,我们需要一些其他手段的保证,一般来说方法可能不外乎下面几种(都是基于Spring的项目来说):

目前我们公司做定时任务也是使用的上面三种方法,在业务初期使用这些方法基本也能大体满足,但是随着时间的迁移,我们遇到的问题越来越多,这里和大家分享一下:

当然还有一些或多或少的小问题这里就不一一列举了,如果大家有这种经历可以自己慢慢体会发现。

2. 调研的基本原则

上面第一章讲了我们框架的原因,不论你要引入或改进什么,都需要原因,因为做任何事都有成本,我经常看到一些很小的项目就开始搞引入消息队列,或者分布式事务等等,这样做反而是本末倒置,比如可能有一些博客系统就搞个消息队列削峰减流,这样做有可能还没有同步调用来得快。

当我们有了原因之后,就可以着手做一些调研或者技术方案的设计。这里我讲一下我的调研框架一些基本原则,如果大家以后有类似的调研框架的需求都可以往这个里面来套。

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

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 包的形式提供分布式任务的协调服务。支持分布式调度协调、弹性扩容缩容、失效转移、错过执行作业重触发、并行调度、自诊断和修复等等功能特性。

这个框架大概在2年前很火,当时使用的公司很多,想必很多人也听过了,但是很可惜现在已经不在维护了,代码已经有2年没有更新了,这里违反了更新频率的原则,如果出现问题可能都没什么人帮助你,所以我们并不是很推荐使用。 github地址:github.com/elasticjob/…

3.3 一些比较小众的

在网上有一些比较小众的github star很少,更新频率也很少: Uncode-Schedule,LTS,openCron等等,这些也不符合我们的原则,都不予以考虑

3.4 XXL-JOB

由于分布式定时任务现在还没有基金会比如CNCF,Apache等,抉择起来可能不是那么难。不像消息队列再Apache里面就有好几个:Kafka,rocketmq,plusar等等,每一个的社区都很庞大,可能选择是比较困难的。那么我们基本就还剩下两个选择,一个是自研,这种任务调度框架,再研发的困难程度上是远远比不上消息队列的研发,所以其实很多公司都选择了自研,比如:美团的Crane这些。但是对于一些消息队列这些复杂的中间件可能会选择二次开发,比如美团的mafka就是基于kafka二次开发,滴滴的DDMQ也是基于Rocketmq。而我们目前如果选择自研再资源上来说是明显不够的,这里我们还是使用的是二次开发框架的策略。

当然这里还剩下一个XXL-Job:www.xuxueli.com/xxl-job 的选择,其基本符合我们的原则,目前代码也在持续更新,issue作者也在积极的回复,使用的公司也有200多家,其中包括之前的点评,同时其他的原则也很符合。一般来说当你决定选择某个框架的时候需要详细的列举一下优点,好让其他人得以信服。

xxl-job有下面一些特点:

基本上上面的一些特点都是我们业务中所需要的,所以这里最后选择了XXL-JOB

4.总结

俗话说:授人以鱼不如授人以渔,之前的文章每次都是介绍某某框架,这一次我偏向于介绍我是如何选择的这款框架,让大家再以后调研的过程中也可以按照这个思路,如果说你也有好的并且不同的调研思路,欢迎留言或者加群交流。当然一般调研完毕之后,作为一个调研人如果你不弄清楚这个框架的源码和实现原理,那么就是一个不合格的调研人,所以下一篇文章我会详细的介绍XXL-Job的实现原理。


web app 开发使用哪个框架最好

第一款:Sencha TouchSencha Touch 是世界上第一个支持 HTML5 和 CSS3 标准的移动应用框架,你可以使用 HTML5 来编写音频和视频组件,还可以使用 LocalStorage Proxy 来存储离线数据,同时,大量 CSS3 样式表为你提供了创建健壮样式层的可能。 优点用户体验最接近Native App, 具有整体的UI组件、布局解决方案;统一的编程代码结构和要求,良好组织的代码易于维护;继承ExtJS 4的应用程序MVC架构;完善的API文档,示例;活跃的社区,网上有大量的文档书籍帮助学习;缺点兼容性差,仅支持webkit内核的浏览器;框架比较重量级,学习成本比较高;商业化使用有版权问题;第二款:jQuery MobilejQuery Mobile 是创建移动 web 应用程序的框架。 适用于所有流行的智能手机和平板电脑。 使用 HTML5 和 CSS3 通过尽可能少的脚本对页面进行布局。 优点跨浏览器兼容性最好,几乎兼容所有的平台和浏览器;入门简单,语法简洁,编码灵活,一些简单的应用直接用HTML既可实现,无需Javascript;开源插件与第三方扩展网上资源丰富;完善的API文档,示例;活跃的社区,网上有大量的文档书籍帮助学习;缺点jQuery Mobile对代码没有特定的要求,后期维护难度较大;第三款:ZeptoZepto 就是一个 jQuery 的轻量级替代品,几乎完全一样的 API,但是专门为 Mobile 或者 HTML5 浏览器设计和优化。 优点学习成本低,Zepto保持了与jQuery几乎一样的功能,使用gzip压缩只有5-10k;缺点Zepto不支持Windows Phone下的IE ;第四款:Wink Toolkit优点Wink的核心库是轻量级的,支持AMD规范的模块化加载,功能接口相比Zepto更丰富;提供很酷的2D、3D效果UI组件;缺点组件对 Android的支持程度不好,3D组件无法使用 ;第五款:Ionic:高级的 HTML5 移动APP(Web App)开发框架Ionic 是一个用HTML, CSS 跟JS 开发的一个用于移动设备的混合APP 开发框架,采用 Sass与AngularJS 开发。 目前,Ionic 仍然处于临测试状态( alpha )。 相信未来会成为开发者开发 HTML5 应用的一个不错的选择。 第六款:Amaze UI 中国首个开源 HTML5 跨屏前端框架Amaze UI 是一个移动优先的跨屏前端框架。 易学易用。

关于一种雅思作文的结构

额,如果是discuss both sides 的话,disadvantages 和advantages 要分明写,不过如果你是正的disadvantage就少些一点,不要讲的太理直气壮。 conclusion的时候,把advantage强调一下,把dis..反驳一下,然后说自己还是站在支持的观点的,虽然有drawback但可以overcome啦~第一段最后的引用句嘛。 。 。 。 。 可以用apparantly(obviously),there are both benefits and drawbacks for ....或者是one coin always has two sides....

单片机如何选型

单片机的的选型是一件重要而费心的事情,如果单片机型号选择得合适,单片机应用系统就会得经济,工作可靠;如果选择得不合适,就会造成经济浪费,影响单片机应用系统的正常运行,甚至根本就达不到预先设计的功能。 对于一个已经设计好的单片机应用系统来说,它的技术要求和系统功能都应当十分明确.如果选择功能过于少的单片机,这个单片机应用系统就无法完成控制任务;但是如果选择的单片机功能过于强大,这不但没有必要,还会造成资源浪费,不降性能价格比。 只要掌握和运用单片机正确选型的原则,就可以选择出最能适用于应用系统的单片机,保证单片要应用系统有最高的可靠性,最优的性能价格比,最长的使用寿命和最好的升级换代可能。 单片机芯片选型时,总的原则是:“芯片含有(功能或数量)略大于设计需求”,”设计需求尽可能(用)芯片完成(少用外围器件)”,“选大(大厂)不选小,选多(供应量多)不选少,选名(名牌)不选渺(飘渺,不知详情的厂子),选廉(谦价)但要好(质量保证)。 对单片机选型,主要应用从单片机应用系统的技术性,实用性和要开发性三方面来考虑.(1)技术性:要从单片机的技术指标角度,对单片机芯片进行选择,以保证单片机应用系统在一定的技术指标下可靠运行;(2)实用性:要从单片机的供货渠道、信誉程序等角度,对单片机的生产厂家进行选择以保证单片机应用系统在能长期、可靠运行;(3)可开发性:选用的单片机要有可靠的可以开发手段,如程序开发工具、仿真调试手段等。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐