Java --- springcloud之consul

目录

一、consul的使用

1.1、主要功能

1.2、安装及运行 

1.3、添加微服务到consul 

 1.3.1、8001微服务添加相关pom、配置文件、注解

1.3.2、80微服务添加相关pom、配置文件、注解

 1.4、三个注册中心异同

1.5、consul进行分布式配置

1.5.1、修改8001的yml配置文件

1.5.2、在consul中进行配置 

1.6、配置动态刷新

一、consul的使用

1.1、主要功能

服务发现、健康监测、KV存储、多数据中心、可视化web界面

1.2、安装及运行 

 解压即可

访问地址:http://localhost:8500/

1.3、添加微服务到consul 

 1.3.1、8001微服务添加相关pom、配置文件、注解

   <!--SpringCloud consul discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency>
spring:application:name: cloud-payment-servicedatasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/cloud2024?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=trueusername: rootpassword: 123456####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:service-name: ${spring.application.name}

在主启动类上添加 

@EnableDiscoveryClient

1.3.2、80微服务添加相关pom、配置文件、注解

<!--SpringCloud consul discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency>
spring:application:name: cloud-consumer-order####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:prefer-ip-address: true #优先使用服务ip进行注册service-name: ${spring.application.name}

在主启动类上添加 

@EnableDiscoveryClient

config配置类

@Bean@LoadBalancedpublic RestTemplate restTemplate(){return  new RestTemplate();}

controller层

public static final String URL = "http://cloud-payment-service";

 1.4、三个注册中心异同

AP架构

当网络分区出现后,为了保证可用性,系统B可以返回旧值,保证系统的可用性。

当数据出现不一致时,虽然A, B上的注册信息不完全相同,但每个Eureka节点依然能够正常对外提供服务,这会出现查询服务信息时如果请求A查不到,但请求B就能查到。如此保证了可用性但牺牲了一致性结论:违背了一致性C的要求,只满足可用性和分区容错,即AP

CP架构

当网络分区出现后,为了保证一致性,就必须拒接请求,否则无法保证一致性,Consul 遵循CAP原理中的CP原则,保证了强一致性和分区容错性,且使用的是Raft算法,比zookeeper使用的Paxos算法更加简单。虽然保证了强一致性,但是可用性就相应下降了,例如服务注册的时间会稍长一些,因为 Consul 的 raft 协议要求必须过半数的节点都写入成功才认为注册成功 ;在leader挂掉了之后,重新选举出leader之前会导致Consul 服务不可用。结论:违背了可用性A的要求,只满足一致性和分区容错,即CP

 

1.5、consul进行分布式配置

1.5.1、修改8001的yml配置文件

application.yml文件

server:port: 8001# ==========applicationName + druid-mysql8 driver===================
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/cloud2024?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=trueusername: rootpassword: 123456profiles:active: dev # 多环境配置加载内容dev/prod,不写就是默认default配置# ========================mybatis===================
mybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.cjc.cloud.entitiesconfiguration:map-underscore-to-camel-case: true

bootstrap.yml配置文件

spring:application:name: cloud-payment-service####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:service-name: ${spring.application.name}config:profile-separator: '-' # default value is ",",we update '-'format: YAML

1.5.2、在consul中进行配置 

文件创建格式:config/cloud-xxx-dev/data

1.5.3、测试代码

 @Value("${server.port}")private String port;@GetMapping("/pay/info")public ResultData getInfo(@Value("${cjc.info}") String info){return ResultData.success("info:" + info + " port:" + port);}

1.6、配置动态刷新

在服务主启动类上添加注解

@RefreshScope //动态刷新

 

 

 

 

 

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

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

相关文章

Ubuntu中如何卸载软件

在Ubuntu系统中要干净地卸载软件&#xff0c;意味着不仅移除软件本身&#xff0c;还包括它的配置文件以及可能存在的依赖关系。以下是几种确保干净卸载的方法&#xff1a; 方法1&#xff1a;使用apt-get 通过命令行进行卸载&#xff0c;这是最常用且能处理依赖关系的方式&…

运维知识点-Apache HTTP Server

Apache 介绍 介绍 Apache是一个开源的Web服务器软件&#xff0c;全称为Apache HTTP Server&#xff0c;由Apache软件基金会开发和维护。它是目前全球使用最广泛的Web服务器软件之一&#xff0c;占全球所有网络服务器的很大比例。Apache服务器具有跨平台的特性&#xff0c;可以…

python中try-except-finally简介及用法

什么是try-except-finally&#xff1f; try-except-finally是python中的一个语句&#xff0c;它用于处理可能发生的异常&#xff08;错误&#xff09;&#xff0c;并在异常发生后执行一些必要的操作。它由三个部分组成&#xff1a; try&#xff1a;尝试执行一段可能发生异常的…

最简k8s部署(AWS Load Balancer Controller使用)

问题 我需要在k8s集群里面部署springboot服务&#xff0c;通过k8s ingress访问集群内部的springboot服务&#xff0c;应该怎么做&#xff1f; 这里假设已经准备好k8s集群&#xff0c;而且也准备好springboot服务的运行镜像了。这里我们将精力放在k8s服务编排上面。 一图胜千言…

