1 Star 1 Fork 0

猿码天地 / SpringCloud-Learning

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 11.12 KB
一键复制 编辑 原始数据 按行查看 历史
猿码天地 提交于 2022-10-05 16:06 . 微服务

SpringCloud微服务学习(阶段一)源码实战

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

项目介绍

SpringCloud 组件学习,完整的项目和详细的操作步骤。

SpringCloud

模块说明

SpringCloue-Learning 父模块
microservice-common 公共模块
microservice-provider-1001 服务提供者 端口 1001
microservice-provider-1002 服务提供者 端口 1002
microservice-provider-1003 服务提供者 端口 1003
microservice-provider-hystrix-1004 带断路器的服务提供者 端口 1004
microservice-provider-hystrix-1005 带断路器的服务提供者 端口 1005
microservice-consumer-80 服务消费者 端口 80
microservice-consumer-feign-80 远程服务消费者 端口 80
microservice-consumer-hystrix-dashboard-90 Hystrix服务监控Dashboard 端口 90
microservice-consumer-hystrix-turbine-91 Hystrix集群监控turbine 端口 91
microservice-eureka-server-2001 服务注册中心 端口 2001
microservice-eureka-server-2002 服务注册中心 端口 2002
microservice-eureka-server-2003 服务注册中心 端口 2003
microservice-zuul-3001 Zuul路由配置 端口 3001

操作步骤

公共模块、服务提供者和服务消费者

1、SpringCloue-Learning 父模块
2、microservice-common 公共模块
3、microservice-provider-1001 服务提供者 端口 1001
4、microservice-consumer-80 服务消费者 端口 80

操作:服务消费者调用服务提供者--先开启服务提供者,再开启服务消费者,80端口调用1001端口提供的服务

服务注册中心Eureka组件

5、microservice-eureka-server-2001 服务注册中心 端口 2001
6、microservice-eureka-server-2002 服务注册中心 端口 2002
7、microservice-eureka-server-2003 服务注册中心 端口 2003

操作1:Eureka注册中心高可用集群配置-- 先开启服务注册中心(5/6/7),再开启服务提供者(3),系统会将服务提供者分别注册到端口为2001/2002/2003的服务注册中心
操作2:Eureka注册中心高可用集群配置-- 分别访问http://eureka2001.bowen-news.com:2001、http://eureka2002.bowen-news.com:2002、http://eureka2003.bowen-news.com:2003 即可看到详细信息(用SwitchHosts配置映射文件)
操作3:Eureka注册中心高可用集群配置-- SwitchHosts映射文件配置 127.0.0.1 eureka2001.bowen-news.com、127.0.0.1 eureka2002.bowen-news.com、127.0.0.1 eureka2003.bowen-news.com
操作4:Eureka注册中心高可用集群配置-- 重点:Eureka注册中心(5/6/7)application.yml配置文件和服务提供者(3)application.yml配置文件(有详细注释)

Ribbon组件

操作1:Ribbon组件-- Ribbon是客户端负载均衡,所以肯定集成在消费端,也就是consumer端
操作2:Ribbon组件-- 启动:先启动三个服务注册中心Eureka(5/6/7),然后再启动服务提供者(3),再启动服务消费者(4)
操作3:Ribbon组件-- 访问:http://localhost/student/list
操作4:Ribbon组件-- 原理:客户端consumer集成Ribbon,Ribbon再和Eureka集成,通过Eureka集群找到对应的服务提供者

8、microservice-provider-1002 服务提供者 端口 1002
9、microservice-provider-1003 服务提供者 端口 1003

操作1:Ribbon负载均衡-- 默认轮询策略,即三个服务提供者挂掉一个后,会导致访问失败(可在SpringCloudConfig中配置其它策略,例如重试策略)
操作2:Ribbon负载均衡-- 启动:先启动三个服务注册中心Eureka(5/6/7),然后再启动三个服务提供者(3/8/9),再启动服务消费者(4)
操作3:Ribbon负载均衡-- 访问:启动三个注册中心和三个服务提供者后,可以访问http://localhost:1001/student/list、http://localhost:1002/student/list、http://localhost:1003/student/list 查看服务提供者是否正常
操作4:Ribbon负载均衡-- 访问:启动服务消费者后可以访问http://localhost/student/list 查看消费者具体调用的是哪一个提供者提供的服务(后台日志查看)
操作5:Ribbon负载均衡-- 原理:客户端consumer集成Ribbon,Ribbon再和Eureka集成,通过Eureka集群找到对应的服务提供者
操作6:Ribbon负载均衡-- 作用:通过Ribbon负载均衡,缓解服务提供者压力,让消费者通过负载均衡算法调用服务提供者

Feign组件

10、microservice-consumer-feign-80 远程服务消费者 端口 80

操作1:Feign组件-- 通过service注入方式让消费者调用服务提供者,代替restTemplate调用方式,当有多个消费者需要调用服务提供者时,直接注入service即可,方便统一调用和维护
操作2:Feign组件-- 启动:先启动三个服务注册中心Eureka(5/6/7),然后再启动三个服务提供者(3/8/9),再启动服务消费者(10)
操作3:Feign组件-- 访问:http://localhost/student/list

Hystrix断路器组件

11、microservice-provider-hystrix-1004 带断路器的服务提供者 端口 1004

