如何在SpringCloud2023中快速集成注册中心

你好,这里是codetrend专栏“SpringCloud2023实战”。欢迎点击关注查看往期文章。

在这里插入图片描述

注册中心在前文提到有很多选型,在这里以Spring Cloud Zookeeper为例说明注册中心的集成和使用。

选择Spring Cloud Zookeeper作为注册中心原因如下:

  • 依赖更少,只依赖zookeeper单体或集群的部署。
  • 配置更通用,Eureka和zookeeper的切换只需要少量配置切换即可完成。
  • 集成方便,注解通用,集成starter即可。

客户端引入

  • 修改子工程的pom.xml,引入Spring Cloud Zookeeper。
<?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">
    <parent>
        <groupId>io.rainforest</groupId>
        <artifactId>banana</artifactId>
        <version>1.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>banana-client1</artifactId>
    <description>spring cloud banana-client1</description>
    <packaging>jar</packaging>


    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>
        <!--注册中心客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!--feign 注解依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-openfeign-core</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- 工具包依赖 -->
        <dependency>
            <groupId>io.rainforest</groupId>
            <artifactId>banana-common-core</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-crypto</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-http</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

启动zookeeper

  • 前置条件,zookeeper依赖JVM,所以运行前得配置java环境变量。新建 JAVA_HOME 环境变量。
  • 下载zookeeper安装包,linux和windows的版本是同一个。 官方网站是: https://zookeeper.apache.org/releases.html
  • 目录格式如下
|-- LICENSE.txt
|-- NOTICE.txt
|-- README.md
|-- README_packaging.md
|-- bin
|-- conf
|-- data
|-- docs
|-- lib
  • 修改配置文件,此处为单体非集群版配置,在conf/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=E:/DevTool/apache-zookeeper-3.8.2-bin/data
# the port at which the clients will connect
clientPort=2181
  • 启动zookeeper。
# windows系统
bin\zkServer.cmd
# Linux系统
bin\zkServer.sh

启动应用

  • 在启动类上增加注解,进行服务发布。
package io.rainforest.banana.client1;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}
  • 修改应用配置。
spring.application.name: client1
spring:
  cloud:
    zookeeper:
      connect-string: localhost:2181 ## 注册中心的配置
server:
  port: 10101
  servlet:
    context-path: /client1
  • 启动应用之前先启动zookeeper。

查看注册数据

get /services/client1/b257e7f5-a451-4119-ba20-e7622f3aeaba

{"name":"client1","id":"b257e7f5-a451-4119-ba20-e7622f3aeaba","address":"cat","port":10101,"sslPort":null,"payload":{"@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance","id":"client1","name":"client1","metadata":{"instance_status":"UP"}},"registrationTimeUTC":1698715221404,"serviceType":"DYNAMIC","uriSpec":{"parts":[{"value":"scheme","variable":true},{"value":"://","variable":false},{"value":"address","variable":true},{"value":":","variable":false},{"value":"port","variable":true}]}}

默认的zookeeper注册中心的数据放在 /services/客户端名称/实例名称

源码信息

和“SpringCloud实战”对应的源码信息如下:

  • github https://github.com/r0ad/spring-cloud-example
  • gitee https://gitee.com/r0ad/spring-cloud-example

关于作者

来自一线全栈程序员nine的八年探索与实践,持续迭代中。欢迎关注公众号“雨林寻北”或添加个人卫星codetrend(备注技术)。

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

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

相关文章

【3DsMax】UVW展开——以制作牙膏盒为例

效果 步骤 1. 从网上下载牙膏盒贴图&#xff0c;我下载的贴图地址为&#xff08;牙膏盒贴图链接&#xff09; 2. 打开3DsMax&#xff0c;创建一个长方体&#xff0c;设置长宽高分别为180、45、40毫米 打开材质编辑器&#xff0c;点击漫反射后的按钮 双击“位图” 将材质赋予长…

【每日八股】Java基础经典面试题4

前言&#xff1a;哈喽大家好&#xff0c;我是黑洞晓威&#xff0c;25届毕业生&#xff0c;正在为即将到来的秋招做准备。本篇将记录学习过程中经常出现的知识点以及自己学习薄弱的地方进行总结&#x1f970;。 本篇文章记录的Java基础面试题&#xff0c;如果你也在复习的话不妨…

重装系统后鼠标识别不了咋办

不知道大家在重装系统时,有没有遇到过系统重装完成后,鼠标不能使用的情况。在这种情况下,我们要怎么操作电脑解决这个问题呢?今天就跟大家分享重装系统后鼠标识别不了咋办。 一、主板没有设置兼容usb 在重装系统时,如果主板没有设置兼容usb,就会出现鼠标使用不了的现象。…

流畅的 Python 第二版(GPT 重译)(十一)

第二十章&#xff1a;并发执行器 抨击线程的人通常是系统程序员&#xff0c;他们心中有着典型应用程序员终其一生都不会遇到的用例。[…] 在 99%的用例中&#xff0c;应用程序员可能会遇到的情况是&#xff0c;生成一堆独立线程并将结果收集到队列中的简单模式就是他们需要了解…

【Linux】线程预备知识{远程拷贝/重入函数与volatile关键字/认识SIGCHILD信号/普通信号/实时信号}

文章目录 0.远程拷贝1.重入函数与volatile关键字2.认识SIGCHILD信号3.普通信号/实时信号 0.远程拷贝 打包资源&#xff1a;tar czf code.tgz *远程传输&#xff1a;scp code.tgz usr服务器ip:/home/usr/路径解压&#xff1a;tar xzf code.tgz 1.重入函数与volatile关键字 先看…

深度解析 Android 系统属性

