(第四篇)spring cloud之Consul注册中心

目录

一、介绍

二、安装

三、整合代码使用

1、创建服务提供者8006

2、创建服务消费者80

3、Eureka、zookeeper和consul的异同点


一、介绍

        Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。它提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用

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

官网https://www.consul.io/intro/index.html服务发现:提供HTTP和DNS两种发现方式。

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

kv存储:Key、Value的存储方式

多数据中心 以及 可视化Web界面

下载地址https://www.consul.io/downloads.html

二、安装

下载consul文件,window双击,Linux先修改权限,然后./consul

查看本版信息

./consul --version

已开发模式启动

./consul agent -dev -ui -client=0.0.0.0

访问:http://192.168.10.40:8500

三、整合代码使用

1、创建服务提供者8006

(1)、创建模块cloud-providerconsul-payment8006

(2)添加pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.hk.cloudstudy</groupId><artifactId>SecondSpringCloud</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.shxls</groupId><artifactId>cloud-providerconsul-payment8006</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--SpringCloud consul-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><!-- SpringBoot整合Web组件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--日常通用jar包配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
</project>

(3)添加yml文件

###consul服务端口号
server:port: 8006spring:application:name: consul-provider-payment####consul注册中心地址cloud:consul:host: 192.168.10.40port: 8500discovery:#hostname: 127.0.0.1service-name: ${spring.application.name}heartbeat:enabled: true

(4)添加启动类

package com.hk.cloudstudy;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8006 {public static void main(String[] args) {SpringApplication.run(PaymentMain8006.class,args);}
}

(5)创建controller

package com.hk.cloudstudy.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.UUID;@RestController
public class PaymentController {@Value("${server.port}")private String serverPort;@GetMapping("/payment/consul")public String paymentInfo() {return "springcloud with consul: "+serverPort+"\t\t"+ UUID.randomUUID().toString();}
}

(6)启动

访问   http://localhost:8006/payment/consul

2、创建服务消费者80

(1)、创建服务cloud-consumerconsul-order80

(2)创建pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.hk.cloudstudy</groupId><artifactId>SecondSpringCloud</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>cloud-consumerconsul-order80</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--SpringCloud consul-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency><!-- SpringBoot整合Web组件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--日常通用jar包配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>

(3)创建yml文件

###consul服务端口号
server:port: 80spring:application:name: cloud-consumer-order####consul注册中心地址cloud:consul:host: 192.168.10.40port: 8500discovery:#hostname: 127.0.0.1service-name: ${spring.application.name}heartbeat:enabled: true

(4)添加启动类

package com.hk.cloudstudy;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient //该注解用于向使用consul或者zookeeper作为注册中心时注册服务
public class OrderConsulMain80 {public static void main(String[] args) {SpringApplication.run(OrderConsulMain80.class,args);}
}

(5)配置bean

package com.hk.cloudstudy.config;import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;@Configuration
public class ApplicationContextBean {@Bean@LoadBalancedpublic RestTemplate getRestTemplate() {return new RestTemplate();}
}

(6)创建controller

package com.hk.cloudstudy.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
public class OrderConsulController {public static final String INVOKE_URL = "http://consul-provider-payment";@Autowiredprivate RestTemplate restTemplate;@GetMapping(value = "/consumer/payment/consul")public String paymentInfo() {String result = restTemplate.getForObject(INVOKE_URL+"/payment/consul", String.class);System.out.println("消费者调用支付服务(consule)--->result:" + result);return result;}
}

(7)启动调用

3、Eureka、zookeeper和consul的异同点

  • C:Consistency(强一致性)
  • A:Availability(可用性)
  • P:Partition tolerance(分区容错性)

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918904.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NAT 和 PNAT

核心概念与背景 IPv4 地址枯竭&#xff1a; IPv4 地址空间有限&#xff08;约 42.9 亿个&#xff09;&#xff0c;早已分配殆尽。NAT/PNAT 是缓解此问题的最重要、最广泛部署的技术。私有 IP 地址空间&#xff1a; IANA 保留了三个 IPv4 地址段专供私有网络内部使用&#xff08…

