springCould中的consul-从小白开始【4】

news2024/11/26 13:57:20

目录

1.consul介绍 ❤️❤️❤️

2.安装 ❤️❤️❤️

3.创建8006模块 ❤️❤️❤️

 4.创建80模块❤️❤️❤️


1.consul介绍 ❤️❤️❤️

Consul 是一种用于服务发现配置分布式一致性的开源软件。它由HashiCorp开发和维护,可用于帮助构建和管理现代化的分布式系统。Consul提供了服务注册与发现、健康检查、分布式键值存储、多数据中心支持等功能,可帮助开发人员和系统管理员更好地管理和监控分布式应用程序和微服务架构。

2.安装 ❤️❤️❤️

官网:https://developer.hashicorp.com/consul/install?product_intent=consul#Windows

小张下载的Windows版的~ 

  • 1.窗口下直接cmd
  • 2.使用consul --version 查看版本号
  • 3.使用 consul agent -dev 运行
  • 4.浏览器访问 localhost:8500

  • 访问地址,说明成功

3.创建8006模块 ❤️❤️❤️

1.建模块

在父工程下创建工程

注意:jdk版本号,maven版本

2.导pom

1.springboot依赖

2.mybatis依赖

3.mysql依赖

4.通用配置

5.consul依赖

    <dependencies>
        <!--springboot-->
        <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>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <!--druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.16</version>
        </dependency>
        <!--mysql-connector-java-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--jdbc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--通用配置-->
        <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>

        <!--引入自己的api通用包-->
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--springboot整合consul客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
    </dependencies>

3.写yml

1.服务端口

2.服务名称

3.datasource配置

4.consul配置

5.mybatis配置

server:
  port: 8006
spring:
  application:
    name: consul-provider-payment
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springcloud
    username: root
    password: 123456
  #consul注册信息
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}


mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.xz.springcloud.entity

4.主启动类

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8006 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8006.class);
    }
}

5.编写业务

1.引入自己的端口号

2.注入service

3.编写业务

@RestController
public class PaymentController {

    @Value("${server.port}")
    private String serverPort;

    @Autowired
    private PaymentService paymentService;

    @RequestMapping("/payment/consul")
    public String paymentZk() {
        return "spring cloud with consul:" + serverPort + "\t\t" + UUID.randomUUID().toString();
    }

    @GetMapping("/payment/getById/{id}")
    public CommonResult getById(@PathVariable("id") Integer id) {
        Payment result = paymentService.getById(id);
        if (result != null) {
            return new CommonResult(200, "查询成功,serverPort:" + serverPort, result);
        } else {
            return new CommonResult<Payment>(404,"查询无果,serverPort:"+serverPort,null);
        }
    }
}

6.测试

1.访问浏览器地址,查询结果

2.访问localhost:8500

访问成功~ 

创建节点成功~ 

 4.创建80模块❤️❤️❤️

1.建模块

在父工程下创建模块

注意jdk和maven版本

2.导pom

1.springboot依赖

2.通用配置依赖

3.consul依赖

 <dependencies>
        <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>
        <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>
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
       <!--consul-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

    </dependencies>

3.写yml

1.服务端口

2.服务名称

3.consul配置信息

server:
  port: 80

spring:
  application:
    name: consul-payment-order

  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

4主启动类

@SpringBootApplication
@EnableDiscoveryClient
public class OrderConsulMain80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderConsulMain80.class);
    }
}

5.配置类 

后面调用URL,使用的是服务名,而不是具体的地址,所以加上@LoadBalance表负载均衡

@Configuration
public class ApplicationConfig {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return  new RestTemplate();
    }
}

6.业务类

1.要访问的url,使用服务名,做负载均衡

2.注入restTemplate

3.调用restTemplate

