使用Spring Cloud Consul实现服务的注册和发现

SpringCloud实战【九】: SpringCloud服务间调用 1 服务间调用 微服务的特点是服务数量特别多,服务和服务之间也需要有交互,这就涉及到服务间的调用,即服务与服务之间如何通信。提到服务与服务之间的通信,最通用的莫过于HttpClient,在其它的通信架构中基本都使用HttpClient来作为底层的通讯模型。在SpringCloud中依然可以使用HttpClient进行服务与服务调用,只不过如果采用HttpClient调用的话,会有一些弊端,例如: 如果同一个服务有多个负载的话,采用HttpClient调用时,没有办法处理负载均衡的问题。还有... 阅读详情

首先安装consul环境,参照之前的文章:http://blog.youkuaiyun.com/mn960mn/article/details/51753893

项目规划,2个服务端,1个客户端


首先来看服务端,

一:服务端1:

项目依赖

[java]  view plain  copy
  1. <dependencyManagement>  
  2.     <dependencies>  
  3.         <dependency>  
  4.             <groupId>org.springframework.cloud</groupId>  
  5.             <artifactId>spring-cloud-consul-dependencies</artifactId>  
  6.             <version>1.0.1.RELEASE</version>  
  7.             <type>pom</type>  
  8.             <scope>import</scope>  
  9.         </dependency>  
  10.     </dependencies>  
  11. </dependencyManagement>  
  12.   
  13. <dependencies>  
  14.     <dependency>  
  15.         <groupId>org.springframework.boot</groupId>  
  16.         <artifactId>spring-boot-actuator</artifactId>  
  17.         <version>1.3.5.RELEASE</version>  
  18.     </dependency>  
  19.     <dependency>  
  20.         <groupId>org.springframework.cloud</groupId>  
  21.         <artifactId>spring-cloud-starter-consul-discovery</artifactId>  
  22.     </dependency>  
  23. </dependencies>  

注意,增加spring-boot-actuator是为了项目可以访问/health 路径来判断服务是否健康

[java]  view plain  copy
  1. package com.pp.consul1;  
  2.   
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;  
  6. import org.springframework.web.bind.annotation.RequestMapping;  
  7. import org.springframework.web.bind.annotation.RestController;  
  8.   
  9. @SpringBootApplication  
  10. @EnableDiscoveryClient  
  11. @RestController  
  12. public class ConsulApp {  
  13.       
  14.     @RequestMapping("/home")  
  15.     public Object home() {  
  16.         System.out.println("1111111111111");  
  17.         return "OK11";  
  18.     }  
  19.       
  20.     public static void main( String[] args ) {  
  21.         SpringApplication.run(ConsulApp.class, args);  
  22.     }  
  23. }  

application.properties 配置内容

[plain]  view plain  copy
  1. server.port=9955  
  2.   
  3. spring.application.name=Consul-Server-1  
  4. spring.cloud.consul.host=192.168.1.100  
  5. spring.cloud.consul.port=8500  
  6. spring.cloud.consul.enabled=true  
  7. spring.cloud.consul.discovery.enabled=true  
  8. spring.cloud.consul.discovery.instanceId=tomcat1  
  9. spring.cloud.consul.discovery.serviceName=tomcat  
  10. spring.cloud.consul.discovery.hostname=192.168.2.95  
  11. spring.cloud.consul.discovery.port=${server.port}  
  12. spring.cloud.consul.discovery.healthCheckUrl=http://192.168.2.95:9955/health  
  13. spring.cloud.consul.discovery.healthCheckInterval=10s  
  14. spring.cloud.consul.discovery.tags=dev  

看过我之前文章的,应该对这些配置很清楚了。这样,一个服务端就配置写好了。

由于我们增加了@EnableDiscoveryClient注解,所以,系统启动的时候,就会向consul注册一个服务,服务的名字为tomcat, ID为tomcat1