windows系统创建FTP服务

一丶开启FTP功能 控制面板->程序与功能->启用或关闭windows功能->Internet Information Services->勾选FTP服务器二丶创建FTP服务 1丶控制面板->windows工具->Internet Information Services (IIS) 管理器2丶网站->添加FTP站点->输入对应内容3丶点击新…

DeepSeek补全IBM MQ 9.4 REST API 执行命令的PPT

DeepSeek补全了我在网上找到的PPT的一页内容&#xff0c;帮了大忙了。人机协同&#xff0c;人工智能可以协助人更好的做事。下面的内容是讲解IBM MQ REST API 执行IBM MQ命令的PPT: MQSC for REST Tailored RESTful support for individual MQ objects and actions are in the …

【swift】SwiftUI动画卡顿全解:GeometryReader滥用检测与Canvas绘制替代方案

SwiftUI动画卡顿全解&#xff1a;GeometryReader滥用检测与Canvas绘制替代方案一、GeometryReader的性能陷阱深度解析1. 布局计算机制2. 动画中的灾难性表现二、GeometryReader滥用检测系统1. 静态代码分析器2. 运行时性能监控三、Canvas绘制优化方案1. 基础Canvas实现2. 性能优…

悄悄话、合唱层次感:声网空间音频解锁语聊新玩法

作为语聊房主播&#xff0c;我曾觉得线上相聚差点意思。多人开麦时声音混杂&#xff0c;互动缺真实感&#xff0c;观众留不住&#xff0c;自己播着也没劲。直到平台接入声网空间音频&#xff0c;一切改观&#xff0c;观众说像在真实房间聊天&#xff0c;留存率涨 35%&#xff0…

【工具】多图裁剪批量处理工具

文章目录工具核心功能亮点1. 批量上传与智能管理2. 精准直观的裁剪控制3. 一键应用与批量处理为什么这个工具能提升你的工作效率&#xff1f;统一性与一致性保证节省90%以上的时间专业级功能&#xff0c;零学习成本实际应用场景电子商务摄影工作内容创作教育领域技术优势完全在…

如何提升需求分析能力

要系统性地提升需求分析能力&#xff0c;核心在于实现从一个被动的“需求记录员”&#xff0c;向一个主动的、价值驱动的“业务问题解决者”的深刻转型。要完成这一蜕变&#xff0c;必须在五个关键领域进行系统性的修炼与实践&#xff1a;培养“穿透表象”的系统思维能力、掌握…

另类的pdb恢复方式

cdb中有pdb1,pdb2 需求&#xff1a;希望将在线热备份pdb1的备份集a&#xff0c;恢复成pdb3&#xff0c;使得cdb中有pdb1,2,3 参考到的&#xff1a;RMAN备份恢复典型案例——跨平台迁移pdb - 墨天轮 ORA-65122: Pluggable Database GUID Conflicts With The GUID Of An Existi…

HarmonyOS 实战:用 @Observed + @ObjectLink 玩转多组件实时数据更新

摘要 在鸿蒙&#xff08;HarmonyOS&#xff09;应用开发中&#xff0c;实时数据更新是一个绕不开的话题&#xff0c;尤其是在你封装了很多自定义组件、需要多个组件之间共享和同步数据的场景里。过去我们可能会依赖父子组件直接传参或全局状态管理&#xff0c;但这样写会让代码…

云原生俱乐部-杂谈2

说实话&#xff0c;杂谈系列可能会比较少&#xff0c;因为毕竟大部分时间都是上的线上&#xff0c;迄今为止也是&#xff0c;和雷老师与WH的交流不是很多。这个系列仅仅是我在做其他笔记部分无聊的时候来写的&#xff0c;内容也没有规划过&#xff0c;随想随写。倒不是时间太多…

