spring cloud学习——Spring Cloud Netflix-Eureka(二)

Spring Cloud包含了非常多的子框架,其中,Spring Cloud Netflix是其中一套框架,由Netflix开发后来又并入Spring Cloud大家庭,它主要提供的模块包括:服务发现、断路器和监控、智能路由、客户端负载均衡等。


组件

Spring Cloud Netflix框架刚好就满足了上面所有的需求,而且最重要的是,使用起来非常的简单。Spring Cloud Netflix包含的组件及其主要功能大致如下:

    1、Eureka,服务注册和发现,它提供了一个服务注册中心、服务发现的客户端,还有一个方便的查看所有注册的服务的界面。 所有的服务使用Eureka的服务发现客户端来将自己注册到Eureka的服务器上。

    2、Zuul,网关,所有的客户端请求通过这个网关访问后台的服务。他可以使用一定的路由配置来判断某一个URL由哪个服务来处理。并从Eureka获取注册的服务来转发请求。

    3、Ribbon,即负载均衡,Zuul网关将一个请求发送给某一个服务的应用的时候,如果一个服务启动了多个实例,就会通过Ribbon来通过一定的负载均衡策略来发送给某一个服务实例。

    4、Feign,服务客户端,服务之间如果需要相互访问,可以使用RestTemplate,也可以使用Feign客户端访问。它默认会使用Ribbon来实现负载均衡。

    5、Hystrix,监控和断路器。我们只需要在服务接口上添加Hystrix标签,就可以实现对这个接口的监控和断路器功能。

    6、Hystrix Dashboard,监控面板,他提供了一个界面,可以监控各个服务上的服务调用所消耗的时间等。

    7、Turbine,监控聚合,使用Hystrix监控,我们需要打开每一个服务实例的监控信息来查看。而Turbine可以帮助我们把所有的服务实例的监控信息聚合到一个地方统一查看。这样就不需要挨个打开一个个的页面一个个查看。

一个web项目使用spring cloud大致是这样的,如下图



Eureka(服务的发现和注册)

具体的用法的话,我看了也跟Spring Cloud config一样,也是分为server,client,具体配置其实网上很多,也比较简单,这里我就不多说server,client怎么弄的问题。具体的可以看一下我的github,里面有我简单写的eurekas项目,大家可以参考一下https://github.com/zfh1038030621/spring-cloud/tree/master/eureka(里面有server集群,服务注册的案例)。我以前是用dubbo+zk的,所以这个eureka的作用就是zk,差不多,很好理解

这里先讲一下一些概念。

1,Eureka构架

这是官方的一个图


重要的点:

1,eureka的自我保护机制(简单的说就是因为调用方跟server之间因为网络问题之类的导致超过80百分之的服务都不能调用,这时候eureka采用的机制),eureka.server.enable-self-preservation # 设为false,关闭自我保护(一般本地调式的时候最好是关闭的,默认是打开的)

2,zone可以理解为机房,region理解为区域(好比我们的游戏之类的,有什么华东区,华北区这种概念),一个region包含多个zone,下面会更详细的讲一下

3,eureka.client.registry-fetch-interval-seconds设置eureka-client获取服务信息的间隔时间,默认是30秒

4,通过eureka.instance.lease-renewal-interval-in-seconds来设置发送心跳的频率

5,eureka.instance.lease-expiration-duration-in-seconds设置视为失效的时间(上次收到心跳时间和下一次收到心跳的时间),默认90秒,大小要适当写,至少要大于第4个值的心跳频率时间

Eureka支持Region和Zone的概念。其中一个Region可以包含多个Zone。Eureka在启动时需要指定一个Zone名,即当前Eureka属于哪个zone, 如果不指定则属于defaultZone。Eureka Client也需要指定Zone, Client(当与Ribbon配置使用时)在向Server获取注册列表时会优先向自己Zone的Eureka发请求,如果自己Zone中的Eureka全挂了才会尝试向其它Zone。当获取到远程服务列表后,Client也会优先向同一个Zone的服务发起远程调用。Region和Zone可以对应于现实中的大区和机房,如在华北地区有10个机房,在华南地区有20个机房,那么分别为Eureka指定合理的Region和Zone能有效避免跨机房调用,同时一个地区的Eureka坏掉不会导致整个该地区的服务都不可用。

对于eureka中的region和zone的关系,网上还有这么一个图



猜你喜欢

转载自blog.csdn.net/qq_18416057/article/details/78218276