springboot-plus、简介、开源单体系统,系统拆分和微服务 下

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: springboot-plus、简介、开源单体系统,系统拆分和微服务 下

1.2 创建子系统

SpringBoot-plus 是一个适合大系统拆分成小系统的架构,或者是一个微服务系统,因此,如果你需要创建自己的业务系统,比如,一个CMS子系统,建议你不要在SpringBoot-Plus 添加代码,应该是新建立一个maven工程,依赖admin-core,或者依赖admin-console(如果你有后台管理需求,通常都有,但不是必须的)

创建子系统,可以进入代码生成>子系统生成, 输入maven项目路径,还有包名,就可以直接生成一个可运行的基于SpringBoot-Plus 的子系统,所有代码可以在个项目里些完成,直接运行MainApplication,

@SpringBootApplication
@EnableCaching
@ComponentScan(basePackages= {"com.corp.xxx","com.ibeetl.admin"})
public class MainApplication  extends SpringBootServletInitializer implements WebApplicationInitializer {
    public static void main(String[] args) {
      SpringApplication.run(MainApplication.class, args);
    }
} 

子系统包含了admin-core和admin-console, 因此你可以直接在子系统里使用core和console提供的所有功能,通过子系统的console功能的代码生成来完成进一步开发

子系统可以单独运行和维护,也可以集成到nginx后构成一个庞大的企业应用系统

1.2.1 配置子系统

子系统不需要做任何配置即可在IDE里直接运行,如果你想打包jar方式运行,则需要添加

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

如果你想打包成war放到tomcat下运行,需要修改maven打包为war

<packaging>war</packaging>

1.2.2 菜单系统

系统默认提供三种类型菜单

系统级菜单,出现在页面顶部,表示一个子系统

导航菜单,出现在页面左边,点击导航将打开其下所有菜单

菜单,点开菜单将定位到页面,菜单必须关联到一个功能点。

建议新建立一个子系统来放置新功能

SpringPlus-Boot 并非以菜单或者按钮来组织整个系统,而是以功能点来组织整个系统提供的功能。如果要使得菜单生效,你必须要先常见一个功能点并且功能点有一个访问地址,然后将此菜单关联到这个功能点

SpringBoot-Plus 先建立功能点是个好习惯,功能点被组织成一颗树,代表了系统应该提供功能的功能,我们看代码就会看到,功能点跟菜单,跟权限,和数据权限都有密切关系

1.2.2 添加代码

可以参考1.3业务代码生成生成初始化的代码,业务代码生成了14个文件,包含前后端所有代码,可以通过生成来了解代码习作规范

1.3 业务代码生成

在介绍如何利用Plus开发系统之前,先介绍代码生成功能,此功能可以生成前后端代码总计14个文件,你可以通过预览功能了解如何开发这个系统

93d125c31691b72dfc68650ae0f1226.png

代码生成针对表进行代码生成,包括JS,JAVA,SQL和HTML,可以通过预览功能直接预览。在生成代码到本地前,有些参数需要修改,否则,代码生成后显示的都是英文

显示字段 : 当此实体显示在任何地方的时候,能代表此实体的名称,比如用户名,组织机构名

变量名:可以自己设定一个较短的名字,此变量名会用于前后端的变量

urlBase:你规划的子系统,最后访问路径是urlBase+变量名字

system: 存放sql目录的的名称

其他修改的地方有

是否包含导入导出,如果选择,则会生成导入导出的代码,导入导出模板则需要参考已有功能(比如数据字典)来完成

是否包含附件管理,如果选择,则业务对象可以关联一组附件,比如客户关联一组附件,或者申请信息关联一组附件。

字段信息的显示名字,这个用于前端列表,表单的显示,应当输入中文名字

作为搜索,可以勾选几个搜索条件,系统自动生成一个搜索配置类

如果字段关联数据字典,那么设置一个数据字典,这样,生成的界面将会变成一个下拉列表

1.3.1 前端代码

前端代码采用了layui的JS框架,使用了按需加载的方式,文档参考 http://www.layui.com/doc/base/infrastructure.html.

index.js: 系统入口JS,包含了查询和表格

add.js : 新增操作的所有JS

edit.js: 编辑操作的所有JS

del.js: 删除操作的所有JS

基础JS

Common.js: 封装了通常JS功能,如jquery的post方法,layui的窗口方法

Lib.js 封装了业务相关方法,如submitForm,loadOrgPanel等方法

1.3.2 HTML代码

页面采用layui,文档参考 http://www.layui.com/demo/

模板语言了使用Beetl,文档参考ibeetl.com

index.html: 功能首页

add.html: 新增首页

edit.html: 编辑操作首页

采用layui的好处是自带了页面和组件还有JS的管理,能完成大多数业务需求

基础UI组件:

orgInput.tag.html 组织机构输入框

simpleDictSelect.tag.html 字典下拉列表

simpleDataSelect.tag 包含key-value的下拉列表

searchForm.tag.html 通用搜索表单

submitButtons.tag.html 提交按钮

accessButton.tag.html 普通按钮(含权限)

attachment.tag.html 附件管理组件

....

2 单体系统,系统拆分和微服务

plus是一个适合单体系统,系统拆分的java快速开发平台,也可以经过改造成微服务平台(以前做一个版本,但觉得plus应该聚焦系统核心,而不是简单堆砌功能,所以放弃了)

以下是单体系统,小系统,和微服务的区别

单体系统是一种常见系统设计方式,也是这十几年年来最主要的设计方式。单体系统的所有功能都在一个工程里,打成一个war包,部署。这样有如下明显好处

单体系统开发方式简单,我们从刚开始学习编程,就是完成的单体系统,开发人员只要集中精力开发当前工程

容易修改,如果需要修改任何功能,都非常方便,只需要修改一个工程范围的代码

