spring Cloud常用组件

在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。在SpringCloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuul、Ngnix),再到达服务网关(zuul集群),然后再到具体的服务。服务统一注册到高可用的服务注册中心集群,服务的所有的配置文件由配置服务管理,配置服务的配置文件放在git仓库,方便开发人员随时改配置。

参考链接:https://www.fangzhipeng.com/spring-cloud.html

一、eureka的配置解析

 eureka:
	client:
	register-with-eureka: false #自己就是注册中心,说明这个EurekaServe不能作为client注册到其他EurekaServer上
	fetch-registry: false  #要不要去注册中心获取其他服务的地址

二、部署eureka集群时defaultZone中为什么必须包含路径/eureka

因为在eureka server的实现中存在一个web请求过滤器,其url模式就是【/eureka/*】。注意这不并是过滤应用的上下文路径,而是过滤剩下的请求路径,所以即使将【server.context-path】设置为【/eureka】,各个节点之间还是无法连通,只有将defaultZone设置为【http://eureka00.com/eureka/eureka】才行。

三、spring cloud的负载均衡

Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。

使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon并和Eureka结合,默认实现了负载均衡的效果。
简而言之:1.Feign 采用的是基于接口的注解。2. Feign 整合了ribbon,具有负载均衡的能力。3.整合了Hystrix,具有熔断的能力

四、feign负载均衡

在启动类上加上@EnableFeignClients注解,写一个接口类加上@FeignClient(value=“service-hi”),在接口类上加@RequestMapping(value = “/hi”,method = RequestMethod.GET)指定接口。

五、Hystrix熔断器

Netflix开源了Hystrix组件,实现了断路器模式,较底层的服务如果出现故障,会导致连锁故障。当对特定的服务的调用的不可用达到一个阀值(Hystric 是5秒20次) 断路器将会被打开,避免连锁故障,fallback方法可以直接返回一个固定值。

1. 在ribbon使用断路器

引入spring-cloud-starter-netflix-hystrix的jar包,在程序启动类上加@EnableHystrix注解开启Hystrix,在指定的方法上加 @HystrixCommand(fallbackMethod = “hiError”)注解并指定了fallbackMethod熔断方法名为hiError,我们可以实现hiError方法返回错误提示符。

2.Feign中使用断路器
Feign是自带断路器的,1.只需要在配置文件中打开即可,feign.hystrix.enabled=true 2.在负载均衡调用类上增加fallback = SchedualServiceHiHystric.class属性,并且定义SchedualServiceHiHystric.java类实现负载均衡类,方法中返回错误提示符。

六、Zuul网关
主要功能是路由转发和过滤器。比如/api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能。
zuul作为网关
1.引入spring-cloud-starter-netflix-zuul的jar包,
2.applicaton类加上注解@EnableZuulProxy,开启zuul的功能:
3.加配置

zuul:
  routes:
    api-a:
      path: /api-a/**
      serviceId: service-ribbon
    api-b:
      path: /api-b/**
      serviceId: service-feign

zuul作为过滤器: @Component 自定义拦截类继承 实现1.filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下四个属性:
pre:路由之前;routing:路由之时;post: 路由之后; error:发送错误调用;
2. filterOrder:过滤的顺序
3.shouldFilter:这里可以写逻辑判断,是否要过滤,本文true,永远过滤。
4.run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问。

七、Spring Cloud Config 配置服务

用来保存各个服务的配置文件。分两个角色,一是config server,二是config client。

  1. 创建一个spring boot名叫config server,在程序的入口Application类加上@EnableConfigServer注解开启配置服务器的功能。
    配置服务要高可用,一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用。

八、spring cloud bus消息总线

将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。本文要讲述的是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。依赖rabbitmq,引入spring-cloud-starter-bus-amqp 的jar包,配置消息总线等,

当git文件更改的时候,通过pc端用post向端口为8882的config-client发送请求/bus/refresh/;此时8882端口会发送一个消息到达消息总线,由消息总线向其他服务传递,从而使整个微服务集群都达到更新配置文件。

九、Spring Cloud Sleuth集成了zipkin组件

服务追踪组件zipkin,Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了 zipkin,你只需要在pom文件中引入相应的依赖即可。
一个server-zipkin,它的主要作用使用ZipkinServer的功能,收集调用数据,并展示;一个service-hi,对外暴露hi接口;一个service-miya,对外暴露miya接口;这两个service可以相互调用;并且只有调用了,server-zipkin才会收集数据的,这就是为什么叫服务追踪了。

下载zipkin-server的jar包,并且运行java -jar zipkin-server-2.10.1-exec.jar,则在service-miya和service-hi分别引入spring-cloud-starter-zipkin的jar包,并且配置spring.zipkin.base-url=http://localhost:9411,spring.zipkin.base-url为server-zipkin的访问地址。在server-zipkin的访问页面中即可知道服务间的调用关系了。

十、Eureka通过运行多个实例,使其更具有高可用性。

事实上,这是它默认的属性,你需要做的就是给对等的实例一个合法的关联serviceurl。

通过修改peer1和peer2实现注册中心高可用,使得一个客户端service-hi只注册了peer1,但是peer2也有service-hi的注册信息,实现了数据同步和对等,即使peer1宕机了,服务并不会终止,因为peer2服务存有相同的数据。

十一、Hystrix Dashboard 组件

在微服务架构中保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型。断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标。Hystrix Dashboard是作为断路器状态的一个组件,提供了数据监控和友好的图形化界面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值