访问consul的HTTP API /v1/catalog/service/tomcat 输出如下:

[plain]  view plain  copy
  1. {  
  2.     "Node":"192.168.1.100",  
  3.     "Address":"192.168.1.100",  
  4.     "ServiceID":"tomcat1",  
  5.     "ServiceName":"tomcat",  
  6.     "ServiceTags":["dev"],  
  7.     "ServiceAddress":"192.168.2.95",  
  8.     "ServicePort":9955,  
  9.     "ServiceEnableTagOverride":false,  
  10.     "CreateIndex":993,  
  11.     "ModifyIndex":1057  
  12. }  

二:服务端2

项目依赖和上面一样

[java]  view plain  copy
  1. package com.pp.consul2;  
  2.   
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;  
  6. import org.springframework.web.bind.annotation.RequestMapping;  
  7. import org.springframework.web.bind.annotation.RestController;  
  8.   
  9. @SpringBootApplication  
  10. @EnableDiscoveryClient  
  11. @RestController  
  12. public class ConsulApp {  
  13.       
  14.     @RequestMapping("/home")  
  15.     public Object home() {  
  16.         System.out.println("2222222222222222");  
  17.         return "OK22";  
  18.     }  
  19.       
  20.     public static void main( String[] args ) {  
  21.         SpringApplication.run(ConsulApp.class, args);  
  22.     }  
  23. }  
application.properties 配置内容:

[plain]  view plain  copy
  1. server.port=9966  
  2.   
  3. spring.application.name=Consul-Server-2  
  4. spring.cloud.consul.host=192.168.1.100  
  5. spring.cloud.consul.port=8500  
  6. spring.cloud.consul.enabled=true  
  7. spring.cloud.consul.discovery.enabled=true  
  8. spring.cloud.consul.discovery.instanceId=tomcat2  
  9. spring.cloud.consul.discovery.serviceName=tomcat  
  10. spring.cloud.consul.discovery.hostname=192.168.2.95  
  11. spring.cloud.consul.discovery.port=${server.port}  
  12. spring.cloud.consul.discovery.healthCheckUrl=http://192.168.2.95:9966/health  
  13. spring.cloud.consul.discovery.healthCheckInterval=10s  
  14. spring.cloud.consul.discovery.tags=test  

三:客户端

项目依赖,只需要spring-cloud-starter-consul-discovery

application.properties 配置内容:

[plain]  view plain  copy
  1. server.port=9977  
  2.   
  3. spring.application.name=Consul-Client  
  4. spring.cloud.consul.host=192.168.1.100  
  5. spring.cloud.consul.port=8500  
  6. spring.cloud.consul.discovery.register=false  
注意,这里的spring.cloud.consul.discovery.register需要配置成false,否则系统启动的时候,会向consul注册一个服务

[java]  view plain  copy
  1. package com.pp.client;  
  2.   
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4. import org.springframework.boot.SpringApplication;  
  5. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  6. import org.springframework.cloud.client.discovery.DiscoveryClient;  
  7. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;  
  8. import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;  
  9. import org.springframework.web.bind.annotation.RequestMapping;  
  10. import org.springframework.web.bind.annotation.RestController;  
  11.   
  12. @SpringBootApplication  
  13. @EnableDiscoveryClient  
  14. @RestController  
  15. public class ConsulClient  {  
  16.       
  17.     @Autowired  
  18.     private LoadBalancerClient loadBalancer;  
  19.       
  20.     @Autowired  
  21.     private DiscoveryClient discoveryClient;  
  22.       
  23.     /** 
  24.      * 从所有服务中选择一个服务(轮询) 
  25.      */  
  26.     @RequestMapping("/discover")  
  27.     public Object discover() {  
  28.         return loadBalancer.choose("tomcat").getUri().toString();  
  29.     }  
  30.       
  31.     /** 
  32.      * 获取所有服务  
  33.      */  
  34.     @RequestMapping("/services")  
  35.     public Object services() {  
  36.         return discoveryClient.getInstances("tomcat");  
  37.     }  
  38.       
  39.     public static void main( String[] args ) {  
  40.         SpringApplication.run(ConsulClient.class, args);  
  41.     }  
  42. }  

