网站首页 > 博客文章 正文
Spring Cloud微服务项目完整示例
目的是为了演示基于Spring Cloud微服务框架,搭建一个接近业务实际场景的项目,只实现了后端项目,前端可以使用VUE或者其他框架。
后端框架包括注册中心 Eureka、配置中心Spring Cloud Config、API网关Zuul、客户端负载均衡Ribbon、断路器Hystrix,同时还包括2个后端业务服务,一个用户服务sc-user-service,另一个是数据服务 sc-data-service。
技术架构图
用户从浏览器发起请求,经过浏览器,请求到达Nginx,打开前端页面,由前端页面发起请求后端服务,当请求到达后端Nginx后,Nginx对网关层进行负载,因为网关也需要做HA。
此时网关Gateway 接收到请求后,根据请求路径进行动态路由,根据服务发现是User Service 中的服务,则从Ribbon 中选择一台 User Service的实例进行调用,由User Service 返回数据,如果此时User Service 需要使用Data Service的数据,则选择一台Data Service的实例进行调用,然后数据给前端,流程结束。
具体实现
项目结构如下所示,从module名称,即可理解每个项目的作用了。
其中common是一个公共基础包,方便给后台服务引用。
运行微服务应用
按顺序启动 eureka、zuul-server、data-service、user-service,另外的hystrix-dashboard和config-server 是可行的module。
如下图所示,可以看到每个应用的运行端口号。
访问 eureka UI,查看服务注册情况。
http://localhost:8761/
每个服务都正常注册到 eureka 注册中心了。
通过网关,访问如下URL,获取context user 信息:
http://localhost:7777/sc-user-service/getContextUserId
返回如下结果:
{"exceptionType":"cn.springcloud.book.common.exception.BaseException","code":10001,"businessId":1,"businessMessage":"the user is null, please check","codeEN":"AuthEmptyError"}
这是鉴权 filter 返回的异常信息,因为没有在请求头中获取到x-customs-user信息。
通过Postman,在请求头中添加 x-customs-user=rickie 信息,然后再次访问URL。
http://localhost:7777/sc-user-service/getContextUserId
如下图所示,目前返回结果正常。
还可以尝试访问其他service API 接口,如获取provider data等等。
http://localhost:7777/sc-user-service/getProviderData
完整代码,可以访问github 获取:
https://github.com/rickiechina/Spring-Cloud-Full-Demo
本文示例代码
本文示例代码,来自《重新定义Spring Cloud实战》一书,完整的代码解释,可以查看该书第十章内容。
猜你喜欢
- 2024-09-18 阿里p7大佬首次分享Spring Cloud学习笔记,带你从0搭建微服务
- 2024-09-18 如何使用 SpringCloud 搭建服务注册中心?
- 2024-09-18 springcloud-microservice 快速构建分布式系统
- 2024-09-18 Eureka搭建分布式SpringCloud项目
- 2024-09-18 Spring Cloud 微服务实战——nacos 服务注册中心搭建(附源码)
- 2024-09-18 Spring cloud + vue + oAuth2.0搭建企业级微服务项目源码分享
- 2024-09-18 Nacos + Spring Cloud Gateway动态路由配置
- 2024-09-18 快速创建 Spring Cloud 应用的 Spring Initializr 使用及原理
- 2024-09-18 Spring Cloud 整合 SkyWalking(spring cloud 整合kafka设置日志级别)
- 2024-09-18 记录Spring Cloud应用在阿里云架构的一次部署
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)