场景实战Demo使用指引

个人之前学习过程中对JarsLink模块化场景使用做了一些Demo放在github上,用兴趣的同学可以了解下

Quickstart 快速开始

git clone https://github.com/Evan43789596/jarslink-in-action.git
cd jarslink-in-action/module-main/
mvn clean package
java -jar target/module-main-0.0.1-SNAPSHOT.jar

Let’s start: http://localhost:8080


Demo说明

本Demo基于简单的案例引导大家举一反三学会使用JarsLink用于日常工作,本教程目前提供如下情景Demo演示:

- (情景一)工作流业务特性逻辑动态处理:模拟消费金融相似的风控审核流程,基于不同的产品,路由到对应产品的模块Jar去执行特性逻辑

- (情景二)在线动态切换缓存:模拟在线不停机切换底层缓存框架

- (情景三)插拔式增删功能:模拟日常工作中一些功能可以在线不停机插拔式添加和下架(未完成)

模块说明

module-main 核心模块,用于加载模块JAR包,对外提供服务

workflow-module-taobao 【工作流业务特性逻辑动态处理演示模块】用于模拟处理taobao产品业务逻辑的Jar包

workflow-module-tencent 【工作流业务特性逻辑动态处理演示模块】用于模拟处理tencent产品业务逻辑的Jar包

cache-module-api 【缓存情景演示模块】用于存放缓存模块的公用组件的Jar包

cache-module-memory 【缓存情景演示模块】用于模拟执行内存操作的Jar包

cache-module-mongodb 【缓存情景演示模块】用于模拟执行MongoDb操作的Jar包

cache-module-redis 【缓存情景演示模块】用于模拟执行redis操作的Jar包


使用说明

启动com.eshare.ModuleApplication后

default:http://localhost:8080/

首页会看到如下界面:

准备工作:

使用前创建目录:D:\upload\lib和D:\upload\process

情景一环境部署

情景说明:

本demo通过 “workflow-module-taobao” 和 “workflow-module-tencent” 分别去模拟处理两个产品不同业务特性请求

使用步骤:

  • 将项目process目录下的流程common_risk_approval_process.uflo.xml放在D:\upload\process目录下



  • 使用Mave命令 “mvn package” 分别对workflow-module-taobao和workflow-module-tencent两个模块打包,

    生成workflow-module-taobao-0.0.1.jar和workflow-module-tencent-0.0.1.jar文件







  • 运行 “ModuleApplication”

  • 输入http://localhost:8080/会看到如下界面

  • 选择场景一,进入演示场景,会显示如下界面:

  • 分别上传之前打包好的模块包workflow-module-taobao-0.0.1.jar和workflow-module-tencent-0.0.1.jar,上传成功后在界面会

    看到成功提示,并且在D:\upload\lib目录下会看到我们上传的Jar包







- 点击流程控制中心,上传我们放在项目process下的流程模板,会看到如下界面:



  • 点击运行按钮,如下图所示输入流程变量参数,然后点击开启流程

这里是用于模拟一个流程模板为多个不同产品服务的场景,这里的输入参数用来告诉程序使用

taobao模块的approval动作去处理

  • 执行流程后,可以在控制台看到日志,如下图所示:



意味着程序已经成功把请求交到taobao模块去执行了


工作原理

工作原理是当流程接收到A产品的请求,自动路由到A模块去处理具体的审核逻辑;当流程接收到B产品的请求,自动路由到B模块去处理具体的审核逻辑;

从而实现同一个流程模板可以多个产品使用,各个产品实现对应产品的业务特性逻辑。




情景二环境部署

情景说明:

本demo通过cache-module-memory、cache-module-mongodb、cache-module-redis 几个模块模拟在线切无感知切换底层缓存框架

使用步骤:

  • 使用Mave命令 “mvn package” 分别对cache-module-memory、cache-module-mongodb和cache-module-redis三个模块打包,

    生成cache-module-memory-0.0.1.jar、cache-module-mongodb-0.0.1.jar和cache-module-redis-0.0.1.jar三个JAR包

  • 运行 “ModuleApplication”

  • 输入http://localhost:8080/会看到如下界面



  • 选择场景二,进入演示场景,会显示如下界面:

  • 分别上传之前打包好的模块包cache-module-memory-0.0.1.jar、cache-module-mongodb-0.0.1.jar和cache-module-redis-0.0.1.jar,上传成功后在界面会

    看到成功提示,并且在D:\upload\lib目录下会看到我们上传的Jar包



  • 点击缓存管理,会看到如下图界面,这时候我们可以设置我们的缓存key和value,并且可以通过key进行查询操作:



  • 点击缓存切换,输入模块名称和版本号,可以在线无感知切换底层缓存框架,这里模拟缓存从memory切换成redis存储:

工作原理

工作原理是受到切换到指定缓存模块请求,直接替换掉现有的存储模块,从而达到在线无感知切换底层存储结构