操作1:Hystrix断路器组件-- 启动:先启动三个服务注册中心Eureka(5/6/7),再启动带hystrix的服务提供者(11),最后启动服务消费者(4)
操作2:Hystrix断路器组件-- 访问:http://localhost/student/getInfo
操作3:Hystrix断路器组件-- 原理:这里我们正常访问返回的是“200 业务数据xxxxx”;但是我们这里Thread.sleep(2000)模拟超时;我们加上@HystrixCommand注解以及fallbackMethod,表明这个方法在没有异常以及没有超时(hystrix默认1秒算超时)的情况,才返回正常的业务数据
操作4:Hystrix断路器组件-- 原理:否则,进入我们fallback指定的本地方法,定义的是“500 系统出错,稍后重试”,有效的解决雪崩效应,以及返回给用户界面很好的报错提示信息

Hystrix服务监控Dashboard(单机)

12、microservice-consumer-hystrix-dashboard-90 Hystrix服务监控Dashboard 端口 90

操作1:Hystrix服务监控Dashboard-- 启动:Hystrix服务监控Dashboard(12)
操作2:Hystrix服务监控Dashboard-- 访问:http://localhost:90/hystrix,出现Dashboard界面即启动成功
操作3:Hystrix服务监控Dashboard-- 测试:先启动三个服务注册中心Eureka(5/6/7),再启动带hystrix的服务提供者(11),直接请求http://localhost:1004/student/getInfo 返回正常业务
操作4:Hystrix服务监控Dashboard-- 测试:监控的话访问http://localhost:1004/hystrix.stream 这个路径即可

Hystrix集群监控turbine(集群)

13、microservice-provider-hystrix-1005 带断路器的服务提供者 端口 1005
14、microservice-consumer-hystrix-turbine-91 Hystrix集群监控turbine 端口 91

操作1:Hystrix集群监控turbine-- 测试:先启动三个服务注册中心Eureka(5/6/7),再启动带hystrix的服务提供者(11/13),直接请求http://localhost:1004/student/getInfo http://localhost:1005/student/getInfo 返回正常业务
操作2:Hystrix集群监控turbine-- 测试:再启动服务消费者(4)访问http://localhost/student/getInfo(消费者调用带hystrix的服务提供者(11/13))返回正常业务
操作3:Hystrix集群监控turbine-- 测试:启动Hystrix服务监控Dashboard(12),启动Hystrix集群监控turbine(14),访问http://localhost:90/hystrix,出现Dashboard界面即启动成功
操作4:Hystrix集群监控turbine-- 测试:监控的话访问http://localhost:91/turbine.stream 这个路径即可

Feign Hystrix整合&服务熔断服务降级彻底解耦

操作1:Feign Hystrix整合&服务熔断服务降级彻底解耦-- 测试:先启动三个服务注册中心Eureka(5/6/7),再启动带hystrix的服务提供者(11/13),直接请求http://localhost:1004/student/getInfo http://localhost:1005/student/getInfo 返回正常业务
操作2:Feign Hystrix整合&服务熔断服务降级彻底解耦-- 测试:再启动服务消费者(10)访问http://localhost/student/getInfo(消费者调用带hystrix的服务提供者(11/13))返回正常业务
操作3:Feign Hystrix整合&服务熔断服务降级彻底解耦-- 说明:开启三个eureka,以及带hystrix的provider和带feign,hystrix的consummer,sleep()设置 0.5秒的话,返回正常信息;超过1秒的话,就返回错误提示
操作4:Feign Hystrix整合&服务熔断服务降级彻底解耦-- 说明:主要修改了1-(11/13 带hystrix的服务提供者)、2-(2 公共模块)、3-(10 服务消费者)
操作5:Feign Hystrix整合之超时时间配置-- 说明: microservice-consumer-feign-80 application.yml配置文件有详细配置信息

Zuul路由配置

15、microservice-zuul-3001 Zuul路由配置 端口 3001

操作1:Zuul路由配置-- 测试:配置Host(127.0.0.1 zuul.bowen-news.com 用SwitchHosts配置映射文件)
操作2:Zuul路由配置-- 测试:先启动三个服务注册中心Eureka(5/6/7),再启动一个服务提供者(8),直接请求http://localhost:1001/student/list 返回数据
操作3:Zuul路由配置-- 测试:再启动Zuul路由配置服务(15),请求http://zuul.bowen-news.com:3001/bowen-news/studentServer/student/list?accessToken=1234 返回数据
操作4:Zuul路由配置-- 说明:Zuul路由配置详情见 microservice-zuul-3001 的 application.yml 配置文件
操作5:Zuul路由配置-- 作用:请求路由和过滤作用,能够隐藏内部服务的接口细节,有利于保护系统的安全性

总结

本文主要介绍了SpringCloud微服务各组件,包括服务提供者、服务消费者、服务注册中心Eureka组件、Ribbon组件、Feign组件、Hystrix断路器组件、Hystrix断路器组件、Hystrix服务监控Dashboard(单机)、Hystrix集群监控turbine(集群)、Feign Hystrix整合&服务熔断服务降级彻底解耦、Zuul路由配置等,详细的操作步骤和源码,相信通过本项目的学习,对SpringCloud微服务各组件有了深刻的了解,并能在实际工作中得到应用。

源码下载地址:点击下载

欢迎关注微信公众号:猿码天地

猿码天地

Java
1
https://gitee.com/zhangbw666/SpringCloud-Learning.git
git@gitee.com:zhangbw666/SpringCloud-Learning.git
zhangbw666
SpringCloud-Learning
SpringCloud-Learning
master

搜索帮助