SpringCloud 整合 zookeeper 学习

SpringCloud 整合 zookeeper 学习

支付微服务注册zookeeper

  • 创建支付微服务 - cloud-provider-payment8004
  • pom.xml
 	<dependencies>
 		<!--自定义的api-->
        <dependency>
            <groupId>org.huiyuanai</groupId>
            <artifactId>cloud-api-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--SpringBoot整合Zookeeper客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <exclusions>
                <!--先排除自带的zookeeper3.5.3-->
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--添加zookeeper3.4.9版本-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.9</version>
        </dependency>
        <!--通用依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</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>
    </dependencies>
  • application.yml
server:
  port: 8004
spring:
  application:
    name: cloud-provider-payment
  cloud:
    zookeeper:
      connect-string: 122.51.223.62:2181
  • 启动类
@SpringBootApplication
@EnableDiscoveryClient // 该注解用于使用consul和zookeeper作为注册中心时注册服务
    public class PaymentMain8004 {
        public static void main(String[] args) {
            SpringApplication.run(PaymentMain8004.class, args);
            System.out.println("PaymentMain8004 启动成功, 。:.゚ヽ(。◕‿◕。)ノ゚.:。+゚");
        }
}
  • 服务接口
@RestController
@Slf4j
public class PaymentController {
    @Value("${server.port}")
    private String serverPort;

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

订单服务微服务注册到zookeeper

  • 创建订单微服务 - cloud-consumerzk-order80
  • pom.xml
	 <dependencies>
        <dependency>
            <groupId>org.huiyuanai</groupId>
            <artifactId>cloud-api-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--SpringBoot整合Zookeeper客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <exclusions>
                <!--先排除自带的zookeeper3.5.3-->
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--添加zookeeper3.4.9版本-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.9</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</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>
    </dependencies>
  • application.yml
server:
  port: 80
spring:
  application:
    name: cloud-consumer-order
  cloud:
    zookeeper:
      connect-string: 122.51.223.62:2181
  • 主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class OrderZkMain80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderZkMain80.class,args);
        System.out.println("OrderZkMain80 启动成功, 。:.゚ヽ(。◕‿◕。)ノ゚.:。+゚");
    }
}
  • RestTemplate & 负载均衡 配置
@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
  • 订单接口
@RestController
public class OrderZkController {
    private static final String INVOKE_URL = "http://cloud-provider-payment";

    @Autowired
    private RestTemplate restTemplete; // 注入配置类中导入容器中的RestTemplate

    @RequestMapping(value = "/consumer/payment/zk")
    public String paymentInfo(){
        String result = restTemplete.getForObject(INVOKE_URL + "/payment/zk", String.class);
        return result;
    }
}

zookeeper查看服务信息

  • 启动zookeeper服务,进入客户端
./zkServer.sh start
./zkCli.sh
  • 查看命令 — ls
# 查看根节点下信息
[zk: localhost:2181(CONNECTED) 0] ls /

在这里插入图片描述

默认只有一个zookeeper节点,services是注册到zookeeper下的服务

注册到zookeeper下的服务
在这里插入图片描述

  • 获取节点数据和更新信息 — get

在这里插入图片描述

cZxid :创建节点的id
ctime : 节点的创建时间
mZxid :修改节点的id
mtime :修改节点的时间
pZxid :子节点的id
cversion : 子节点的版本
dataVersion : 当前节点数据的版本
aclVersion :权限的版本
ephemeralOwner :判断是否是临时节点
dataLength : 数据的长度
numChildren :子节点的数量

热门文章

暂无图片
编程学习 ·

SSM整合小案例