启动之后,就可以访问/discover,/services 查看效果了。
Spring Cloud Consul 实现服务注册/发现 前置条件:首先根据 搭建Consul集群 搭建好Consul集群。 下面使用Spring Cloud Consul 实现服务注册/发现。 Spring Cloud 版本:Greenwich.SR5 ‘Spring Boot’ 版本:2.2.4.RELEASE Consul 版本:1.6.3 引入依赖 首先需要引入几个依赖: <!-- spring cloud consul 相关依赖 ... 阅读详情

相关推荐

spring cloud搭建微服务second-fiberhome(二):结合consul实现服务注册与服务发现

spring cloud官方耦合度最好的服务注册于服务发现是eureka。但是在实际应用中,consul服务既能结合spring cloud又能结合其他服务进行服务注册与服务发现,同时功能点强于eureka,对于consul与eureka的优缺点,在此不做介绍。下文使用consul结合spring cloud进行服务注册与服务发现。 consul安装包:consul_0.8.3_windows_am

moyu_2012的博客 2993

已解决:org.springframework.cloud.client.discovery.EnableDiscoveryClient 不存在

PS:为什么清除缓存有用,我认为是这种的,创建项目索引,大型项目在创建索引的过程中可能会出现依赖没有正常加载的问题!并且,IDEA 的缓存和索引主要是用来加快文件查询的速度,但是如果你的缓存和索引在新加入依赖后没有更新或者这部分内容没有正常加载,这时候你启动项目就会出现第二种原因,依赖是正常的,但是就是报错!针对我遇到的导致问题的第二种原因,经过测试有两种解决问题的方式!将项目交给maven管理,但是有可能会导致其他的问题!错误,这个错误蛮奇怪的,有必要记录一下。在IDEA中,清空缓存。

qq_43408367的博客 7809

SpringCloud工作笔记033---找不到import org.springframework.cloud.client.discovery.EnableDiscoveryClient;无法导入

 JAVA技术交流QQ群:170933152 POM.XML中需要加入,这样就好了: &lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt; ...

添柴程序猿的专栏 1万+

Spring Cloud 服务发现/注册

Spring Cloud Netflix Eureka Eureka 服务器 引入 Maven 依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> 激活 Eureka 服务器 package com...

qqqqqqhhhhhh的博客 493

介绍Spring Cloud Consul服务发现:实现了Provider服务的消息获取方法,并在Consul注册了自己的服务。然后,我们编写了Consumer服务,通过Consul的服务发现功能

2021年,随着微服务架构、容器技术和云计算等技术的不断发展,服务发现成为各个微服务框架和平台不可或缺的一环。Apache Consul是由HashiCorp公司推出的一款开源的服务发现和配置解决方案。Spring Cloud Consul 提供了对Consul的整合支持,使得Spring Cloud应用可以方便地通过Consul实现服务注册和发现功能。本文将从以下三个方面介绍Spring Cloud Consul服务发现的相关内容。服务注册与发现。

AI天才研究院 1222

Spring Cloud系列教程:使用Consul进行服务注册与发现(Java实现)

Consul是一个开源的服务网格解决方案,它提供了服务发现、健康检查和负载均衡等功能,可以帮助我们构建可靠的分布式系统。Consul是一个开源的服务网格解决方案,它提供了服务发现、健康检查和负载均衡等功能,可以帮助我们构建可靠的分布式系统。现在,我们可以运行我们的应用程序,并在Consul的管理界面上查看注册的服务。现在,我们可以运行我们的应用程序,并在Consul的管理界面上查看注册的服务。在这个例子中,我们将创建一个简单的RESTful服务,并将其注册到Consul中。

ByteGlide的博客 212

