Consul
weixin_42073629
这个作者很懒,什么都没留下…
展开
-
Consul服务注册与发现机制
1、什么是服务注册中心?顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相调用。举个现实点的例子吧,比如电商系统里的订单服务需要调用库存服务,如下图所示。现在的问题在于,订单服务在192.168.31.154这台机器上,库存服务在192.137.1.33这台机器上。现在订单服务是想要调用库存服务,但是他并不知道库存服务在哪台机器上啊!毕竟人家都是在不同机器上的。所以这个时候就需要服务注册中心出场了,这个时候你的系统架构中需要引原创 2020-06-28 07:07:12 · 1671 阅读 · 2 评论 -
基于Consul的分布式锁实现
我们在构建分布式系统的时候,经常需要控制对共享资源的互斥访问。这个时候我们就涉及到分布式锁(也称为全局锁)的实现,基于目前的各种工具,我们已经有了大量的实现方式,比如:基于Redis的实现、基于Zookeeper的实现。本文将介绍一种基于Consul 的Key/Value存储来实现分布式锁以及信号量的方法。分布式锁实现基于Consul的分布式锁主要利用Key/Value存储API中的acquire和release操作来实现。acquire和release操作是类似Check-And-Set的操作:原创 2020-06-27 19:17:10 · 363 阅读 · 0 评论 -
基于Consul的分布式信号量实现
本文将继续讨论基于Consul的分布式锁实现。信号量是我们在实现并发控制时会经常使用的手段,主要用来限制同时并发线程或进程的数量,比如:Zuul默认情况下就使用信号量来限制每个路由的并发数,以实现不同路由间的资源隔离。信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量原创 2020-06-27 19:10:48 · 235 阅读 · 0 评论 -
Consul注销实例时候的问题
当我们在Spring Cloud应用中使用Consul来实现服务治理时,由于Consul不会自动将不可用的服务实例注销掉(deregister),这使得在实际使用过程中,可能因为一些操作失误、环境变更等原因让Consul中存在一些无效实例信息,而这些实例在Consul中会长期存在,并处于断开状态。它们虽然不会影响到正常的服务消费过程,但是它们会干扰我们的监控,所以我们可以实现一个清理接口,在确认故障实例可以清理的时候进行调用来将这些无效信息清理掉。开始以为只要简单的调用注销接口就能轻松完成,但是实际实践原创 2020-06-27 18:06:55 · 576 阅读 · 0 评论 -
Spring Cloud Finchley版中Consul多实例注册的问题处理
由于Spring Cloud对Etcd的支持一直没能从孵化器中出来,所以目前来说大多用户还在使用Eureka和Consul,之前又因为Eureka 2.0不在开源的消息,外加一些博眼球的标题党媒体使得Eureka的用户有所减少,所以,相信在选择Spring Cloud的用户群体中,应该有不少用户会选择Consul来做服务注册与发现。本文就来说一下,当我们使用Spring Cloud最新的Finchley版 + Consul 1.2.x时候最严重的一个坑:多实例注册的问题。问题解读问题:该问题.原创 2020-06-27 17:58:42 · 213 阅读 · 0 评论 -
使用Consul做服务发现的若干姿势
从2016年起就开始接触Consul,使用的主要目的就是做服务发现,后来逐步应用于生产环境,并总结了少许使用经验。最开始使用Consul的人不多,为了方便交流创建了一个QQ群(群号在最后),这两年微服务越来越火,使用Consul的人也越来越多,目前群里已有400多人,经常有人问一些问题,比如:服务注册到节点后,其他节点为什么没有同步? Client是干什么的?(Client有什么作用?) 能不能直接注册到Server?(是否只有Server节点就够了?) 服务信息是保存在哪里的? 如果节点挂了健原创 2020-06-27 14:44:48 · 851 阅读 · 0 评论 -
Spring Cloud 事件总线 Consul 入门
1. 概述在《Consul 极简入门》文章中,我们一起完成了 Consul 的学习,并完成了 Consul 服务器的搭建。本文我们来学习Spring Cloud Consul提供的spring-cloud-consul-binder组件,基于Spring Cloud Bus的编程模型,接入 Consul 提供的Event特性,实现事件总线的功能。Spring Cloud Bus 是事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud C...原创 2020-06-25 22:53:49 · 1169 阅读 · 0 评论 -
Spring Cloud 配置中心 Consul 入门
1. 概述在《Consul 极简入门》文章中,我们一起完成了 Consul 的学习,并完成了 Consul 服务器的搭建。本文我们来学习Spring Cloud Consul提供的spring-cloud-consul-config组件,接入 Consul 作为配置中心,实现服务的统一配置管理。2. 快速入门示例代码对应仓库:labx-28-sc-consul-config-demo。本小节,我们会在 Consul 服务中定义配置,并使用@ConfigurationProp...原创 2020-06-25 22:37:51 · 728 阅读 · 0 评论 -
Spring Cloud 注册中心 Consul 入门
1. 概述在《Consul 极简入门》文章中,我们一起完成了 Consul 的学习,并完成了 Consul 服务器的搭建。本文我们来学习Spring Cloud Consul提供的spring-cloud-consul-discovery组件,基于 Spring Cloud 的编程模型,接入 Consul 作为注册中心,实现服务的注册与发现。2. 注册中心原理在开始搭建 Consul Discovery 的示例之前,我们先来简单了解下注册中心的原理。在使用注册中心时,一共有三种角...原创 2020-06-25 19:01:58 · 255 阅读 · 0 评论 -
Consul 极简入门
1. 概述Consul是由 HashiCorp 基于 Go 语言实现的开源项目,可用于分布式系统的注册中心和配置中心的功能。旁白君:Consul 目前已经提供完整的Service Mesh 服务网格的能力,不过我们可以暂时先忽略。更多的关注,将 Consul 作为注册中心和配置中心。1.1 核心功能对应官方文档地址:https://www.consul.io/introConsul 的核心功能如下:①服务发现(Service Discovery):Consul 提供了...原创 2020-06-25 18:39:31 · 625 阅读 · 0 评论
分享