微服务之Spring cloud
Spring cloud
Eureka注册中心,AP
版本:D版本
如果打开Eureka的注册中心面板,可看到以下:

可知,Eureka作为注册中心,其服务信息的存放数据结构是:
ConcurrentHashMap<String, Map<String, Lease>> registry.
相比于scf和dubbo,Eureka使用了一种不同的订阅者方式来实现了服务端与客户端信息的同步,其使用的是基于HTTP协议的restful 请求+定时任务,来实现集群中数据的同步,服务之间的调用.

client端
client端是包含了一系列的功能,包括:服务注册,心跳续约,服务下线功能的组件.
client的功能的实现是基于restful请求的,比如心跳的续约是每隔30s,发起一个restful请求,去更新server端注册表map中对应的实例的信息.
client存在于spring cloud组件的各个需要和server通信的地方,包括server端,它表示的是一种和注册中心保持连接的能力.
server端
server节点维护着一份服务的注册表.
server节点暴露出restful请求,包括:注册,心跳续约,下线.
每个server节点都会暴露出一系列restful请求,比如:服务注册,心跳续约等.
每个server节点集成了client端, 每隔30s去将自己的保存的服务信息注册到其他的server节点.
自我保护模式
当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式.一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务).当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。具体计算为:
在每一次新注册实例的时候,都会计算一次阙值:阈值=(expectedNumberOfRenewsPerMin+2)*0.85.
根据心跳来统计,由于默认每隔30s发送一次心跳.因此:
总的阙值=(实例个数*2)*阙值百分比(默认为0.85)例子:6个实例,阙值为
6*2*0.85 = 10即一分钟server应该收到10个心跳,但是如果收到的小于10,则会进入保护模式.
调用方式

负载均衡
RoundRobinRule
轮询.
默认的策略.拿到所有server的集合,根据ip+端口进行遍历.
RandomRule
随机.
使用jdk的随机数生成工具,随机生成当前服务的server集合下标,如果当前节点不可用,可再次随机.
AvailabilityFilteringRule
可用过滤策略.
过滤出不可用的节点和处在高并发的节点,然后使用轮询的方法.
WeightedResponseTimeRule
响应时间权重策略.
先使用轮询,然后根据每个节点的响应时间算出一个权重.
BestAvailableRule
并发量最小可用策略.
spring cloud 组件

Spring Cloud工具框架
Spring Cloud Config 配置中心,利用 Git 集中管理程序的配置。
Spring Cloud Netflix 集成众多Netflix的开源软件。
Spring Cloud Netflix Eureka 服务中心(类似于管家的概念,需要什么直接从这里取,就可以了),一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。
Spring Cloud Netflix Hystrix 熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
Spring Cloud Netflix Zuul 网关,是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Web 网站后端所有请求的前门。
Spring Cloud Netflix Archaius 配置管理 API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
Spring Cloud Netflix Ribbon 负载均衡。
Spring Cloud Netflix Fegin REST客户端。
Spring Cloud Bus 消息总线,利用分布式消息将服务和服务实例连接在一起,用于在一个集群中传播状态的变化。
Spring Cloud for Cloud Foundry 利用 Pivotal Cloudfoundry 集成你的应用程序。
Spring Cloud Cloud Foundry Service Broker 为建立管理云托管服务的服务代理提供了一个起点。
Spring Cloud Cluster 集群工具,基于 Zookeeper, Redis, Hazelcast, Consul 实现的领导选举和平民状态模式的抽象和实现。
Spring Cloud Consul 基于 Hashicorp Consul 实现的服务发现和配置管理。
Spring Cloud Security 安全控制,在 Zuul 代理中为 OAuth2 REST 客户端和认证头转发提供负载均衡。
Spring Cloud Sleuth 分布式链路监控,SpringCloud 应用的分布式追踪系统,和 Zipkin,HTrace,ELK 兼容。
Spring Cloud Data Flow 一个云本地程序和操作模型,组成数据微服务在一个结构化的平台上。
Spring Cloud Stream 消息组件,基于 Redis,Rabbit,Kafka 实现的消息微服务,简单声明模型用以在 Spring Cloud 应用中收发消息。
Spring Cloud Stream App Starters 基于 Spring Boot 为外部系统提供 Spring 的集成。
Spring Cloud Task 短生命周期的微服务,为 Spring Booot 应用简单声明添加功能和非功能特性。
Spring Cloud Task App Starters。
Spring Cloud Zookeeper 服务发现和配置管理基于 Apache Zookeeper。
Spring Cloud for Amazon Web Services 快速和亚马逊网络服务集成。
Spring Cloud Connectors 便于PaaS应用在各种平台上连接到后端像数据库和消息经纪服务。
Spring Cloud Starters (项目已经终止并且在 Angel.SR2 后的版本和其他项目合并)
Spring Cloud CLI 命令行工具,插件用 Groovy 快速的创建 Spring Cloud 组件应用。
Last updated
Was this helpful?