SpringCloud微服务实战——搭建企业级开发框架:创建Maven工程

Posted 全栈程序猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud微服务实战——搭建企业级开发框架:创建Maven工程相关的知识,希望对你有一定的参考价值。

在新建工程前,先了解一下什么是敏捷开发“松结对编程”及“L型代码结构”这里有详细的介绍和说明 : 敏捷开发“松结对编程”系列之十一:L型代码结构(团队篇之一)

使用Maven创建项目之前,我们要对工程有一个大概的规划,为了保持类库统一管理,引入的jar包版本不冲突,我们需要用到Maven的BOM功能以及Spring IO platform推出的BOM功能:

  • Maven BOM定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心地使用需要的依赖jar包,且无需再指定版本号。
  • Spring IO Platform只是一个pom文件,记录了spring与其他开源项目对应的版本,不同模块或者与外部进行集成时,只要项目中引入了它,外部集成时依赖关系无需版本号。

Spring IO Platform在引入SpringBoot时已自动引入,不需要在我们的pom文件中导入,我们需要按照Maven提供的BOM功能定义自己基础组件依赖工程,所以我们的SpringCloud开发框架分为两个工程:一个是底层组件GitEgg-Platform,用于统一规划管理类库版本及底层基础功能组件开发;一个是GitEgg-Cloud,依赖于底层组件GitEgg-Platform用于具体业务功能开发。

下面以创建GitEgg-Cloud为例创建Maven父子工程:

1、创建父工程:File > New > Project...,选择Maven,Create from archetype不要勾选,点击Next进入下一步,填写工程信息。

2、填写项目名称,选择工程代码存放路径,GroupId 、ArtifactId、Version,然后点击Finish完成创建。

3、因为是父工程,所以删除工程下用不到的src目录。此时,pom.xml文件中没有节点pom,这里不需要处理,当创建子工程之后,这里会自动添加此节点。

4、创建第一个子工程,在GitEgg-Cloud工程上点击右键,然后选择:New > Module... > Maven,然后直接Next下一步,在Name处填入子工程名称:gitegg-common,然后点击Finish,子工程创建完成,gitegg-common主要提供系统公共方法及工具。

5、然后使用上一步同样的操作步骤,分别创建gitegg-oauth(鉴权),gitegg-gateway(网关),gitegg-plugin(第三方功能扩展)工程模块。使用第1步创建父工程的步骤创建gitegg-service(业务逻辑处理模块)和gitegg-service-api(业务逻辑处理统一封装对外提供服务的api接口)。创建时,在Maven窗口点击右键选择org.apache.tapestry:quickstart,在信息填写页的Parent中选择gitegg-service/gitegg-service-api建好的完整工程目录如下:

SpringCloud微服务实战搭建企业级应用开发框架:架构说明

SpringCloud分布式应用微服务系统架构图:

springcloud微服务系统架构图

SpringCloud分布式应用微服务系统组件列表:

  • 微服务框架组件:Spring Boot2 + SpringCloud Hoxton.SR8 + SpringCloud Alibaba
  • Spring Boot Admin: 管理和监控SpringBoot应用程序的微服务健康状态
  • 数据持久化组件:MySql + Druid + MyBatis + MyBatis-Plus
  • Mycat: 中间件实现数据库读写分离
  • Seata: 分布式事务管理,跨服务的业务操作保持数据一致性
  • 高性能的key-value缓存数据库:Redis + RedissonClient + RedisTemplate
  • API接口文档: Swagger2 + knife4j
  • 接口参数校验:spring-boot-starter-validation
  • Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台
  • Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性
  • OpenFeign: 微服务架构下服务之间的调用的解决方案 + Ribbon实现负载均衡/高可用重试机制
  • Gateway: 微服务路由转发 + 聚合knife4j微服务文档 + 【Gateway+OAuth2+JWT微服务统一认证授权】
  • Oauth2:SpringSecurity单点登录功能支持多终端认证授权 + RBAC权限框架
  • 验证码:集成滑动验证码【AJ-Captcha】 + 图片验证码【EasyCaptcha】
  • 多租户: 基于Mybatis-Plus【TenantLineInnerInterceptor】插件实现多租户功能
  • 数据权限: 基于Mybatis-Plus【DataPermissionHandler】分页插件实现可配置的数据权限功能
  • 对象存储服务( OSS):MinIO + 阿里云 + 七牛云 + 腾讯云 + 百度云 + 华为云
  • 工作流:Flowable轻量级业务流程引擎
  • XXL-JOB:分布式任务调度平台,作业调度系统
  • Ant-design-vue + ElementUI (基础)优秀流行的前端开源框架整合
  • uni-app: 可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台 (本框架中主要用于H5、小程序)
  • Flutter: 给开发者提供简单、高效的方式来构建和部署跨平台、高性能移动应用 (本框架中主要用于移动应用)
  • EKL: Elasticsearch + Logstash + Kibana分布式日志监控平台
  • 代码生成器: 基于Mybatis-Plus代码生成插件开发的,便捷可配置的代码生成器
  • Keepalived + Nginx: 高可用 + 高性能的HTTP和反向代理web服务器
  • DevOps : kubernetes + docker + jenkins 实现持续集成(CI)和持续交付(CD)
  • 数据报表:基于Ant-design-vue + Echarts实现的自定义数据可视化报表
GitEgg-Cloud是一款基于SpringCloud整合搭建的企业级微服务应用开发框架,开源项目地址:

Gitee: https://gitee.com/wmz1930/GitEgg
GitHub: https://github.com/wmz1930/GitEgg

欢迎感兴趣的小伙伴Star支持一下。

以上是关于SpringCloud微服务实战——搭建企业级开发框架:创建Maven工程的主要内容,如果未能解决你的问题,请参考以下文章

PK1648-Spring Cloud微服务实战视频

SpringCloud微服务实战学习系列配置详解

SpringCloud Alibaba微服务实战三十三 - 集成灰度发布

本地服务调用K8S环境中的SpringCloud微服务实战

SpringCloud Alibaba微服务实战二十二 - 整合Dubbo

SpringCloud Alibaba微服务实战三十四 - 隐私接口禁止外部访问