Spring Cloud之DiscoveryClient使用

Spring Cloud之DiscoveryClient使用 主要修改zk order的代码: package com.toov5.api.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframew...

art_code的博客 2843

CANoe诊断测试避坑指南:DTC故障注入与ECU刷写失败的N个常见原因排查

本文深入解析CANoe诊断测试中的常见问题,重点探讨DTC故障注入与ECU刷写失败的排查策略。从会话管理、安全访问到数据完整性校验,提供实战经验与CAPL脚本示例,帮助工程师规避诊断测试中的典型陷阱,提升车载网络通信与ECU刷写的可靠性。

weixin_29278805的博客 462

Spring Cloud整合Consul实现服务注册和发现

Consul简介:一款适用于分布式系统下服务发现和配置的开源工具,支持服务健康检查、key/value数据存储、分布一致性实现、多数据中心方案,并且内置服务注册和发现框架,支持Spring Cloud集成。 实现准备: 1.Consul独立下载安装:https://www.consul.io/downloads.html 2.解压后只有一个简单的consul.exe可执行文件,同级目录下执行...

lvhu123的博客 1422

LCL滤波器参数设计实战:从理论约束到工程选型指南

本文提供了LCL滤波器参数设计的实战指南,从理论约束到工程选型逐步拆解。核心在于平衡总电感量、电感比与电容值,确保谐振频率落在安全区间,以满足并网电流谐波标准并维持系统稳定。文章以10kW并网逆变器为例,给出了具体的参数计算流程与选型步骤,并强调了寄生参数、阻尼设计等工程实现细节。

c6d7e8f9g的博客 922

Simulink玩转PMSM无感FOC:从IF强拖参数调试到切换失败的避坑指南

本文深入探讨了Simulink在PMSM无感FOC控制中的IF强拖启动参数调试与切换避坑技巧。通过详细解析强拖加速、速度维持和闭环切换三大阶段的设计逻辑,以及五个常见陷阱的解决方案,帮助工程师快速定位启动失败和切换震荡问题。文章还提供了典型故障的波形诊断方法和高级调试工具链优化建议,是电机控制领域的实用指南。

weixin_29164843的博客 408

使用Spring Cloud Consul实现微服务注册与发现的全面指南

Spring Cloud Consul 是 Spring Cloud 生态系统中的一个组件,它集成了 HashiCorp 的 Consul,提供了服务注册与发现、配置管理、健康检查等功能。Consul 是一个支持分布式、高可用性和多数据中心的服务网格(Service Mesh),并通过一个中心化的服务注册表来存储和管理服务实例的信息。通过使用 Spring Cloud Consul,微服务架构能够更高效地实现服务注册与发现、配置管理和健康检查。

weixin_41859354的博客 1413

台式机ubuntu系统屏幕无法调节的问题(已解决)(汇总)

背景:新配了一台主机,安装了双系统,windows下屏幕在带鱼屏上显示良好,但Ubuntu系统屏幕拉伸严重。 问题描述:系统没有适应屏幕被整个拉伸了,进入设置界面,显示Built-in Display,分辨率只有1024*768无法设置。 尝试一:网上最多的方法就是使用xrandr, 结果显示:xrandr:Failed to get size of gamma for output default 尝试二: 第一次进入命令行页面:login:填你的用户面 password:使用字母上方的数字键输入你的密码

weixin_45626706的博客 4625

Spring Cloud Consul 服务注册和发现实现

Spring Cloud Consul 服务注册和发现实现 Spring Cloud Kubernetes 使用,可以通过引入 org.springframework.cloud:spring-cloud-starter-consul-discovery,这个 starter 依赖于 org.springframework.cloud:spring-cloud-consul-core 和 org.springframework.cloud:spring-cloud-consul-discovery Cons

啦啦啦啦 la 1615

从ADS到SystemVue:当简单链路预算不够用时,我的射频系统级仿真方案升级实录

