一、该问题的重现步骤是什么?
公司要重构目前的系统,要以Blade的框架实现(要有工作流),并让我给出可行性方案(技术评估、开发难度评估、业务模块拆分),并且以权限管理(多租户)的具体实现为切入点开始以Blade框架重构。
Blade是什么?
Blade怎么实现的微服务?
Blade的具体业务写在哪里?
我应该怎么实现权限管理?
等等。。
怀着诸多问题我登陆了gitBlade看到了12个子工程,虽然每个子工程是有简单注释的,但是看了简介之后还是很疑惑:
blade / BladeX-Doc
blade / BladeX-Notice
blade / Archer
blade / ArcherUI
blade / Sword
blade / Saber
blade / BladeX
blade / BladeX-Tool
blade / BladeX-Boot
blade / BladeX-Biz
blade / BladeX-Biz-Archetype
blade / Flowable-Design
怀着这些疑问我下载了网盘中的文档,看了《SpringBlade开发手册-2.2.1.RELEASE.pdf》。看完之后说实话还是比较懵。SpringBlade是开源版本,然后企业版是BladeX。然后BladeX有cloud和boot两个版本。官方建议将详细的业务实现代码写在Blade-biz里面。
文章一半在介绍SpringBlade的使用,代码示例很近人,可是和BladeX还是有区别的吧。本来SPringCloud用的不多也不深,文档中关于cloud组件对比用这个不用那个个的时候很懵逼,然后看了很多BladeX的特性。很多不懂的。
二、你期待的结果是什么?实际看到的又是什么?
其实我就想问问,我想用Blade构建一个系统(仓储物流的项目:分为仓储和物流量的业务(含工作流、多租户)),应该怎么构建。是怎么个调用关系?
12个子工程和我这次重构的功能额该怎么对应和实现?
我们这次重构应该以什么代码结构去展现,并开展开发工作?
主要是所谓的cloud和boot版本体现在哪里??Tool怎么调用使用?这下面这三个什么关系?
blade / BladeX
blade / BladeX-Tool
blade / BladeX-Boot
下面这个图是我自己的demo最好能用这种图展示一下我该如何构架这个系统并且分为几大模块,调用关系如何?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
SpringBoot , Linux
《SpringBlade开发手册》分两部分
第一是开源版商业版相同功能或者相同使用逻辑的部分
第二是专属于BladeX功能的部分,名为《BladeX特性》
所以开源版、商业版都可以看这一份文档,两者不一样的部分,我都在文档上做了备注说明
当你要开发项目的时候,首先要做项目选型。
1.如果你前端用vue,那就选Saber;如果前端用react,那就选Sword
2.如果你项目小,不需要那么大体量,就选BladeX-Boot;如果项目体量大,需要做微服务拆封模块,那就选BladeX;
3.如果项目体量非常大,有好几个组需要并行开发,则以BladeX为基础服务,每个组对应每个子系统选择BladeX-Biz,业务代码都写在这个独立的工程里。而BladeX-Biz-Archetype是项目骨架,用于快速生成一个定制的基础框架
4.后端架构有一个统一的核心封装,适用于boot和cloud,他就是BladeX-Tool,我已经将jar包依赖推送到了nexus私服,如果公司有自行拓展,那就可以定制拓展BladeX-Tool,然后传到自己的私服进行依赖
5.用到独立的代码生成,则选Archer和ArcherUI
6.看文档用BladeX-Doc
7.看一些公告说明看BladeX-Notice
8.独立工作流设计器看Flowable-Design
关于微服务项目的构建,若没有足够的经验,推荐简单的方式:
1.按照功能模块拆封,但是不要拆的特别细
2.比如一个商城系统,你可以把用户拆成一个大模块,把商品拆成一个大模块,他们都是独立的微服务。两个相互独立,但有可以通过远程调用(feign、rpc等方式)获取对应服务的数据
3.对于物流系统我没有做过,不是特别熟悉,但是你可以按照大模块来进行微服务拆分、分类。
具体的架构你可以看下面的图,倒数第二层便是拆分完的每个不同的微服务,互相直接可以通过远程调用获取所需数据。
扫一扫访问 Blade技术社区 移动端