Spring Cloud 分布式架构、微服务
引言
JeeSite Spring Cloud 是基于 Spring Cloud Finchley 的一个分布式系统套件的整合。
特点:用经典开发模式,开发分布式应用,两个字【简单】,一个字【快】。
更多资料:Spring Cloud 官方文档
代码下载
https://gitee.com/thinkgem/jeesite4-cloud
技术选型
- 分布式系统套件版本:Spring Cloud Finchley
- 服务治理注册与发现:Spring Cloud Netflix Eureka
- 服务容错保护限流降级:Spring Cloud Netflix Hystrix
- 分布式统一配置中心:Spring Cloud Config
- 网关路由代理调用:Spring Cloud Gateway
- 声明式服务调用:Spring Cloud OpenFeign
- 分布式链路追踪:Spring Cloud Zipkin
子项目介绍
- 服务治理:jeesite-cloud-eureka : http://127.0.0.1:8970
- 配置中心:jeesite-cloud-config : http://127.0.0.1:8971/project/default
- 网关路由:jeesite-cloud-gateway : http://127.0.0.1:8980/js/a/login
- 核心模块(统一授权认证):jeesite-cloud-module-core : http://127.0.0.1:8981/js
- 测试模块1(单表增删改查示例):
- 模块1主项目:jeesite-cloud-module-test1 : http://127.0.0.1:8982/js
- 模块1客户端项目(提供其它模块调用):jeesite-cloud-module-test1-client
- 测试模块2(树表增删改查示例):
- 模块2主项目:jeesite-cloud-module-test2 : http://127.0.0.1:8983/js
- 模块2客户端项目(提供其它模块调用):jeesite-cloud-module-test2-client
快速运行
- 初始化数据库(下载最新的mysql脚本): https://gitee.com/thinkgem/jeesite4/attach_files
- 配置
/jeesite-cloud-config/../cloud-config/application.yml
分布式统一配置文件 JDBC 和 Redis 等信息。 - 按顺序运行以下启动类的main方法(启动完成一个再启下一个):
- /jeesite-cloud-eureka/../EurekaApplication.java
- /jeesite-cloud-config/../ConfigApplication.java
- /jeesite-cloud-gateway/../GatewayApplication.java
- /jeesite-cloud-module-core/../CoreApplication.java
- /jeesite-cloud-module-test1/../Test1Application.java
- /jeesite-cloud-module-test2/../Test2Application.java
- 以上都启动成功后,浏览器访问网关项目地址即可:
- 访问地址:http://127.0.0.1:8980/js system admin
- 若访问报错,请再等待一会,可能服务未完全启动完成
调用实例演示
网关代理模块调用
- 代理 test1 模块(单表):http://127.0.0.1:8980/js/a/test1/testData/list
- 控制器位置:jeesite-cloud-module-test1/../web/TestData1Controller.java
- 代理 test2 模块(树表):http://127.0.0.1:8980/js/a/test2/testTree/list
- 控制器位置:jeesite-cloud-module-test2/../web/TestTree2Controller.java
模块之间互相调用
- test2 模块调用 test1 模块(单表):http://127.0.0.1:8980/js/a/test2/testData/list
- 服务消费者位置:jeesite-cloud-module-test2/../web/TestData2Controller.java
- 服务提供者位置:/jeesite-cloud-module-test1/../service/TestDataService.java
- test1 模块调用 test2 模块(树表):http://127.0.0.1:8980/js/a/test1/testTree/list
- 服务消费者位置:jeesite-cloud-module-test1/../web/TestTree1Controller.java
- 服务提供者位置:/jeesite-cloud-module-test2/../service/TestTreeService.java
Spring Cloud 官方文档
https://cloud.spring.io/spring-cloud-static/Finchley.SR3/single/spring-cloud.html