Spring Batch(一)---我们要飞跃

随着项目的渐渐扩展,微服务的使用,每一个独立服务(我喜欢称为产品)和其他服务直接的业务关系或者数据关系的问题慢慢暴露,我们要处理的问题真的是任重而道远。

一直摸索着微服务里面的各个拐拐角角,不光光是技术。从来没有人告诉我们微服务怎么切分,怎么实施。我们有着强大的理论知识,但是还没有达到“知行合一”。

当我们的服务越来越多,服务和服务之间的数据交叉也会紧跟着会变多,虽然我们保证了每一个服务的独立性,但是对于数据的来源,去处的处理还没有做到完美的解决方案。

我们要抛弃之前的一些处理方式,我们已经抛弃了一个DB,将每一个服务独立成一个DB,保证了数据的独立性。但是对于Batch,我们没做任何的处理,一直在考虑,我们的Batch如何做到很好的切分。

什么是Batch?

Batch俗称批处理。

现在任何一个互联网产品,随着长时间的积累,数据的会随着时间的推移会增长到海量。

对于这些海量数据,任何企业应用或者产品都需要在对于关键数据中进行批量处理来操作业务逻辑。通常这种情况下,此类操作不需要人工参与就能够自动高效惊喜复杂数据处理和分析。例如:银行对账和利率调整或者跨系统数据同步,又或者把内部和外部系统中获得的数据进行批处理以后集成到其他系统中取,这类工作被称为“批处理”。

一个项目里面典型的场景:产品系统从产品数据库中获取数据,经过业务处理后,导出价盘系统中需要的数据到文件中,价盘系统读取该文件,经过业务处理后,最好存处到价盘系统的数据库中。通常这种情况下该动作需要每一个价盘周期结束之前执行,最好保证在价盘周期最后一天的24:00-02:00之间进行,此时对系统的性能影响最小。

典型批处理应用场景

Batch工作在面对复杂的业务以及海量的数据处理时,无需人工干预,仅需定期读入批量数据,然后完成对应业务处理进行归档操作。

典型的批处理应用有如下几个特点:

1)自动执行,根据系统定制的工作步骤自动完成

2)数据量大,少则百万,多则千万甚至上亿

3)定时执行,例如每天执行,每周执行或者每月执行

从这些特点可以看出,批处理的整个流程可以明显的分为3大阶段

1)读取数据,数据可以来自文件,数据库,或者消息队列等等

2)处理数据,处理读取的数据并且形成输出结果,如银行对账系统的资金对账处理

3)写数据,将输出结果写入文件,数据库或者消息队列。

Batch应该要支撑哪些业务场景?

1)定期提交批处理任务

2)并行批处理,即并行处理任务

3)企业消息驱动处理

4)大规模的并行处理

5)手动或定时重启

6)按照顺序处理依赖任务

7)部分处理,如在回滚时忽略记录

8)完整的批处理事务

我们做到哪些?

我一直不太喜欢从对日那边引用过来那套Batch处理方式,我一直不认为那是一套Batch处理服务,对于我而言,那只是一个简单的后台处理服务。因为那只是一个简单的一个Application,然后监控DB Batch表,然后启动指定Batch,然后一个Service里面处理所有的业务操作。我一直很不喜欢这套,但是我又使用这套,因为我没有信心去考虑更好的,只因为在写Batch架构的时候多看了它一眼,让我无法让我忘却。简单,稳定,成熟,有成功案例,就是这么简单的道理,但是当我们在慢慢的使用的时候发现可扩展性很差,无法监控内存,无法监控当前Batch执行情况,无法并行处理等等问题。

对于Batch应该支持的场景,我们到底支持了哪些?除了定时或者手动重启以及完整的批处理事务,我们没有任何优势,性能更别提了,我们可以测试测试百万条数据的性能。

回归正题----Spring Batch

       Spring Batch是一个轻量级的,完善的批处理架构,旨在帮助企业建立健壮,高效的批处理应用,Spring Batch是Spring的一个子项目,使用Java基于Spring架构为基础开发。

       Spring Batch提供了大量可以重用的组件,包括日志,追踪,事务,任务作业统计,任务重启,跳过,重复,资源管理,对于大数据量和高性能的批处理任务,Spring Batch同时提供了高级功能和特性支持,比如分区功能,远程功能。总之,通过Spring Batch能够支持简单的,复杂的和大数据的批处理作业。

        Spring Batch是一个批处理应用框架,不是一个调度框架,但是需要和调度框架合作来构建完整批处理任务。它只关注批处理任务相关问题,例如事务,并发,监控,执行等,但是不提供相应的调度功能。如果需要使用调用框架(Quartz,Tivoli,Control-M,Cron等)。

Spring Batch 批处理框架架构图

为什么选择Spring Batch

1)利用Spring编程模型,使开发者专注于业务处理,让Spring架构管理流程

2)明确分离批处理的执行环境和应用

3)将通用的核心的服务以接口形式提供

4)提供“开箱即用”的简单默认的核心执行接口

5)提供Spring架构中配置,自定义和扩展服务

6)所有默认实现的核心服务能够容易地被扩展与替换,不会影响底层

7)提供一个简单的部署模式,使用Maven进行编译。

黑夜漫眠,无法入眠,本来还想写一个Demo,想想还是下次。为了项目可以很好的使用Spring Batch和Spring Boot进行整合,接下来一段时间会每晚更新成果。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容