spring cloud 之 -- eureka vs consul,该选择谁?

0--前言

  spring cloud的服务注册中心,该选择谁?在选择前,我们首先需要来了解下分布式的CAP定理:

  所谓CAP,是指:

  Consistency:一致性;就是在分布式系统中的所有数据备份,在同一时刻是否同样的值

  Availability:可用性;就是负载过大后,集群整体是否还能响应客户端的读写请求

  Partition tolerance :分区容错性,就是高可用性;一个节点挂了,并不影响其它的节点

  三者不可能同时满足,最多只能满足其中两项;

1-- eureka vs consul

  在分布式系统中,P是一定要满足的,不满足P是不可接受的;那么在C一致性和A可用性之间,就存在取舍。很显然,更多时候,我们更看重A可用性,而不需要实时的一致性,只需要最终一致即可;所以,满足AP更符合绝大多数项目的实际;

  Zookeeper和Consul :满足CP,保证了一致性,集群搭建的时候,某个节点失效,则会进行选举行的leader,或者半数以上节点不可用,则无法提供服务,因此可用性无法满足

  Eureka:满足AP,无主从节点,一个节点挂了,自动切换其他节点可以使用,去中心化

  从实际而言,一般除了一些特殊行业需要强调C一致性(例如金融、银行)以外,其他的系统更注重A可用性,所以:

2--结论:该选择谁?

  我们很不喜欢那些模棱两可万金油般的的结论,对比来对比去,让大家纠结来纠结去;我们可以很明确的给你下个结论:

  对于金融类似的特殊行业有C一致性的强烈需求的,用Consul ;

  其他的,统统用Eureka;

PS:题外话:关于Eureka闭源,是2.X闭源,但2.X从未发布,官方最新的版本是1.9,所以不要受额外的消息影响,大胆使用合适的。

原文地址:https://www.cnblogs.com/yanghj/p/11638525.html

时间: 2024-11-05 20:41:09

spring cloud 之 -- eureka vs consul,该选择谁?的相关文章

spring cloud之eureka简介

最近线上的接口出了一些问题,有一些可能不是代码的问题,但是由于是测试和其他方面的同事爆出来的,所以感觉对接口的监控应该提上日程. 经过搜索发现,spring cloud的eureka就是专门做这方面工作的. 下面一段是<spring cloud 微服务实战>一书中对eureka的简单介绍: Spring Cloud Eureka 是Spring Cloud Netflix 微服务套件中的一部分, 它基于Netflix Eureka 做了二次封装, 主要负责完成微服务架构中的服务治理功能. Sp

Spring cloud Greenwich Eureka

1.父工程POM文件中: <dependencyManagement> <dependencies> <!--spring cloud--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.RE

学习SPRING BOOT, SPRING CLOUD之Eureka和security

有意思,明天去杨浦报名了一个SPRING CLOUD沙龙, 今天再抓紧看看哈哈哈. Eureka服务端: EurekaApplication.java package com.packtpub.Eureka; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframewor

Spring Cloud 入门Eureka -Consumer服务消费(声明式Feign)(三)

Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端.它使得编写Web服务客户端变得更加简单.我们只需要通过创建接口并用注解来配置它既可完成对Web服务接口的绑定.它具备可插拔的注解支持,包括Feign注解.JAX-RS注解.它也支持可插拔的编码器和解码器.Spring Cloud Feign还扩展了对Spring MVC注解的支持,同时还整合了Ribbon和Eureka来提供均衡负载的HTTP客户端实现. 1.pom.xml,这里有所不同depen

初始化Spring Cloud建立Eureka服务注册中心

1.新建项目 https://gitee.com/frankawp/vishnu  新建一个git项目 打开git bash git clone https://gitee.com/frankawp/vishnu git remote add vishnu https://gitee.com/frankawp/vishnu touch test git add . git commit -m initial git push origin master 初始化git完毕 刷新https://gi

Spring cloud之Eureka(二)注册中心高可用

背景 在实际的生产环境中,注册中心如果只有一个,是很危险的,当这个注册中心由于各种原因不能提供正常服务或者挂掉时,整个系统都会崩溃,这是很致命的的,所以在Spring cloud 设计之初就考虑到了注册中心的高可用. springCloud的eureka高可用配置方案思路是:几个服务中心之间相互注册,比如两个注册中心,A注册到B上,B注册到A上,如果是三个注册中心则是:A注册到BC上,B注册到AC上,C注册到AB上,这样就会在几个注册中心间进行同步,同时服务提供方向三个注册中心均注册,这样就会保

学习Spring Cloud中eureka注册中心添加security认证,eureka client注册启动报错

最近使用SpringCloud在eureka server端添加security登录认证之后,eureka client注册启动一直报错,大概意思是未发现eureka server,导致注册启动失败! 1 2018-08-09 14:50:06.042 WARN 13256 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator : There was a problem with the instance info replicat

Spring Cloud 之 Eureka.

一.微服务概述 1. 什么是微服务 ?简单地说, 微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间基于 RPC 进行通信协作. 被拆分成的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建, 并且每个服务都维护着自身的数据存储(划重点,每个微服务都有自己的数据库实例). 业务开发.自动化测试案例以及独立部署机制. 2. 微服务的特性 服务组件化:一个独立的系统拆成多个小型服务. 以业务划分服务

微服务与Spring Cloud基本概念、Spring Cloud版本命名方式与版本选择

微服务是什么?Spring Cloud是什么?Spring Cloud版本命名方式?Spring Cloud版本选择? 一.微服务是什么 微服务是一种架构风格,是一种将单体应用开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API).这些服务围绕业务能力构建并且可通过全自动部署机制独立部署.这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术. 二.Spring Cloud是什么 Spring Cloud并不是