本文详细介绍了从ADS到SystemVue的射频系统级仿真升级路径,重点分析了基础链路预算在多端口元件和复杂场景下的局限性,并提供了SystemVue在非线性系统验证和跨域协同分析中的优势。通过实际案例展示了如何平滑迁移工具链,提升仿真精度和效率,适用于5G、毫米波雷达等现代射频系统设计。

weixin_34233974的博客 343

PPT里文字太多如何排版-一口气教你7种布局瞬间让PPT高大上起来

PPT里全是文字且很拥挤怎么办?本篇教你使用7种不同的排版让你的PPT瞬间变得高大上起来。

打造全国最全的AI Agent开发知识领域的博客 5022

consul java 服务发现_java相关:详解使用Spring Cloud Consul实现服务的注册和发现

java相关:详解使用Spring Cloud Consul实现服务的注册和发现发布于 2020-5-30|复制链接摘记: 项目规划,2个服务端,1个客户端首先来看服务端,一:服务端1:项目依赖```xml..项目规划,2个服务端,1个客户端首先来看服务端,一:服务端1:项目依赖```xmlorg.springframework.cloudspring-cloud-consul-dependenc...

weixin_32546235的博客 455

图文:银行核心账务处理逻辑(白话篇)

银行账务系统分为对内账(记录银行自身资产负债)和对外账(处理客户交易),通过特定编码规则的账号体系进行管理。采用T型账户结构和凭证制度确保每笔交易可追溯,通过明细核算与综合核算双线并行、每日轧账核对(科目日结单、总账、日计表)实现账务精准平衡。从业务触发到最终账平的全流程体现了银行账务"分层记录、双向核对、闭环校验"的核心原则,保障资金流动的透明性与安全性。

银行信息系统应用架构详解 541

服务注册发现consul之二:在Spring Cloud中使用Consul实现服务的注册和发现

首先安装consul环境,参照之前的文章:《服务注册发现consul之一:consul介绍及安装》中的第一节介绍。 Spring Cloud使用Consul的服务与发现 1、导入依赖pring-cloud-starter-consul-discovery。 2、在其入口文件Application加入注解@EnableDiscoveryClient,开启服务发现(在consul中注册自己)。 ...

weixin_33806300的博客 446

2022年12月机器人技术等级考试试卷(三级实操) 试题解析

2022年12月机器人技术等级考试试卷(三级实操) 试题解析

http://www.cierobot.com 1523

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Spring Cloud 整合 Consul 实现服务注册、发现

采用微服务架构的系统,由按照业务划分、职责单一的多个服务单元组成,并且每个服务可能又有多个服务实例。相比传统单体架构,微服务服务单元粒度比较小、服务数量较多、服务之间的依赖比较复杂,服务之间调用往往会形成网状结构,为了更好地统一管理服务实例,注册中心应运而生。 服务注册是指服务提供者向注册中心注册服务实例,主要将其服务信息如服务名称、IP 地址、端口等注册到注册中心。 服务发现是指服务消费者需...

qq_41377914的博客 863

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Spring Cloud 基于Consul 实现服务注册与发现

Spring Cloud自己体系中的注册中心为Eureka,同时也支持其它服务来进行服务注册与发现。本文介绍使用Consul来实现服务注册与发现,并整合进Spring Cloud项目中进行使用。 本文项目依赖环境版本为: Consul → 1.5.0 Spring Cloud → Edgware.SR5 Spring Boot → 1.5.21 操作系统 → Win10 (PowerShe...

leonDuHua的博客 517

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

转载Spring Cloud Consul实现服务的注册和发现

第一篇:SpringCloud 构建微服务系统之服务注册和发现(consul) - kldx5092 - 博客园 1. consul 官网 (https://www.consul.io) 2. consul 简介 consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行ag

SHUYANSAMA的博客 703
上一篇: Netflix开源类库archaius(一)概述
下一篇: consul的安装和配置
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值