目录 Android系统属性 1.属性在哪里&#xff1f; 2.属性长什么样&#xff1f; 3.如何读写属性&#xff1a; 4.属性的作用 属性文件生成过程 如何添加系统属性 1.添加系统属性到 /system/build.prop 2.添加系统属性到 /vendor/build.prop 3.添加系统属性到 /product/b…

cdn尝试(减少打包体积)

如果是vue-cli创造的工程&#xff0c;在build后面加上 --report&#xff0c;就会在dist文件夹下出现report.html用于分析打包后个文件的体积 也可以使用插件&#xff1a; webpack使用webpack-bundle-analyzer进行分析&#xff1b; vite使用rollup-plugin-visualizer进行分析…

论文解读—— 基于边缘梯度方向插值和 Zernike 矩的亚像素边缘检测

论文&#xff1a;《 Subpixel edge detection based on edge gradient directional interpolation and Zernike moment》 地址&#xff1a; http://www.dpi-proceedings.com/index.php/dtcse/article/view/24488 摘要 在本文中&#xff0c;我们提出了一种基于边缘梯度方向插值…

D2587A高压大电流DC-DC,采用TO220T-5L或TO263-5L封装形式

1、概述 D2587A稳压器是专为反激式、升压和正向转换器应用而设计的单片集成电路。该器件提供四种不同的输出电压版本&#xff1a;3.3V、5V、12V 和可调节电压。这些稳压器需要的外部元器件很少&#xff0c;因此具有成本效益&#xff0c;并且易于使用。该电源开关是一款5A NPN器…

介绍5款 世界范围内比较广的 5款 mysql Database Management Tool

介绍5款 世界范围内比较广的 5款 Mysql Database Management Tool 文章目录 介绍5款 世界范围内比较广的 5款 Mysql Database Management Tool前言MySQL Workbench&#xff1a;Navicat Premium&#xff1a;DBeaver Community&#xff1a;HeidiSQL&#xff1a;SQLyog&#xff1a…

每日学习笔记:C++ STL 的无序容器(unordered_set、unordered_map)

定义 特性 能够快速查找元素 操作函数 负载系数 元素个数 / bucket个数 提供哈希函数 提供等价准则 方法一&#xff1a;重写元素的操作符 方法二&#xff1a;自定义函数对象

点云配准:从二维到三维的艺术

点云配准&#xff1a;从二维到三维的艺术 在计算机视觉和机器学习的领域中&#xff0c;配准是一个至关重要的步骤&#xff0c;它涉及到将不同视角或时间点捕获的数据集对齐到同一个坐标系统中。这一过程不仅对二维图像至关重要&#xff0c;而且在三维世界的理解中也发挥着关键作…

Apipost IDEA插件新升级,Apipost Helper上架IDEA插件市场

大家好&#xff01;今天向大家介绍一个非常方便的IDEA插件——Apipost Helper&#xff01;相信很多使用过Apipost的朋友在开发过程中都希望能够直接将编写好的API同步至Apipost&#xff0c;而无需手动填写。前段时间&#xff0c;Apipost推出了Apipost IDEA插件的内测版&#xf…

YOLOv4学习

YOLOv4学习 什么是 parameter aggregation&#xff1f;什么是 Skip-connections&#xff1f;正是梯度的反向传播才使得损失函数得以在训练过程中不断优化&#xff0c;以使得模型逐渐学习到“正确的”知识&#xff0c;对吗&#xff1f;什么是Bag-of-Freebies&#xff1f;什么是B…

LLM—Transformer作用及信息流

一、Transformer的作用 Transformer架构的精髓在于其创新性地采用了编码器与解码器的堆叠设计&#xff0c;这一设计巧妙地融合了多头自注意力机制&#xff08;Multi-Head Attention&#xff09;和位置前馈网络&#xff08;Position-wise Feed Forward Network&#xff09;两大核…

LeetCode:2312. 卖木头块(DP Java)

目录 2312. 卖木头块 题目描述&#xff1a; 实现代码与解析&#xff1a; dp 原理思路&#xff1a; 2312. 卖木头块 题目描述&#xff1a; 给你两个整数 m 和 n &#xff0c;分别表示一块矩形木块的高和宽。同时给你一个二维整数数组 prices &#xff0c;其中 prices[…

LLM之RAG实战(三十二)| 使用RAGAs和LlamaIndex评估RAG

在之前的文章中&#xff0c;我们介绍了RAG的基本流程和各种优化方法&#xff08;query重写&#xff0c;语义分块策略以及重排序等&#xff09;。那么&#xff0c;如果发现现有的RAG不够有效&#xff0c;该如何评估RAG系统的有效性呢&#xff1f; 在本文中&#xff0c;我们将介绍…

OJ_汉诺塔问题

有三根柱子和一些大小不同的圆盘&#xff0c;开始时所有的圆盘都按照从小到大的顺序堆叠在柱子A上&#xff0c;要求把所有的圆盘移动到柱子C上&#xff0c;但是移动过程中要满足以下规则&#xff1a; 每次只能移动一个圆盘。不能将一个较大的圆盘放在较小的圆盘上面。 #incl…

【工具】Docker 入门及常用指令

SueWakeup 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;为祖国的科技进步添砖Java 个性签名&#xff1a;保留赤子之心也许是种幸运吧 目录 1. 什么是 Docker &#xff1f; 2. Docker 安装 3. Docker 镜像 4. Docker 容器 4.1 运行容器 4.2 查看正在运行的容器 4…

leetcode 714

leetcode 714 题目 例子 思路1 使用dp[n][2] 存储最佳利润值&#xff0c;动态规划的思路&#xff0c;重要的是转移方程。 代码1 class Solution { public: int maxProfit(vector& prices, int fee) { int n prices.size(); //dp[i][0] 前i天手里没有股票的最大利润 //…