springCould中的zookeeper-从小白开始【3】

目录

1.启动zookeeper❤️❤️❤️

2.创建8004模块 ❤️❤️❤️

 3.临时节点还是永久节点❤️❤️❤️

4.创建zk80消费模块❤️❤️❤️


1.启动zookeeper❤️❤️❤️

  • 进入自己zookeeper的bin目录下 分别使用命令:
./zkServer.sh start   和 ./zkCli.sh -server 主机名

2.创建8004模块 ❤️❤️❤️

1.建模块

在父工程下创建模块

注意:jdk版本和,maven版本

2.添加pom

1.springboot依赖

2.mybatis依赖

3.druid依赖

4.mysql依赖

5.zookeeper依赖

 <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.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <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>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

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

3.添加yml

1.服务端口

2.服务名称

3.数据库连接池

4.zookeeper连接地址

5.mybatis配置

server:
  port: 8004


spring:
  application:
    #服务名称
    name: cloud-provider-payment

  datasource:
    #druid连接池
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springcloud
    username: root
    password: 123456
    #zookeeper服务注册中心
  cloud:
    zookeeper:
      connect-string: 192.168.20.129:2181,192.168.20.130:2181,192.168.20.131:2181

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

4.添加主启动类

@EnableDiscoveryClient:将服务注册到服务注册中心(zookeeper)

@SpringBootApplication
@EnableDiscoveryClient//作为服务中心
public class PaymentMain8004 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8004.class);
    }
}

5.编写业务类

@RestController
public class PaymentController {

    @Autowired
    private PaymentService paymentService;

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

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

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

6.测试

  • 1.启动主启动类,刷新浏览器

  • 2.访问zookeeper

 说明zookeeper配置成功

 3.临时节点还是永久节点❤️❤️❤️

当关闭8004服务时,在查询zookeeper,发现节点剔除

所以:zookeeper存储的是临时节点,当服务消失时,会马上剔除 

4.创建zk80消费模块❤️❤️❤️

1.建模块

在父工程下创建模块

注意jdk版本和maven版本

2.写pom

1.springboot依赖

2.通用依赖

3.zookeeper依赖

<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>
        <!--spring boot整合zookeeper-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        </dependency>

    </dependencies>

3.改yml

1.服务端口

2.服务名

3.zookeeper连接ip(我这里使用集群)

server:
  port: 80
  
spring:
  application:
    name: cloud-consumer-order
    
  cloud:
    zookeeper:
      connect-string: 192.168.20.129:2181,192.168.20.130:2181,192.168.20.131:2181

4.主启动类

@EnableDiscoveryClient添加上

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

5.业务代码

  • 1.先将Rest Template注入到spring中

注意:因为访问的是服务名,而不是具体的ip,所以加上@LoadBalance注解

@Configuration
public class ApplicationConfig {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
  • 2.controller

1.声明常量,表示zookeeper中8004的服务名

2.注入RestTemplate

3.调用restTemplate访问

@RestController
public class OrderController {

    public static final String INVOKE_URL = "http://cloud-provider-payment";

    @Autowired
    private RestTemplate restTemplate;

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

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

6.测试

  • 1.使用80访问,刷新浏览器,依然成功