@RestController
public class OrderController {
    private static final String INVOKE_URL= "http://consul-provider-payment";

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/payment/getById/{id}")
    public CommonResult getById(@PathVariable("id") Integer id) {
        return restTemplate.getForObject(INVOKE_URL + "/payment/getById/" + id, CommonResult.class);
    }

    @GetMapping("/payment/consul")
    public String discoveryConsul(){
        return restTemplate.getForObject(INVOKE_URL+"/payment/consul",String.class);
    }
}

7.测试

1.使用80,访问路径

2.访问local:8500

服务80和服务 8006都入住到consul~

 

查询成功~ 

 

 

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

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

相关文章

新建项目EasyUiAutotest,安装Appium-Python-Client

一、前置说明 Appium-Python-Client 是 Appium 的 Python 客户端库&#xff0c;它提供了一系列的类和方法&#xff0c;用于与 Appium 服务器进行通信&#xff0c;并执行各种移动应用测试操作&#xff0c;包括启动应用、模拟用户输入、点击等操作。 二、操作步骤 1. 启动Pych…

MySQL中MVCC的流程

参考文章一 参考文章二 当谈到数据库的并发控制时&#xff0c;多版本并发控制&#xff08;MVCC&#xff09;是一个重要的概念。MVCC 是一种用于实现数据库事务隔离性的技术&#xff0c;常见于像 PostgreSQL 和 Oracle 这样的数据库系统中。 MVCC 的核心思想是为每个数据行维护…

嵌入式开发网络配置——windows连热点,开发板和电脑网线直连

目录 电脑 WiFi 上网&#xff0c;开发板和电脑直连 使用场景 设置VMware虚拟机的网络配置 Ubuntu设置——版本18.04 ​编辑 windows设置 开发板设置 原因&#xff1a;虚拟机Linux移植可执行程序到开发板失败 最后发现虚拟机的Linuxping不通开发板 下面是我的解决方法 …

网络7层架构

网络 7 层架构 什么是OSI七层模型&#xff1f; OSI模型用于定义并理解数据从一台计算机转移到另一台计算机&#xff0c;在最基本的形式中&#xff0c;两台计算机通过网线和连接器相互连接&#xff0c;在网卡的帮助下共享数据&#xff0c;形成一个网络&#xff0c;但是一台计算…

如何使用固定二级子域名公网访问多个本地Windows Web网站

