资讯专栏INFORMATION COLUMN

modular项目介绍

Bamboy / 1208人阅读

摘要:项目介绍简单地多模块项目,模块间通过进行消息传递,使用作临时存储作缓存作最终数据存储。

modular 项目介绍

简单地多模块项目,模块间通过kafka进行消息传递,使用Mysql作临时存储、Redis作缓存、MongoDB作最终数据存储。
项目代码获取:https://github.com/pysasuke/m...

项目结构

modular-common(公用模块)

modular-common-base(简单公用类)

modular-common-database(Mysql相关模块)

modular-common-kafka(Kafka相关模块)

modular-common-mongo(MongoDB相关模块)

modular-common-redis(Redis相关模块)

modular-handler(请求处理模块)

modular-first(第一部分服务模块)

modular-second(第二部分服务模块)

modular-third(第三部分服务模块)

modular-exhandler(异常数据处理模块)(补偿机制)

基本流程

由于只是demo,故只用简单地first、second、third指代具体服务,切以third服务为最终服务,handler也是使用手动构造的数据

请求发起

经handler模块后

向Mysql写入一条数据

向Redis写入一条数据

向Kafka发送一条消息

first模块收到handler模块发送的消息后

从Redis取出对应数据并校验

成功后修改Mysql数据

修改Redis数据

向Kafka发送一条消息

second模块接收到first模块的发送的消息后

从Redis取出对应数据并校验

成功后修改Mysql数据

修改Redis数据

向Kafka发送一条消息

third模块接收到second模块的发送的消息后

从Redis取出对应数据并校验

成功后向MongoDB写入一条数据

删除Redis数据

删除Mysql数据

exhandler模块为补偿机制

按照一定的策略处理Mysql中遗留的错误数据(正常情况所有数据都将转移到MongoDB中)

项目启动

执行deploy中update.sql创建record表

替换modular-common-database中application.properties配置文件中的相关参数为自己的Mysql参数

替换modular-common-redis中application.properties配置文件中的相关参数为自己的Redis参数

替换modular-common-mongo中application.properties配置文件中的相关参数为自己的MongoDB参数

修改modular-common-base中KafkaConstants类中BOOTSTRAP_SERVERS常量为自己Kafka地址(由于只是demo,故未做成配置文件)

启动相关服务

正常流程

modular-handler(请求处理模块)

modular-first(第一部分服务模块)

modular-second(第二部分服务模块)

modular-third(第三部分服务模块)

补偿机制

modular-exhandler(异常数据处理模块)

结果预测

modular-first:输出 first service complete

modular-second:输出 second service complete

modular-third:输出 third service complete

MongoDB中写入了一条数据

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19176.html

相关文章

  • modular项目介绍

    摘要:项目介绍简单地多模块项目,模块间通过进行消息传递,使用作临时存储作缓存作最终数据存储。 modular 项目介绍 简单地多模块项目,模块间通过kafka进行消息传递,使用Mysql作临时存储、Redis作缓存、MongoDB作最终数据存储。项目代码获取:https://github.com/pysasuke/m... 项目结构 modular-common(公用模块) modul...

    jzzlee 评论0 收藏0
  • 提升你的CSS姿势

    摘要:父类为,代表着一系列文章的列表。对于可读性较好地与代码,不应该像一本书,而应该像一个故事,一个故事中会存在角色和角色之间的关系,而这种更多的语义化地可以较好地提示你整个代码的可维护性。无论哪种文件组织方式比较顺眼,你都应该遵循统一的原则。 原文地址。本文从属于Web 前端入门与最佳实践。 CSS的学习是一个典型的低门槛,高瓶颈的过程,第一次接触CSS的时候觉得一切是如此简单,直到后面越...

    dingding199389 评论0 收藏0
  • [译] HTML5 媒体源扩展(MSE):把影视制作级别的视频格式带入 Web

    摘要:还有一个值得关注的是加密媒体扩展标准其支持用原生和开发播放加密视频。专业流媒体发布商将无法依靠微软的技术在和安卓设备上的火狐来加密自己的内容。因此,不同的系统组合,如用于和安卓的,用于和的,还有用于的。 英文原文:HTML5 Media Source Extensions: Bringing Production Video To The Web 在过去的十几年,像Flash和Silv...

    Allen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<