SSM整合 数据库部分(Oracle)创建表 CREATE TABLE product( id varchar2(32) default SYS_GUID() PRIMARY KEY, productNum VARCHAR2(50) NOT NULL, productName VARCHAR2(50), cityName VARCHAR2(50), DepartureTime timestamp, productPrice Number, productDesc VARCHAR2(500…
暂无图片
编程学习 ·

仿element自定义进度条

由于element官网进度条是按百分比显示的 可选值只有0-100;如果是一个量值的显示,如图这样的用element进度条实现起来就比较麻烦,所以就有了下边的自定义进度条 github: https://github.com/Hans-326/ProgressBar
暂无图片
编程学习 ·

渗透测试之内网横向渗透

内网横向渗透当我们在获取了外网服务器的权限,进入该系统后,我们要想尽办法从该服务器上查找到我们想要的信息。对于windows主机,我们应该多去翻翻目录,或许能有很多意想不到的结果。很多人习惯把账号密码等容易忘的东西存放在备忘录中,或者是桌面上。我们还可以查找数据库…
暂无图片
编程学习 ·

算法复杂度评价指标(大o表示法)

大O表示法(1)常见的大o数量级函数(2)其他算法复杂度表示法 基本操作数量函数T(n)的精确值并不是特别重要,重要的是Tn(n)中起决定性因素的主导部分。用动态的眼光看,就是当问题规模增大的时候,T(n)中的一些部分会盖过其他部分的贡献。 数量级函数描述了T(n)中随着n增加而…
暂无图片
编程学习 ·

SSCMS部署Linux

一、进入手册:https://sscms.com/ 二、在首页点击,如下位置:三、点击快速上手,进入页面如下:四、点击linux中运行SSCMS https://sscms.com/docs/v7/getting-started/using-linux.html#_1%E3%80%81%E5%AE%89%E8%A3%85%E4%BE%9D%E8%B5%96%E5%8C%85 根据里面的步骤一步步进行…
暂无图片
编程学习 ·

02 | 该如何选择消息队列?

1.应用场景见: https://blog.csdn.net/william_n/article/details/1040254082.学习/操作2.1 阅读文档02 | 该如何选择消息队列?李玥 2020-01-1400:0013:59讲述:李玥 大小:12.81M你好,我是李玥。这节课我们来聊一下几个比较常见的开源的消息队列中间件。如果你正在做消息队…
暂无图片
编程学习 ·

怎么才能最短时、高效、踏实的学习 Python?

作者:飞绝眷岭 链接:https://www.zhihu.com/question/28530832/answer/58656332 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。Dataquest 这个网站上提供了一系列和数据分析相关的python教程,从python基本语法到data analysis的基本函数…
暂无图片
编程学习 ·

STM32G031K LL库的使用 - IIC

说明:驱动基于STm32G031K6,其他型号需自行做改动。注:因为之前项目暂未用到LL库的IIC,所以此驱动未经过实机验证。欢迎反馈使用中的问题。IIC的初始化: CubeMX生成void STM32LLI2C1_Init(void) {LL_I2C_InitTypeDef I2C_InitStruct = {0};LL_GPIO_InitTypeDef GPIO_InitSt…
暂无图片
编程学习 ·

Web前端页面制作流程以及注意事项,满满的干货!

每天我们打开电脑,看到各种各样的web前端页面。你知道他们是如何制作的吗?为了让页面更具有规范性,让使用者更加方便,在制作页面过程中必须遵循一定的设计流程。在这里就为大家详细介绍一下制作一个Web前端页面的设计流程及注意事项。一:确定网站主题 每个网站都有自身以及…
暂无图片
编程学习 ·

移动端如何使用fidder代理访问测试

1. 保证自己本地电脑能访问测试环境(配置host),如图2. 电脑安装fiddeer:https://blog.csdn.net/BGONE/article/details/93007613 3. 修改fidder配置 菜单Tools—Options—Connections,如图1点击allow remote conputers to connect->OK4. 手机配置代理(亲测安卓、IOS都可…
暂无图片
编程学习 ·

迭代器

概念 提供对对象的间接访问,有效的迭代器或者指向某个元素,或者指向容器中尾元素的下一位置 使用 获取 begin()返回指向第一个元素/字符的迭代器 end()返回指向容器(或string)尾元素的下一位置即根本不存在的尾后元素解引用 如it为vector对象的迭代器:(*it).empty()或者it-&…
暂无图片
编程学习 ·

json从立地到成佛

文章目录诞生于JavaScript,json的前世今生json含义json诞生搞清json兄弟姐妹,看清区别json VS xml小小翻译官,json的应用前端ajax+json异步传输:跨平台webservice:非关系数据库存储(Nosql)拒绝四不像,json语法有要求json语法规则json名称/值json对象json数组JavaScript对象…
暂无图片
编程学习 ·

HashMap的高效遍历方式

HashMap<Integer,Integer> map = new HashMap<>(); 第一种(直接keySet()或者values()遍历): for(Integer key:map.keySet()){System.out.println("key:"+key+",value:"+map.get(key)); }第二种(使用entrySet,底层也使用的迭代器,高效):…
暂无图片
编程学习 ·

HCL实验8:NAT搭建私有网络

NAT 通过NAT技术,进行私有网络的搭建 拓扑图先对路由器的端口进行配置 R1 [H3C]sys R1 [R1]INT G0/0 [R1-GigabitEthernet0/0]ip address 192.168.56.1 24 [R1-GigabitEthernet0/0]undo shutdown [R1-GigabitEthernet0/0]quit [R1]int s1/0 [R1-Serial1/0]ip address 100.100.…
暂无图片
编程学习 ·

as 找不到调试设备(手机,虚拟机)

在flutter sdk 路径下执行命令flutter config --android-sdk D:\envi\android\android-sdk(你的android sdk路径)我在git bash 中执行之后没反应,应该是git bash环境语法设置有问题,于是改成 flutter config --android-sdk D:\\envi\\android\\android-sdk可以鸟
暂无图片
编程学习 ·

inotify 安装配合rsync

inotify是细粒度的实时监控结合rsync备份 inotify安装 yum install inotify-tools [root@nfs01 ~]# cd /proc/sys/fs/inotify/ [root@nfs01 inotify]# ls max_queued_events max_user_instances max_user_watches 最大可容纳事件(相当于一个池) 每个用户可以运行的进程…