文章目录 1. 下载windows版Nginx2. 配置Nginx3. 测试局域网访问4. cpolar内网穿透5. 测试公网访问6. 配置固定二级子域名7. 测试访问公网固定二级子域名 1. 下载windows版Nginx 进入官方网站(http://nginx.org/en/download.html)下载windows版的nginx 下载好后解压进入nginx目…

共建共享,创新同行!飞桨星河社区助力大模型时代开发者砥砺前行

大模型引领AI新浪潮&#xff0c;助力人工智能实现从感知理解到生成创造的飞跃。飞桨星河社区&#xff0c;覆盖深度学习初学者、在职开发者、企业开发者、高校教师、创业者等&#xff0c;是国内最大的AI开发者社区&#xff0c;以飞桨和文心大模型为核心&#xff0c;集开放数据、…

NPOI 导出Excel

NPOI是一个用于处理Office文档的开源项目。它是用C#编写的&#xff0c;允许开发人员在.NET平台上读取、写入和操作Word、Excel和PowerPoint文件。NPOI提供了一组API&#xff0c;使开发人员能够以编程方式创建、修改和处理Office文档&#xff0c;这对于自动化生成报表、导出数据…

go写的海盗王数据库重置工具

很久没有用go去写代码了&#xff0c;很多语法都快忘记了。 为了测试一下界面库govcl的用法&#xff0c;拉了一个界面窗口之后&#xff0c;想想还是把代码也补上去吧。 于是&#xff0c;就写了这个海盗王数据库重置工具。 这个工具适合开服的人使用&#xff0c;可以将海盗王的账…

1.关于浏览器

一、认识主流浏览器 Chrome谷歌浏览器Safari苹果浏览器Firefox火狐浏览器Opera欧朋浏览器 二、浏览器内核是什么&#xff1f; 三、五大浏览器&#xff0c;四大内核 四、前端做网页开发用什么浏览器&#xff1f; Chrome谷歌浏览器。

VM固定虚拟机IP

命令 vim /etc/sysconfig/network-scripts/ifcfg-enosystemctl restart network子网掩码、网关、DNS获取如下&#xff1a;

什么是MVC?MVC框架的优势和特点

目录 一、什么是MVC 二、MVC模式的组成部分和工作原理 1、模型&#xff08;Model&#xff09; 2、视图&#xff08;View&#xff09; 3、控制器&#xff08;Controller&#xff09; 三、MVC模式的工作过程如下&#xff1a; 用户发送请求&#xff0c;请求由控制器处理。 …

windows下切换JDK8、JDK11、JDK17

问题背景&#xff1a; 需要同时使用不同版本的JDK进行开发和运行&#xff0c;可通过下述操作改变JDK版本。 一、java分类以及JDK、JRE、JVM的联系 1、JAVA分类 JAVA EE——Java Enterprise Edition&#xff0c; JAVA企业版&#xff0c;主要用于WEB开发。 JAVA SE——Java Stand…

LeetCode刷题--- 组合总和

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述递归递归、搜…

计算机是如何工作的(下)

4. 编程语言&#xff08;Program Language&#xff09; 本块内容主要是还原下我们已经熟悉的编程语言&#xff0c;即编程语言是如何和 CPU 指令对应起来的。 4.1 程序&#xff08;Program&#xff09; 所谓程序&#xff0c;就是一组指令以及这组指令要处理的数据。狭义上来说&…

python dash学习2

代码 内有说明&#xff1a; from dash import Dash, html, dcc, callback, Output, Input import plotly.express as px import pandas as pd# 从 Plotly 数据集中读取数据 df pd.read_csv(https://raw.githubusercontent.com/plotly/datasets/master/gapminder_unfiltered.c…

Html / CSS刷题笔记

WebKit是一个开源的浏览器引擎&#xff0c;它最初是由苹果公司开发的&#xff0c;并且被广泛用于Safari浏览器和其他基于WebKit的浏览器&#xff0c;比如Google Chrome的早期版本。它也是构建许多移动设备浏览器的基础。WebKit的主要功能是解析HTML和CSS&#xff0c;并将其渲染…

vue3(五)-基础入门之计算属性

一、计算属性 1.计算属性与普通方法的的区别&#xff1a; 计算属性在需要渲染数据时调用一次&#xff0c;而后将结果缓存起来。只有计算属性所依赖的数据发生改变时才会重新调用函数&#xff0c;否则每次渲染相同的数据都只会从缓存中读取。 普通方法在每次数据需要渲染时都会…

prometheus二进制安装

1、在需要安装prometheus的目录下执行wget命令下载软件到本地&#xff0c;如我的路径是/opt/module/prometheus wget https://github.com/prometheus/prometheus/releases/download/v2.34.0/prometheus-2.34.0.linux-amd64.tar.gz正在解析主机 objects.githubusercontent.com …

Head First Design Patterns - 策略模式

策略模式 策略模式&#xff1a;策略模式是一种行为型模式&#xff0c;它将对象和行为分开&#xff0c;将行为定义为 一个行为接口 和 具体行为的实现。策略模式最大的特点是行为的变化&#xff0c;行为之间可以相互替换。每个if判断都可以理解为就是一个策略。本模式使得算法可…

05_符号表

05_符号表 一、符号表符号表API设计符号表实现有序符号表 一、符号表 符号表最主要的目的就是将一个键和一个值联系起来&#xff0c;符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据&#xff0c;我们可以根据键来查找对应的值。符号表中&#xff0c;键具有唯…