首页 > 其他分享 >SpringCloud Hoxton——Consul服务注册与发现

SpringCloud Hoxton——Consul服务注册与发现

时间:2023-05-09 10:32:34浏览次数:49  
标签:SpringCloud Consul 可用性 满足 一致性 Hoxton consul 分区


1.开篇

SpringCloud Hoxton——Consul服务注册与发现_分布式

Consul是什么?

Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。

提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。

它具有很多优点。包括: 基于 raft 协议,比较简洁; 支持健康检查, 同时支持 HTTP 和 DNS 协议 支持跨数据中心的 WAN 集群 提供图形界面 跨平台,支持 Linux、Mac、Windows

Consul能干嘛?

1.服务发现:提供HTTP和DNS两种发现方式

2.健康监测:支持多种方式,HTTP、TCP、Docker、Shell脚本定制化监控

3.KV存储:key-value的存储方式

4.多数据中心:Consul支持多数据中心

5.可视化Web界面

使用Consul做服务注册中心了话,需要到它的官网去下载。

链接:https://www.consul.io/downloads

SpringCloud Hoxton——Consul服务注册与发现_分布式_02

下载完之后,会有一个consul.exe的可执行文件,这就是consul的,双击即可运行。

也可以在当前目录下,cmd,然后 consul --version 查看安装好的consul版本信息。

之后再使用 consul agent -dev 使用开发模式启动consul,启动完成之后,到浏览器中输入 http://localhost:8500 即可访问到consul的可视化web界面。

SpringCloud Hoxton——Consul服务注册与发现_微服务_03


2.项目源码

github源码地址:https://github.com/2656307671/SpringCloud-Hoxton-Consul

gitee源码地址:https://gitee.com/szh-forever-young/SpringCloud-Hoxton-Consul

依次启动服务提供者cloud-providerconsul-payment8006、服务消费者cloud-consumerconsul-order80

之后在浏览器中的consul界面中刷新即可看到我们的微服务信息。

SpringCloud Hoxton——Consul服务注册与发现_java_04

SpringCloud Hoxton——Consul服务注册与发现_微服务_05


3.三个注册中心的异同点

前两篇文章分别介绍了eureka、zookeeper这两个注册中心,再加上这篇是consul注册中心。


下面来看看这三个注册中心有哪些异同点。

SpringCloud Hoxton——Consul服务注册与发现_java_06

最多只能同时较好的满足两个。CAP(C:Consistency 强一致性,A:Availability 可用性,P:Partiton tolerance 分区容错性)

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
  • CP - 满足一致性,分区容忍必的系统,通常性能不是特别高。
  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

AP架构:当网络分区出现后,为了保证可用性,系统B可以返回旧值,保证系统的可用性。结论:违背了一致性C的要求,只满足可用性和分区容错,即AP。

SpringCloud Hoxton——Consul服务注册与发现_数据中心_07

CP架构:当网络分区出现后,为了保证一致性,就必须拒接请求,否则无法保证一致性结论:违背了可用性A的要求,只满足一致性和分区容错,即CP。

SpringCloud Hoxton——Consul服务注册与发现_数据中心_08

标签:SpringCloud,Consul,可用性,满足,一致性,Hoxton,consul,分区
From: https://blog.51cto.com/u_14997067/6257449

相关文章

  • 「微服务」这10道Consul面试题值得一看
    前言Consul是一种非常强大的分布式服务发现和配置管理工具,它可以帮助开发人员和运维人员更好地管理和维护分布式系统。但是,使用Consul也需要投入一定的人力和物力,需要根据实际情况进行选择和使用。什么是Consul?Consul是一种分布式服务发现和配置管理工具,它可以用于服务......
  • SpringCloud gateway Actuator
    要启用gateway的Actuator交互首先添加依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>其次在application.properties配置:management.end......
  • SpringCloud gateway 元数据,超时,Netty Access Logs
    元数据spring:cloud:gateway:routes:-id:route_with_metadatauri:https://example.orgmetadata:optionName:"OptionValue"compositeObject:name:"value"iAmNu......
  • SpringCloud gateway HttpHeadersFilters
    HttpHeadersFilter在将请求发送到下游之前应用于请求,例如在NettyRoutingFilter中。1、ForwardedHeadersFilterForwardedHeadersFilter创建一个Forwarded标头以发送到下游服务。它将当前请求的Host标头、scheme和端口添加到任何现有的Forwarded标头中。2、RemoveHopByHopH......
  • SpringCloud gateway全局过滤器
    GlobalFilter接口具有与GatewayFilter相同的签名。这些是有条件地应用于所有路由的特殊过滤器。组合GlobalFilter和GatewayFilter当请求与路由匹配时,过滤web处理程序会将GlobalFilter的所有实例和GatewayFilter的所有路由特定实例添加到过滤器链中。这个组合的过滤器链由org.spr......
  • SpringCloud gateway内置过滤器之六
    1、RequestSizeGatewayFilter当请求大小大于允许的限制时,RequestSizeGatewayFilter可以限制请求到达下游服务。过滤器采用maxSize参数。maxSize是`DataSize类型,因此可以将值定义为一个数字,后跟可选的DataUnit后缀,如“KB”或“MB”。字节的默认值为“B”。它是以字节为单位定义......
  • SpringCloud gateway内置过滤器之五
    1、SetRequestHeaderGatewayFilterSetRequestHeaderGatewayFilter设置请求头,会覆盖原来已有的请求头。spring:cloud:gateway:enabled:trueroutes:-id:Goods-Server#路由id,唯一标识uri:lb://producerpredicates......
  • SpringCloud gateway内置过滤器之四
    1、RewriteLocationResponseHeaderGatewayFilterRewriteLocationResponseHeaderGatewayFilter修改Location响应标头的值,通常是为了消除后端特定的详细信息。有stripVersionMode、locationHeaderName、hostValue和protocolsRegex参数。protocolsRegx参数必须是有效的正则表达式......
  • 六、分布式SpringCloud环境--谷粒商城
    分布式SpringCloud环境一、注册中心:SpringCloudAlibabaNacos版本:nacos1.1.3链接:https://github.com/alibaba/nacos/releases?page=4主机端使用:(1)、下载zip,并解压,打开bin里的startup.cmd (2)、引入依赖、修改配置文件:导入nacos配置引入依赖<dependency><grou......
  • springcloud小应用
    一、Actuator修改Actuator端点前缀management.endpoints.web.base-path=/manage将原来的mappings端点的请求路径修改为urlMappingsmanagement.endpoints.web.path-mapping.mappings=request_mappings暴露部分端点management.endpoints.web.exposure.include=info,health,be......