  • 2.查看zookeeper节点 ,节点创建成功

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

旅游品牌网站搭建的作用是什么

我国旅游业规模非常高&#xff0c;各地大小旅游景区也是非常多&#xff0c;尤其节假日更是可以达到峰值&#xff0c;无论周边游还是外地游对所要去的景区&#xff0c;消费者总是需要来回了解很多&#xff0c;浏览器查或旅行社咨询等。 对旅游企业而言&#xff0c;传统线下方式…

QT 构建项目报错Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7

问题 Getting NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7获取 NoClassDefFoundError&#xff1a;无法初始化类 org.codehaus.groovy.vmplugin.v7.Java7 解决方法一 java版本 过高 将java版本降低&#xff0c;例如从java17降…

虹科方案|车内智慧大脑:基于车载网络捕获的全景数据处理

导读&#xff1a;随着汽车电子技术的不断发展&#xff0c;车载网络已经成为汽车智能化和互联互通的关键组成部分。然而随着汽车系统的复杂性增加&#xff0c;CAN的带宽和数据处理能力已不足以满足快速增长的数据需求。为了应对这一挑战&#xff0c;虹科智能互联提出了基于车载网…

哪个超声波清洗机好?适合洗眼镜超声波清洗机有哪些?

随着科技的进步&#xff0c;超声波清洗机已经成为了家居清洁的必备神器。尤其是对于眼镜、珠宝、饰品等需要深度清洁的小物件&#xff0c;超声波清洗机更是不可或缺。眼镜店最经常看见超声波清洗机的身影&#xff0c;可以很好帮我们清洗眼镜同时有些比较好的超声波清洗机还会带…

Matplotlib ------ 纵坐标科学计数法含义

matplotlib 纵坐标科学计数法含义 引言正文 引言 今天画图时遇到了一个问题&#xff0c;发现纵坐标是科学计数法的表示&#xff0c;但是很难理解它的含义&#xff0c;这里特来记录一下。 正文 我们以下图为例&#xff0c; 由图上我们可以看出&#xff0c;纵坐标显示为 1e-…

高压放大器的考虑因素有哪些

高压放大器是一种重要的电子设备&#xff0c;用于放大高电压信号。其设计和应用需要考虑多种因素&#xff0c;以确保性能稳定、安全可靠。以下是设计高压放大器时需要考虑的主要因素&#xff1a; 电压范围需求&#xff1a;首要考虑是要放大的电压信号范围。高压放大器应能够处理…

SpringBoot的测试

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…

CentOS7部署bitbucket7.21.20-postgresql版

文章目录 1.资源下载2.上传服务器3.赋予执行权限并执行安装4.执行安装5.访问Bitbucket6.Bitbucket安装页面配置6.1连接Jira应用程序到PostgreSQL6.1.1创建并配置PostgreSQL数据库6.1.2测试数据库连接 6.2授权6.2.1授权包6.2.1.1资源地址6.2.1.2上传到服务器 6.2.2停止bitbucket…

PDF控件Spire.PDF for .NET【安全】演示:在 PDF 中添加或删除数字签名

随着 PDF 文档在商业中越来越流行&#xff0c;确保其真实性已成为一个关键问题。使用基于证书的签名对 PDF 进行签名可以保护内容&#xff0c;还可以让其他人知道谁签署或批准了该文档。在本文中&#xff0c;您将了解如何使用不可见或可见签名对 PDF 进行数字签名&#xff0c;以…

用CSDN训练的InsCode AI创作博文:数据治理体系建设

想不想用AI帮我们写方案&#xff1f; 想尝试用CSDN提供的InsCode AI创作助手协助我们进行技术方案的创作&#xff0c;看看效果如何&#xff0c;能不能辅助我们日常的方案编写与创作&#xff1f;以前用ChatGPT也尝试过&#xff0c;但对于专业性更强的内容&#xff0c;还有表现的…

VMware虚拟机安装Ubuntu系统教程

所使用的文件如下&#xff1a; VMware Workstation 17 Pro ubuntu-22.04.3-desktop-amd64.iso 一、ubuntu 命名规则及各版本一览表 1.ubuntu 命名规则&#xff1a; 例如&#xff1a;ubuntu 16.04 LTS 是长期维护版本&#xff1b;ubuntu 17.04 是新特性版本 前两位数字为发…

【Unity学习笔记】1.创建场景

创建场景 注1&#xff1a;samplescene&#xff08;示例场景&#xff09;、standard assets&#xff08;标准资产&#xff09;、favorites&#xff08;收藏夹&#xff09;、terrain&#xff08;地形&#xff09;。 注2&#xff1a;favorites用于存放各种资源&#xff1b;sample…

【小白专用】Apache下禁止显示网站目录结构的方法 更新23.12.25

给我一个网站地址&#xff0c;我点开后显示的是目录格式&#xff0c;把网站的目录结构全部显示出来了 这个显示结果不正确&#xff0c;不应该让用户看到我们的目录结构 配置文件的问题,apache配置文件里有一项可以禁止显示网站目录的配置项&#xff0c;禁止掉就好了 在apache…

基于ssm出租车管理系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本出租车管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&…

做外贸其实也并没有那么容易

最近无意中看到一个视频&#xff0c;视频的内容是外贸博主和一个连线人的对话&#xff0c;连线人的诉求是如何做外贸&#xff1f;怎么能把外贸做好&#xff0c; 通过博主和这个人的沟通来看&#xff0c;这个连线的人他从来没有接触过外贸&#xff0c;也不愿意去别的外贸公司上…

图像ISP处理——畸变校正算法

图像畸变校正算法主要用于矫正图像中因为摄像机镜头畸变而引起的形状和尺寸变化。摄像机镜头畸变主要包括径向畸变和切向畸变。以下是一些常见的图像畸变校正算法&#xff1a; 多项式畸变校正法&#xff08;Polynomial Distortion Correction&#xff09;&#xff1a; 原理&am…

Java:LocalDate / LocalDateTime加减时间

在线API参考&#xff1a;LocalTime (Java Platform SE 8 ) 方法介绍 方法1方法1说明plusYears(long years) minusYears(long years) 返回增加/减少了年数的副本plusMonths(long months) minusMonths(long months)返回增加/减少了月数的副本plusWeeks(long weeks) minusWeeks(…

Wafer晶圆封装工艺介绍

芯片封装的目的&#xff08;The purpose of chip packaging&#xff09;: 芯片上的IC管芯被切割以进行管芯间连接&#xff0c;通过引线键合连接外部引脚&#xff0c;然后进行成型&#xff0c;以保护电子封装器件免受环境污染&#xff08;水分、温度、污染物等&#xff09;&…

Linux开发工具——gcc篇

gcc的使用 文章目录 gcc的使用 历史遗留问题&#xff08;普通用户sudo&#xff09; gcc编译过程 预处理&#xff08;进行宏替换&#xff09; 编译&#xff08;生成汇编&#xff09; 汇编&#xff08;生成机器可识别代码&#xff09; 链接&#xff08;生成可执行文件或库文件&a…

【下载前必读】CSDN发布的付费资源合集(wx有优惠)

【下载前必读】CSDN发布的付费资源合集&#xff08;wx有优惠&#xff09; wx csdn付费下载&#xff08;wx八折起&#xff09; 可点击标题超链接查看详情 hnust javaweb课设&数据库课设 报告源代码流程图文件课设指导书附赠数据库课堂实验指导书.zip 售价 14.9r&#xff…