Github 2024-03-09 Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-03-09统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Python项目1Scala项目1CUE项目1InfluxDB Edge: 开源实时时序数据库 创建周期:3817 天开发语言:Rust协议类型:Apache License 2.0S…

基于Springboot的智慧社区居家养老健康管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的智慧社区居家养老健康管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;…

C语言如何选择循环语句?

一、问题 循环语句有三种&#xff0c;分别是 while 循环、do...while 循环和 for 循环。对于不同的程序&#xff0c; 应该使⽤不同的循环结构。那么&#xff0c;应该如何选择呢&#xff1f; 二、解答 1. 三种循环的⽐较 三种循环都可以⽤来处理同⼀问题。⼀般情况下&…

Humanoid-Gym 开源人形机器人端到端强化学习训练框架!星动纪元联合清华大学、上海期智研究院发布!

系列文章目录 前言 Humanoid-Gym: Reinforcement Learning for Humanoid Robot with Zero-Shot Sim2Real Transfer GitHub Repository: GitHub - roboterax/humanoid-gym: Humanoid-Gym: Reinforcement Learning for Humanoid Robot with Zero-Shot Sim2Real Transfer 一、介…

[Electron]ipcMain.on和ipcMain.handle的区别

在Electron中的通信中&#xff0c;我们经常会用到ipcRender.invoke和ipvRender.send 接下来简要说明下这两个方法的区别 ipcMain.on(channel, listener) 这是 Electron 的主进程&#xff08;main process&#xff09;监听来自渲染进程&#xff08;renderer process&#xff09…

[java基础揉碎]super关键字

super关键字: 基本介绍 super代表父类的引用&#xff0c;用于访问父类的属性、方法、构造器 super给编程带来的便利/细节 1.调用父类的构造器的好处(分工明确&#xff0c;父类属性由父类初始化&#xff0c;子类的属性由子类初始化) 2.当子类中有和父类中的成员(属性和方法)重…

【代码】JetpackComposeKotlin分享Bitmap图片

目录 1. 发送函数2. 配置fileProvider3. bitmap保存本地的函数4. 全局变量5. 封装的ButtonIcon函数 Android12在jetpack compose中使用Kotlin代码分享Bitmap图片。 1. 发送函数 Composable fun Share() {val context LocalContext.currentButtonIcon(icon Icons.Rounded.Sha…

软考高级:信息系统生命周期概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

SpringCloudGateway网关限流

文章目录 令牌桶算法原理Gateway中限流实现 网关除了请求路由、身份验证&#xff0c;还有一个非常重要的作用&#xff1a;请求限流。当系统面对高并发请求时&#xff0c;为了减少对业务处理服务的压力&#xff0c;需要在网关中对请求限流&#xff0c;按照一定的速率放行请求。 …

Android Studio如何修改JDK版本和获知使用的Java版本

什么是JDK和Java版本&#xff1f; 首先&#xff0c;让我们简单了解一下什么是JDK和Java版本。JDK&#xff08;Java Development Kit&#xff09;是Java开发工具包的缩写&#xff0c;它包含了Java的运行环境&#xff08;JRE&#xff09;和开发工具&#xff0c;用于开发Java应用…

【数据结构】单链表的层层实现!! !

关注小庄 顿顿解馋(●’◡’●) 上篇回顾 我们上篇学习了本质为数组的数据结构—顺序表&#xff0c;顺序表支持下标随机访问而且高速缓存命中率高&#xff0c;然而可能造成空间的浪费&#xff0c;同时增加数据时多次移动会造成效率低下&#xff0c;那有什么解决之法呢&#xff…

VS Code引入ECharts

Charts是一个使用 JavaScript 实现的开源可视化库&#xff0c;涵盖各行业图表&#xff0c;提供了丰富的图表类型和交互能力。&#xff08;摘自菜鸟教程&#xff09; 下面我们来介绍一下VS Code引入ECharts的相关操作 检查电脑是否已经安装了Java语言的软件开发工具包 ECharts…

设计模式-行为型设计模式-命令模式

命令模式&#xff08;Command&#xff09;&#xff0c;将一个请求封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。[DP] // 命令接口 interface Command {void execute(); }// 具体命…

备考银行科技岗刷题笔记(持续更新版)

银行考试计算机部分复习 IEEE 802.11的帧格式 1.1 IEEE 802.11是什么&#xff1f; 802.11是国际电工电子工程学会&#xff08;IEEE&#xff09;为无线局域网络制定的标准。目前在802.11的基础上开发出了802.11a、802.11b、802.11g、802.11n、802.11ac。并且为了保证802.11更…

java SSM售后服务管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

源码特点 java SSM售后服务管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主要采用B/…

java Lambda表达式如何实现函数递归

java Lambda表达式如何实现函数递归 Lambda表达式本身并不直接支持递归&#xff0c;因为Lambda表达式是匿名的&#xff0c;并且没有名字可以引用自身来实现递归。但是&#xff0c;你可以通过其他方式在Java中使用Lambda表达式来实现递归。 一种常见的做法是使用一个函数式接口…