测试简单,单体系统测试不需要考虑别的系统,避免本书下册要提到的各种REST,MQ调用

部署也很容易:不需要考虑跟别的系统关系,直接打war包部署到Web服务器即可

性能容易扩展,可以通过Nginx,把一个应用部署到多个服务器上。

随着业务发展,重构,单体系统越来越多,在开发一个庞大的单体系统的时候,就会有如下弊病

单体系统庞大,越来越难理解单体系统,微小的改动牵涉面广泛导致开发小组小心谨慎,开发速度会越来越慢。另外,启动一个庞大的单体系统,可能需要3分钟,或者更多时间

多个功能在同一个单体系统上开发,导致测试越来越慢,比如,测试必须排期,串行测试

单体系统如果想对技术进行更新换代,那代价非常大,如果是个小系统构成,则可以选取一个小系统先做尝试。单体大系统是几乎不可能做技术升级的

单体系统的所有功能运行在同一个JVM里,功能会互相影响,比如一个统计上传word文档的页码的功能由于非常消耗CPU,因此,会因为调用统计功能,导致整个系统短暂都不可用,出现假死的现象

因此,越来越多的架构师在设计系统的时候,会考虑系统拆分成多个单体小系统甚至是微服务。对于传统企业应用,拆成小系统更合适,对互联网系统,使用微服务个更合适,这是因为

传统IT系统本质上还是会用一个数据库,而微服务提倡的是一个服务一个数据库

传统IT系统很少需要调用其他模块服务。传统IT系统通过工作流来串联其他子系统。而电商类的微服务则是通过RPC等方式进行交互,是一个轻量级协议。传统IT系统也可以通过SOA,JMS跟其他系统(非子系统)交互,采用重量级协议

微服务对系统的基础设施要求很高,比如微服务治理,弹性库等等,只要电商系统才有人力物力去做这种事情,而传统IT系统,及时财大气粗,也暂时不具备微服务那样的IT基础设置

因此,对于大多数传统IT应用来说,单体拆分小系统在技术上没有风险,是一个可以立即实施的架构。如下是一个单体系统拆分后的物理架构

70a82c0d459184ec26ed5d9bfa988e9.png

对于用户来说,访问不同的菜单功能,讲定位到不同得子系统,提供服务。

plus支持多数据库

目录
相关文章
|
21天前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
142 68
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
1月前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
54 1
服务架构的演进:从单体到微服务的探索之旅
|
28天前
|
监控 持续交付 API
深入理解微服务架构:构建高效、可扩展的系统
深入理解微服务架构:构建高效、可扩展的系统
49 3
|
28天前
|
消息中间件 运维 Kubernetes
后端架构演进:从单体到微服务####
本文将探讨后端架构的演变过程,重点分析从传统的单体架构向现代微服务架构的转变。通过实际案例和理论解析,揭示这一转变背后的技术驱动力、挑战及最佳实践。文章还将讨论在采用微服务架构时需考虑的关键因素,包括服务划分、通信机制、数据管理以及部署策略,旨在为读者提供一个全面的架构转型视角。 ####
36 1
|
7天前
|
监控 Java 数据中心
微服务架构系统稳定性的神器-Hystrix
Hystrix是由Netflix开源的库,主要用于微服务架构中的熔断器模式,防止服务调用失败引发级联故障。它通过监控服务调用的成功和失败率,在失败率达到阈值时触发熔断,阻止后续调用,保护系统稳定。Hystrix具备熔断器、资源隔离、降级机制和实时监控等功能,提升系统的容错性和稳定性。然而,Hystrix也存在性能开销、配置复杂等局限,并已于2018年进入维护模式。
16 0
|
7天前
|
存储 监控 供应链
微服务拆分的 “坑”:实战复盘与避坑指南
本文回顾了从2~3人初创团队到百人技术团队的成长历程,重点讨论了从传统JSP到前后端分离+SpringCloud微服务架构的演变。通过实际案例,总结了微服务拆分过程中常见的两个问题:服务拆分边界不清晰和拆分粒度过细,并提出了优化方案,将11个微服务优化为6个,提高了系统的可维护性和扩展性。
25 0
|
7天前
|
存储 消息中间件 SQL
微服务改造血泪史:数据库拆分踩过的那些坑!
本文复盘了传统项目改造成微服务架构时,数据库拆分过程中遇到的问题。主要问题包括:1. 数据库拆分过细,导致跨服务调用频繁,破坏服务独立性;2. 数据一致性难以保证,分布式事务管理复杂;3. 跨服务查询影响性能,复杂查询难以实现。初次改造时应避免过度拆分,逐步演进架构。
22 0
|
1月前
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
43 2
|
1月前
|
消息中间件 监控 安全
后端架构演进:从单体到微服务####
在数字化转型的浪潮中,企业应用的后端架构经历了从传统单体架构到现代微服务架构的深刻变革。本文探讨了这一演进过程的背景、驱动力、关键技术及面临的挑战,揭示了如何通过微服务化实现系统的高可用性、扩展性和敏捷开发,同时指出了转型过程中需克服的服务拆分、数据管理、通信机制等难题,为读者提供了一个全面理解后端架构演变路径的视角。 ####
55 8
|
1月前
|
XML Java 数据库连接
SpringBoot集成Flowable:打造强大的工作流管理系统
在企业级应用开发中,工作流管理是一个核心组件,它能够帮助我们定义、执行和管理业务流程。Flowable是一个开源的工作流和业务流程管理(BPM)平台,它提供了强大的工作流引擎和建模工具。结合SpringBoot,我们可以快速构建一个高效、灵活的工作流管理系统。本文将探讨如何将Flowable集成到SpringBoot应用中,并展示其强大的功能。
255 1