赞
踩
目录
2 基于 CAP 定理比对 Eureka 和 Zookeeper
对比内容 | 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。