模块化系列教程 | 阿里JarsLink1.0模块化场景实战Demo的更多相关文章

  1. 模块化系列教程 | 深入源码分析阿里JarsLink1.0模块化框架

    1. 概述 1.1 模块动态加载卸载主流程 2. 模块动态加载 2.1 模块加载源码分析 2.1.1 AbstractModuleRefreshScheduler 2.1.2 ModuleLoader ...

  2. 实战SpringCloud响应式微服务系列教程(第六章)

    本章节介绍:Flux和Mono操作符 和其他主流的响应式编程一样,Reactor框架的设计目标也是为了简化相应式流的使用方法.为此Reactor框架提供了大量操作符用于操作Flux和Mono对象. 本 ...

  3. 实战SpringCloud响应式微服务系列教程(第七章)

    本章节继续介绍:Flux和Mono操作符(二) 1.条件操作符 Reactor中常用的条件操作符有defaultIfRmpty.skipUntil.skipWhile.takeUntil和takeWh ...

  4. 实战SpringCloud响应式微服务系列教程(第十章)响应式RESTful服务完整代码示例

    本文为实战SpringCloud响应式微服务系列教程第十章,本章给出响应式RESTful服务完整代码示例.建议没有之前基础的童鞋,先看之前的章节,章节目录放在文末. 1.搭建响应式RESTful服务. ...

  5. Android视频录制从不入门到入门系列教程(三)————视频方向

    运行Android视频录制从不入门到入门系列教程(二)————显示视频图像中的Demo后,我们应该能发现视频的方向是错误的. 由于Android中,Camera给我们的视频图片的原始方向是下图这个样子 ...

  6. 实战SpringCloud响应式微服务系列教程(第八章)构建响应式RESTful服务

    本文为实战SpringCloud响应式微服务系列教程第八章,讲解构建响应式RESTful服务.建议没有之前基础的童鞋,先看之前的章节,章节目录放在文末. 1.使用springboot2.1.4构建RE ...

  7. 实战SpringCloud响应式微服务系列教程(第九章)使用Spring WebFlux构建响应式RESTful服务

    本文为实战SpringCloud响应式微服务系列教程第九章,讲解使用Spring WebFlux构建响应式RESTful服务.建议没有之前基础的童鞋,先看之前的章节,章节目录放在文末. 从本节开始我们 ...

  8. 从0到1实战移动Web App开发

    从0到1实战移动Web App开发   教程介绍 从0到1 实战webapp,通过热门的web前端技术实现移动端app应用,先基础.后实战,在讲解的同时引导思考,会抛出自己独特的观点,一行一行写代码讲 ...

  9. Browserify模块化使用教程

    Browserify模块化使用教程 创建项目结构 |-js |-dist //打包生成文件的目录 |-src //源码所在的目录   |-module1.js   |-module2.js   |-m ...

随机推荐

  1. 0015 行高那些事:line-height

    目标 理解 能说出 行高 和 高度 三种关系 能简单理解为什么行高等于高度单行文字会垂直居中 应用 使用行高实现单行文字垂直居中 能会测量行高 3.1 行高测量 行高的测量方法: 3.2 单行文本垂直 ...

  2. MyBatis使用mapper动态代理实现DAO接口

    工具: mysql 5.5.62   IDEA 参考自:https://www.cnblogs.com/best/p/5688040.html 遇到的问题: 无法读取src/main/java下配置文 ...

  3. Python第二天了哇

    在Python中input是接收用户输入的一个函数哇 a = int( b) 这个的意思是把b的值转换为整型? 好像是这个亚子 Python想要知道它的内置函数的话可以在Python的交互界面(She ...

  4. Linux开发环境及应用—《第五周单元测验》《第六周单元测验》

    1.与windows中"格式化磁盘"功能相对应的Linux命令是 mkfs 2.在Linux文件系统中,文件名也存放在磁盘上,存放于磁盘的下述哪个区域 文件存储区 3.传统Linu ...

  5. Linux入门系列1--环境准备及Linux安装

    "工欲善其事.必先利其器",本文作为"Linux零基础入门系列"开篇,将完整演示整个开发环境的安装和配置过程,为后续的开发和实验做好基础准备.如果您已安装好环境 ...

  6. Redis-NoSQL入门和概述(一)

    NoSQL简史及定义 NoSQL 这个术语最早是在 1998 年被Carlo Strozzi命名在他的轻量的,开源的关系型数据库上的,但是该数据库没有提供标准的SQL接口:在2009 年再次被Eric ...

  7. Go合集,gRPC源码分析,算法合集

    年初时,朋友圈见到的最多的就是新的一年新的FlAG,年末时朋友圈最多的也是xxxx就要过去了,你的FLAG实现了吗? 这个公众号2016就已经创建了,但截至今年之前从来没发表过文章,现在想想以前很忙, ...

  8. 0182 JavaScript执行机制:单线程,同步任务和异步任务,执行栈,消息队列,事件循环

    以下代码执行的结果是什么? [结果是1 2 3 ] console.log(1); setTimeout(function () { console.log(3); }, 1000); console ...

  9. 斯坦福算法分析和设计_2. 排序算法MergeSort

      Motivate MergeSort是个相对古老的算法了,为什么现在我们还要讨论这么古老的东西呢?有几个原因: 它虽然年龄很大了,但是在实践中一直被沿用,仍然是很多程序库中的标准算法之一. 实现它 ...

  10. wireshark使用过程中,卡死未响应

    原因 : 未知 处理办法:1.重装wireshark ----------无效果 2.卸载有道词典-----------成功,wireshark正常运行,重装有道词典该问题必现,所以问题由有道词典引起 ...