SpringCloud基础理论学习及系统搭建(二)

一、分布式配置中心(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版本)
https://blog.csdn.net/forezp/article/details/81041028

2、第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)
https://blog.csdn.net/forezp/article/details/81041045

3、第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)
https://blog.csdn.net/forezp/article/details/81041062

4、第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本)
https://blog.csdn.net/forezp/article/details/81041078

5、第十篇: 高可用的服务注册中心(Finchley版本)
https://blog.csdn.net/forezp/article/details/81041101

6、第十二篇: 断路器监控(Hystrix Dashboard)(Finchley版本)
https://blog.csdn.net/forezp/article/details/81041113

7、第十三篇: 断路器聚合监控(Hystrix Turbine)(Finchley版本)
https://blog.csdn.net/forezp/article/details/81041125

8、Eureka高可用的服务注册中心
https://blog.csdn.net/qq_41076797/article/details/89056927

9、Spring Cloud | 第五篇: 断路器监控(Hystrix Dashboard)和碰到的问题https://blog.csdn.net/qq_38455201/article/details/80783410
10、SpringCloud-Finchley.SR1版本中 hystrix-dashboard 报错 /actuator/hystrix.stream 404 Not Found https://blog.csdn.net/luckykapok918/article/details/84339490
11、spring boot 入门 使用spring.profiles.active来分区配置http://www.leftso.com/blog/111.html
12、Spring Cloud系列(二) 应用监控与管理Actuator https://blog.csdn.net/WYA1993/article/details/80540981
13、服务链路追踪(Spring Cloud Sleuth) https://www.cnblogs.com/duanxz/p/7552857.html
14、记一次zipkin和spring cloud bus冲突https://blog.csdn.net/volcannon/article/details/83789675
15、RabbitMQ下载与安装(window版) https://www.jianshu.com/p/3d43561bb3ee
16、RabbitMq入门以及使用教程https://blog.csdn.net/lyhkmm/article/details/78775369
17、Maven Repository https://mvnrepository.com/artifact/org.springframework.cloud

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值