模块化系列教程 | 阿里JarsLink1.0模块化场景实战Demo
场景实战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的更多相关文章
- 模块化系列教程 | 深入源码分析阿里JarsLink1.0模块化框架
1. 概述 1.1 模块动态加载卸载主流程 2. 模块动态加载 2.1 模块加载源码分析 2.1.1 AbstractModuleRefreshScheduler 2.1.2 ModuleLoader ...
- 实战SpringCloud响应式微服务系列教程(第六章)
本章节介绍:Flux和Mono操作符 和其他主流的响应式编程一样,Reactor框架的设计目标也是为了简化相应式流的使用方法.为此Reactor框架提供了大量操作符用于操作Flux和Mono对象. 本 ...
- 实战SpringCloud响应式微服务系列教程(第七章)
本章节继续介绍:Flux和Mono操作符(二) 1.条件操作符 Reactor中常用的条件操作符有defaultIfRmpty.skipUntil.skipWhile.takeUntil和takeWh ...
- 实战SpringCloud响应式微服务系列教程(第十章)响应式RESTful服务完整代码示例
本文为实战SpringCloud响应式微服务系列教程第十章,本章给出响应式RESTful服务完整代码示例.建议没有之前基础的童鞋,先看之前的章节,章节目录放在文末. 1.搭建响应式RESTful服务. ...
- Android视频录制从不入门到入门系列教程(三)————视频方向
运行Android视频录制从不入门到入门系列教程(二)————显示视频图像中的Demo后,我们应该能发现视频的方向是错误的. 由于Android中,Camera给我们的视频图片的原始方向是下图这个样子 ...
- 实战SpringCloud响应式微服务系列教程(第八章)构建响应式RESTful服务
本文为实战SpringCloud响应式微服务系列教程第八章,讲解构建响应式RESTful服务.建议没有之前基础的童鞋,先看之前的章节,章节目录放在文末. 1.使用springboot2.1.4构建RE ...
- 实战SpringCloud响应式微服务系列教程(第九章)使用Spring WebFlux构建响应式RESTful服务
本文为实战SpringCloud响应式微服务系列教程第九章,讲解使用Spring WebFlux构建响应式RESTful服务.建议没有之前基础的童鞋,先看之前的章节,章节目录放在文末. 从本节开始我们 ...
- 从0到1实战移动Web App开发
从0到1实战移动Web App开发 教程介绍 从0到1 实战webapp,通过热门的web前端技术实现移动端app应用,先基础.后实战,在讲解的同时引导思考,会抛出自己独特的观点,一行一行写代码讲 ...
- Browserify模块化使用教程
Browserify模块化使用教程 创建项目结构 |-js |-dist //打包生成文件的目录 |-src //源码所在的目录 |-module1.js |-module2.js |-m ...
随机推荐
- 关于SAM和广义SAM
关于SAM和广义SAM 不是教程 某些思考先记下来 SAM 终于学会了这个东西诶...... 一部分重要性质 确定一个重要事情,S构造出的SAM的一个重要性质是当且仅当对于S的任意一个后缀,可以从1号 ...
- 洛谷$P1864\ [NOI2009]$二叉查找树 区间$dp$
正解:区间$dp$ 解题报告: 传送门$QwQ$ 首先根据二叉查找树的定义可知,数据确定了,这棵树的中序遍历就已经改变了,唯一能改变的就是通过改变权值从而改变结点的深度. 发现这里权值的值没有意义,所 ...
- $UVA10559\ Blocks\ $区间$dp$
\(Des\) • 有一排数量为N的方块,每次可以把连续的相同颜色的区间消除,得到分数为 区间长度的平方,然后左右两边连在一起,问最大分数为多少. • n<=1 \(Sol\) 正解状态设得奇奇 ...
- 【JDBC】Java程序的数据库初体验
JDBC是什么 JDBC是一种能够用来执行SQL语句的Java API[接口]. 它是Java提供的一种规范,让各大数据库厂商遵循此规范完成自己的数据库连接驱动[实现接口]. JDBC的入门程序(这里 ...
- 2019版Idea如何激活
1.下载jar包 链接: https://pan.baidu.com/s/1w4B4_hmiiueNDJMjYKaFyQ 提取码: fkpx 2.修改·vmoptions 1.Help" - ...
- mysql 多主一从
一.主服务器准备 1.1.环境准备 两台主机器ip分别为 100.100.100.105 (主1) 100.100.100.106(主2) 安装 mysql [root@centos ~]# yum ...
- 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第三节:WebResponse
第二节中,我们介绍了WebRequest,它可以帮助我们发送一个请求,不过正所谓“来而不往非礼也”,对方收到我们的请求,不给点回复,貌似不太合适(不过,还真有脸皮厚的:P). 接下来,就重点研究一下, ...
- spark storm 反压
因特殊业务场景,如大促.秒杀活动与突发热点事情等业务流量在短时间内剧增,形成巨大的流量毛刺,数据流入的速度远高于数据处理的速度,对流处理系统构成巨大的负载压力,如果不能正确处理,可能导致集群资源耗尽最 ...
- 程序员Java架构师多线程面试题和回答解析
当我们在Java架构师面试的过程中常见的多线程和并发方面的问题肯定是必不可少的一部分.那么在面试之前我们更应该多准备一些关于多线程方面的问题. 面试官只是想确信面试者有足够的Java线程与并发方面的知 ...
- Http协议 Content-Type
详情:https://www.cnblogs.com/ranyonsue/p/5984001.html *****Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面. ** ...