SpringCloud框架基本学习(二)
- 一、分布式配置中心(Spring Cloud Config)
- 1、构建Config Server
- 2、构建Config Client
- 3、项目流程
- 二、高可用的分布式配置中心(Spring Cloud Config)
- 1、架构图:
- 三、消息总线(Spring Cloud Bus)
- 1、下载rabbitmq安装
- 2、架构:
- 3、改造config client,添加依赖
- 四、服务链路追踪(Spring Cloud Sleuth)
- 1、使用Zipkin注解的过程图形化
- 2、构建server-zipkin
- 3、改造service-hi和service-ribbon
- 4、演示结果:
- 五、高可用的服务注册中心
- 1、结构图:
- 2、改造eureka-server
- 3、改变etc/hosts:
- 4、改造service-hi:
- 5、结果:
- 六、断路器监控(Hystrix Dashboard)
- 1、改造service-hi
- 2、图形展示:
- 七、断路器聚合监控(Hystrix Turbine)
- 1、创建service-turbine
- 2、演示结果:
- 八、参考文献
一、分布式配置中心(Spring Cloud Config)
我们使用配置服务来保存各个服务的配置文件,就是Spring Cloud Config。
在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。
1、构建Config Server
启动程序访问http://localhost:8888/foo/dev
证明配置服务中心可以从远程程序获取配置信息。
2、构建Config Client
创建bootstrap.properties文件:
spring.cloud.config.profile
dev开发环境配置文件,test测试环境,pro正式环境
spring.cloud.config.uri= http://localhost:8888/ 指明配置服务中心的网址
3、项目流程
配置中心结构图
二、高可用的分布式配置中心(Spring Cloud Config)
当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用
1、架构图:
高可用的分布式配置中心
2、在config server和config client中,添加spring-cloud-starter-netflix-eureka-client依赖,并注册到eureka-server上,在启动类加上加上@EnableEureka的注解。
在读取配置文件不再写ip地址,而是服务名,这时如果配置服务部署多份,通过负载均衡,从而高可用。
三、消息总线(Spring Cloud Bus)
Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。
这里主要是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。
1、下载rabbitmq安装
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。
消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。
排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
2、架构:
rabbitmq结构图
当git文件更改的时候,通过pc端用post 向端口为8882的config-client发送请求/bus/refresh/;此时8882端口会发送一个消息,由消息总线向其他服务传递,从而使整个微服务集群都达到更新配置文件。
3、改造config client,添加依赖
Actuator:在生产环境中,需要实时或定期监控服务的可用性。Spring Boot的actuator(健康监控)功能提供了很多监控所需的接口,可以对应用系统进行配置查看、相关功能统计等
Spring Cloud Bus:将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。
4、更改git仓库的配置后,发送post请求:http://localhost:8881/actuator/bus-refresh后,可重新读取最新配置。
四、服务链路追踪(Spring Cloud Sleuth)
微服务架构上通过业务来划分服务,通过REST调用,对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂。随着服务的越来越多,对调用链的分析会越来越复杂。
Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了 zipkin,只需要在pom文件中引入相应的依赖。
1、使用Zipkin注解的过程图形化
Zipkin过程图形化
2、构建server-zipkin
在F版本中,只需下载zipkin包,并执行即可。https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
注:自己创建zipkin-server时,需添加依赖:
并添加@EnableZipkinServer注解。——这是支持http方式通信。
3、改造service-hi和service-ribbon
添加依赖:
配置spring.zipkin.base-url
4、演示结果:
打开浏览器访问:http://localhost:9411/
访问http://localhost:8964/hi后,等待一段时间追踪
后重新访问http://localhost:9411/点击Dependencies,可以发现服务的依赖关系
点击find traces,可以看到具体服务相互调用的数据
五、高可用的服务注册中心
将Eureka Server集群化,防止当一个服务中心挂了之后导致全盘崩溃:
1、结构图:
服务中心集群化
Eureka-eserver peer1 8761,Eureka-eserver peer2 8769相互感应,当有服务注册时,两个Eureka-eserver是对等的,它们都存有相同的信息,这就是通过服务器的冗余来增加可靠性,当有一台服务器宕机了,服务并不会终止,因为另一台服务存有相同的数据。
2、改造eureka-server
创建application-peer1.yml和application-peer2.yml
配置相应的环境peer1和peer2
其中:
register-with-eureka: false
fetch-registry: false
使得本身不需注册
配置运行环境为peer2,之后修改为peer1,重新运行
3、改变etc/hosts:
windows电脑,在c:/windows/systems/drivers/etc/hosts 修改
添加:
127.0.0.1 peer1
127.0.0.1 peer2
4、改造service-hi:
5、结果:
启动后访问:localhost:8761显示:
左上角显示peer2,
访问localhost:8769,显示peer1
6、当出现多台服务器时,利用prefer-ip-address: true,并且再配置多个服务中心server的ip即可达到集群效果,可不用修改服务器的hosts文件
六、断路器监控(Hystrix Dashboard)
在微服务架构中为例保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型。断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标。Hystrix Dashboard是作为断路器状态的一个组件,提供了数据监控和友好的图形化界面。
1、改造service-hi
2、图形展示:
打开http://localhost:8762/actuator/hystrix.stream
打开localhost:8762/hystrix
在界面依次输入:http://localhost:8762/actuator/hystrix.stream 、2000 、miya
在另一个界面访问http://localhost:8762/hi后重新刷新hystrix.stream网页
七、断路器聚合监控(Hystrix Turbine)
当我们有很多个服务的时候,这就需要聚合所以服务的Hystrix Dashboard的数据。需要用到Spring Cloud的另一个组件了,即Hystrix Turbine。
想看这个系统的Hystrix Dashboard数据就需要用到Hystrix Turbine。Hystrix Turbine将每个服务Hystrix Dashboard数据进行了整合。
1、创建service-turbine
在其入口类ServiceTurbineApplication加上注解@EnableTurbine,开启turbine,@EnableTurbine注解包含了@EnableDiscoveryClient注解,即开启了注册服务。
2、演示结果:
打开:http://localhost:8763/hystrix,输入监控流http://localhost:8769/turbine.stream
点击monitor stream 进入页面
可以看到这个页面聚合了2个service的hystrix dashbord数据。
八、参考文献
1、第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本) 2、第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本) 3、第八篇: 消息总线(Spring Cloud Bus)(Finchley版本) 4、第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本) 5、第十篇: 高可用的服务注册中心(Finchley版本) 6、第十二篇: 断路器监控(Hystrix Dashboard)(Finchley版本) 7、第十三篇: 断路器聚合监控(Hystrix Turbine)(Finchley版本) 8、Eureka高可用的服务注册中心 9、Spring Cloud | 第五篇: 断路器监控(Hystrix Dashboard)和碰到的问题 10、SpringCloud-Finchley.SR1版本中 hystrix-dashboard 报错 /actuator/hystrix.stream 404 Not Found 11、spring boot 入门 使用spring.profiles.active来分区配置http://www.leftso.com/blog/111.html 12、Spring Cloud系列(二) 应用监控与管理Actuator 13、服务链路追踪(Spring Cloud Sleuth) 14、记一次zipkin和spring cloud bus冲突 15、RabbitMQ下载与安装(window版) https://www.jianshu.com/p/3d43561bb3ee 16、RabbitMq入门以及使用教程 17、Maven Repository https://mvnrepository.com/artifact/org.springframework.cloud