Files
rikako-note/spring/Spring Cloud/Spring Cloud.md
2023-03-13 18:19:47 +08:00

2.7 KiB
Raw Blame History

Spring Cloud简介

eureka

eureka是由netflix公司开源的一个服务注册与发现组件。eureka和其他一些同样由netflix公司开源的组建一起被整合为spring cloud netflix模块。

eureka和zookeeper的区别

CAP原则

CAP原则指的是在一个分布式系统中一致性Consistency、可用性Aailability和分区容错性Partition Tolerance三者中最多只能实现两者无法实现三者兼顾。

  • C一致性表示分布式系统中不同节点中的数据都要相同
  • A可用性代表可以允许某一段时间内分布式系统中不同节点的数据可以不同只要分布式系统能够保证最终数据的一致性。中途允许分布式系统中的节点数据存在不一致的情形
  • P及Partition Tolerance通常情况下节点之间的网络的断开被称之为network partition。故而partition tolerance则是能够保证即使发生network partition分布式系统中的节点也能够继续运行

通常P是必选的而在满足P的前提下A和C只能够满足一条即AP或CP。

zookeeper遵循的原则

zookeeper遵循的是cp原则如果zookeeper集群中的leader宕机那么在新leader选举出来之前zookeeper集群是拒绝向外提供服务的。

eureka遵循的原则

和zookeeper不同eureka遵循的是ap原则这这意味着eureka允许多个节点之间存在数据不一致的情况即使某个节点的宕机eureka仍然能够向外提供服务。

eureka使用

可以通过向项目中添加eureka-server的依赖来启动一个eureka-server实例。eureka-server作为注册中心会将其本身也作为一个服务注册到注册中心中。

注册实例id

注册实例id由三部分组成主机名称:应用名称:端口号构成了实例的id。每个实例id都唯一。

eureka-server配置

  • eviction-interval-timer-in-mseureka-server会运行固定的scheduled task来清除过期的clienteviction-interval-timer-in-ms属性用于定义task之间的间隔默认情况下该属性值为60s
  • renewal-percent-threshold基于该属性eureka来计算每分钟期望从所有客户端接受到的心跳数。根据eureka-server的自我保护机制如果eureka-server收到的心跳数小于threshold那么eureka-server会停止进行客户端实例的淘汰直到接收到的心跳数大于threshold

eureka-instance配置

eureka-server-instance本身也作为一个instance注册到注册中心中故而可以针对eureka-instance作一些配置。

eureka集群

eureka集群是去中心化的集群没有主机和从机的概念eureka节点会向集群中所有其他的节点广播数据的变动。