1 Star 1 Fork 0

猿码天地 / SpringCloud-Learning

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

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微服务各组件有了深刻的了解,并能在实际工作中得到应用。

源码下载地址:点击下载

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

猿码天地

MIT License Copyright (c) 2018 博闻-Bowen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

SpringCloud微服务学习(阶段一)源码实战 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/zhangbw666/SpringCloud-Learning.git
git@gitee.com:zhangbw666/SpringCloud-Learning.git
zhangbw666
SpringCloud-Learning
SpringCloud-Learning
master

搜索帮助