目录
1 Spring Cloud 简介
1 Netflix 简介
2 Spring Cloud 框架结构
3 Spring Cloud 和 Dubbo 的对比
4 Spring Cloud 版本号说明
5 Spring Cloud Netflix Eureka
一、 Eureka 简介
1 Eureka 组件
1.1 Eureka Server
1.2 Eureka Client
1.2.1 Application Service
1.2.2 Application Client
2 Eureka 和 Zookeeper 对比
1 什么是 CAP 定理
2 基于 CAP 定理比对 Eureka 和 Zookeeper
二 搭建 Eureka 注册中心
1 POM 文件
2 配置文件 application.yml
3 启动类
4 访问 Eureka Server WEB 服务管理平台
三 Eureka 服务管理平台介绍
1 Eureka Server 服务管理平台访问预览
四 搭建高可用集群
1 在 Eureka 应用中定义多环境配置
五 集群原理
1 Eureka 集群架构原理图
六 Eureka 优雅停服
1 自我保护模式
2 为什么要自我保护
3 关闭自我保护
对比内容 |
Dubbo |
Spring Cloud |
|
出身 |
阿里系 核心框架是服务化治理 |
Spring 社区 核心框架是 Netflix 开源微服务架构群体 |
|
文档 |
集中,健全,中文 |
较多,内容大部分是英本版 |
|
性能 |
Dubbo 的性能大约是 Spring Cloud 的 2~3 倍 |
||
功能 |
服务注册中 心 |
zookeeper |
Spring Cloud Netflix Eureka |
服务调用方 式 |
RPC |
REST API |
服务网关 |
无 |
Spring Cloud Netflix Zuul |
|
断路由 |
集群容错 |
Spring Cloud Netflix Hystrix |
|
分布式配置 |
无 |
Spring Cloud Config |
|
服务跟踪 |
无, monitor |
Spring Cloud Sleuth |
|
消息总线 |
无 |
Spring Cloud Bus |
|
数据流 |
无 |
Spring Cloud Stream |
|
批量任务 |
无 |
Spring Cloud Task |
分布式系统 CAP 定理 |
|
C 数据一致性 (Consistency) /kənˈsɪstənsi/ |
也叫做数据原子性 系统在执行某项操作后仍然处于一致的状态。在分布式系统中,更新操作执行成功后所有的用户都应该读到最新的值, 这样的系统被认为是具有强一致性的。等同于所有节点访问同一份最新的数据副本。 优点: 数据一致,没有数据错误可能。 缺点: 相对效率降低。 |
A 服务可用性 (Availablity) /əveɪləbɪləti/ |
每一个操作总是能够在一定的时间内返回结果,这里需 要注意的是"一定时间内"和"返回结果"。一定时间内指的是, 在可以容忍的范围内返回结果,结果可以是成功或者是失败。 |
P 分区容错性 (Partition-torlerance) /pɑːrˈtɪʃn/ /ˈtɑːlərəns/ |
在网络分区的情况下,被分隔的节点仍能正常对外提供 服务(分布式集群,数据被分布存储在不同的服务器上,无论什么情况,服务器都能正常被访问) |
定律:任何分布式系统只可同时满足二点,没法三兼顾 |
|
CA,放弃 P |
如果想避免分区容错性问题的发生,一种做法是将所有的数据(与事务相关的)/服务都放在一台机器上。虽然无法100%保证系统不会出错,但不会碰到由分区带来的负面效 果。当然这个选择会严重的影响系统的扩展性。 |
CP,放弃 A |
相对于放弃"分区容错性"来说,其反面就是放弃可用性。一旦遇到分区容错故障,那么受到影响的服务需要等待一定 时间,因此在等待时间内系统无法对外提供服务。 |
AP,放弃 C |
这里所说的放弃一致性,并不是完全放弃数据一致性, 而是放弃数据的强一致性,而保留数据的最终一致性。以网络购物为例,对只剩下一件库存的商品,如果同时接受了两 个订单,那么较晚的订单将被告知商品告罄。 |
对比项 |
Zookeeper |
Eureka |
描述 |
CAP |
CP |
AP |
ZooKeeper 分布集群是使用主从模型实现的。在一个时间点上, 只有一个 leader 真正的对外提供服务。其他的follower 都会实时备份leader 中 的 数 据 , 当leader 宕机,则 follower 选举出新的 leader 对外提供服务。 Eureka 分布集群是平等模型(无主模型) 所有的节点都是平等的,客户端访问任意节点都可以提供实时的服务响应。如果某节点发送宕机等故障,接收到的请求会转交给其他的节点。无主模型,每个 节点的数据可能不实时 |
一致,节点需要通过网络通讯从其他节点获取数据,并实现数据的一致。可能有网络延迟或网络故障或通讯频率问 题。 |
|||
Dubbo 集成 |
已支持 |
- |
Dubbo 开发的时候不需要考虑注册中心选择。 Spring Cloud 中推荐使用Eureka 作为注册中心,Eureka 是由Spring Cloud 子 项 目spring-cloud-netflix 集成的。是 Spring Cloud 中的一个组件,会有针对性的服务提供和发现组 件。 |
Spring Cloud 集成 |
已支持 |
已支持 |
|
kv 服务 |
支持 |
- |
ZK 支持数据存储 eureka 不支持 |
使用接口 (多语言能力) |
提供客户端 |
http 多语言 |
ZK 的跨语言支持 比较弱 |
watch 支持 |
支持 |
支持 |
什 么 是 Watch 支持?就是客户端监听服务端的变化情况。 zk 通过订阅监听来 实现 eureka 通过轮询的方式来实现 |
集群监控 |
_ |
metrics |
metrics,运维者可以收集并报警这些度量 信息达到监控目的 |
< parent >< groupId >org.springframework.boot groupId >< artifactId >spring-boot-starter-parent artifactId >< version >2.2.2.RELEASE version >parent >< groupId >com.bjsxt groupId >< artifactId >cloudeureka artifactId >< version >1.0-SNAPSHOT version >< dependencyManagement >< dependencies >< dependency >< groupId >org.springframework.cloud groupId >< artifactId >spring-cloud-dependencies artifactId >< version >Hoxton.SR1 version >< type >pom type >< scope >import scope >dependency >dependencies >dependencyManagement >< dependencies >< dependency >< groupId >org.springframework.cloud groupId >< artifactId >spring-cloud-starter-netflix-eureka-server artifactId >dependency >dependencies >
1.2 application-eureka2.yml