波浪模型SWAN学习(1)——模型编译与波浪折射模拟(Test of the refraction formulation)

SWAN模型编译与波浪折射模拟&#xff08;Test of the refraction formulation&#xff09;编译过程算例简介参数文件文件头&#xff08;HEADING&#xff09;计算区域和网格地形数据边界条件物理模块设置输出设置执行参数模拟结果由于工作原因&#xff0c;最近开始接触波浪模型&…

更换cmd背景图片

打开cmd 右击顶部&#xff0c;选择设置选择命令提示符&#xff0c;外观选择背景图像路径更改成自己的图片&#xff0c;然后右下角保存 设置成功

基于RobustVideoMatting(RVM)进行视频人像分割(torch、onnx版本)

发表时间&#xff1a;2021年8月25日 项目地址&#xff1a;https://peterl1n.github.io/RobustVideoMatting/ 论文阅读&#xff1a;https://hpg123.blog.csdn.net/article/details/134409222 RVM是字节团队开源的一个实时人像分割模型&#xff0c;基于LSTMConv实现&#xff0c;…

强制从不抱怨环境。

警世俗语&#xff1a;强者逆袭心法&#xff08;句句穿心&#xff09;环境是泥潭&#xff1f;那就让它开出金莲&#xff01; —— 抱怨是弱者的裹脚布&#xff0c;行动是强者的登天梯。烂泥里也能种出摇钱树&#xff0c;关键看你敢不敢下手挖&#xff01;老天爷发牌烂&#xff1…

MC0439符号统计

码蹄集OJ-符号统计 MC0439・符号统计 难度&#xff1a;黄金 时间限制&#xff1a;1 秒 占用内存&#xff1a;256 M 收藏 报错 在华容道放曹的紧张时刻&#xff0c;小码哥接到了一个看似微不足道却至关重要的任务&#xff1a;解读一条仅由小写英文字母组成的神秘字符串 s&#…

Android Jetpack 系列(五)Room 本地数据库实战详解

1. 简介 在需要轻量级本地持久化的场景中&#xff0c;DataStore 是一个理想的选择&#xff08;详见《Android Jetpack 系列&#xff08;四&#xff09;DataStore 全面解析与实践》&#xff09;。但当你面临如下需求时&#xff0c;本地数据库便显得尤为重要&#xff1a; 复杂的…

C语言实现类似C#的格式化输出

在C#中&#xff0c;格式化输出可以使用索引占位符以及复合格式的占位符&#xff0c;可以不用关心后面参数是什么类型&#xff0c;使用起来非常方便&#xff0c;如下简单的示例&#xff1a; Console.WriteLine("{2} {1} {0} {{{2}}}", "Hello, World!", 1,…

一人公司方法论

** 一人公司方法论 ** 那什么是一人公司&#xff1f; 字面的理解就是一个人运营的公司&#xff0c;但实际上它指代的是比较少的人运营的小公司&#xff0c;一般来说 1 ~ 3 个人运营的公司&#xff0c;也可以把它放到一人公司的范围以内。其他一些形式&#xff0c;比如说一个人再…

Ceph CSI 镜像删除流程与 Trash 机制失效问题分析文档

#作者&#xff1a;闫乾苓 文章目录一、问题背景二、实际行为三、源码分析四、分析与推论五、期望行为与建议优化六、结论一、问题背景 在生产环境中&#xff0c;为避免因误操作导致的永久数据丢失&#xff0c;Ceph RBD 提供了 Trash 功能&#xff0c;允许将镜像“软删除”至回…

.NET Framework 3.5 不原生支持PreApplicationStartMethod特性

.NET Framework 3.5 不原生支持PreApplicationStartMethod特性。这个特性是在 .NET Framework 4.0 中引入的&#xff0c;用于在应用程序启动早期执行初始化逻辑。 在.NET 3.5 中&#xff0c;如果你需要实现类似的 “应用启动时自动注册模块” 功能&#xff0c;需要通过手动配置…