• SpringClould 实战入门四-Zookeeper、Consul


    一、题记

    官网可知,Eureka停更了https://github.com/Netflix/eureka/wiki,也就会出现其他的技术选型,比如zookeeper、consul。

    在这里插入图片描述

    二、项目集成Zookeeper

    Zookeeper的安装配置参考:https://blog.csdn.net/weixin_47061482/article/details/114383392

    1)创建clould-payment3服务提供者工程
    同样方法新建module(clould-payment3)、改pom、主启动、yml

    pom中添加zk相关依赖:

     >
                >org.springframework.cloud>
                >spring-cloud-starter-zookeeper-discovery>
                >3.1.2>
            >
    
    • 1
    • 2
    • 3
    • 4
    • 5

    主启动类:

    @SpringBootApplication
    @EnableDiscoveryClient
    public class ClouldPyament3 {
        public static void main(String[] args) {
            SpringApplication.run(ClouldPyament3.class);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    yml文件添加zookeeper相关:

    server:
      port: 8003
    
    spring:
      application:
        name: clould-payment #微服务应用的名字
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource  #当前数据源操作类型
        driver-class-name: com.mysql.jdbc.Driver  #mysql驱动包
        url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false #useSSL安全加固
        username: root
        password: 123456
      cloud:
        zookeeper:
          connect-string: localhost:2181
    
    mybatis-plus:
      mapper-locations: classpath*:mapper/**/*.xml
        #实体扫描,多个package用逗号或者分号分隔
      typeAliasesPackage: com.qytest.springclould.entitites
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    PaymentController.java:

    @RestController
    @Slf4j
    public class PaymentController {
        @Value("${server.port}")
        private String serverport;
    
        @GetMapping(value = "/payment3/zk")
        public String paymentzk() {
            return "zk注册中心测试:" + serverport + "\t" + UUID.randomUUID().toString();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    启动zk,浏览器http://localhost:8003/payment3/zk访问测试,我们的payment3工程已经成功注册进zk:
    在这里插入图片描述
    2)验证zk注册中心是临时节点
    在这里插入图片描述
    手工停掉payment3模拟服务不可用,我们可以看到zk节点下为空了,也就是zk是一定心跳检测后立即剔除,zk注册中心是临时节点
    在这里插入图片描述
    重启服务后发现zk节点id是变化的,也进一步验证了临时节点:
    在这里插入图片描述

    报错:Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed 一般可能是jar冲突

    3)创建clould-order2服务调用者工程
    同样方法创建order2工程,引入zk依赖,改yml,启动类等
    在这里插入图片描述
    至此,payment服务提供者、order服务调用者两个应用服务均已注册进zk
    在这里插入图片描述

    小结:zk不支持控制台,通过命令行zkServer.cmd启动,通过zkCli.cmd打开

    三、consul

    https://www.springcloud.cc/spring-cloud-consul.html中文教程
    https://www.consul.io/downloads 官网下载

    1、安装
    本地下载安装成功后,解压路径cmd,执行命令 consul agent -dev 启动
    打开浏览器访问 Consul 首页 ​​http://localhost:8500
    在这里插入图片描述
    2、创建微服务提供者注册进consul
    和前几节一样新建clould-payment4支付工程作为服务提供者
    在这里插入图片描述

    pom文件中添加consul相关依赖:

     <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-consul-discoveryartifactId>
                <version>3.1.1version>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    yml文件:

    server:
      port: 8004
    
    spring:
      application:
        name: clould-payment #微服务应用的名字
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource  #当前数据源操作类型
        driver-class-name: com.mysql.jdbc.Driver  #mysql驱动包
        url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false #useSSL安全加固
        username: root
        password: 123456
        
      cloud:
        consul:
          host: localhost
          port: 8500
          discovery:
            service-name: ${spring.application.name}
            
    mybatis-plus:
      mapper-locations: classpath*:mapper/**/*.xml
      #实体扫描,多个package用逗号或者分号分隔
      typeAliasesPackage: com.qytest.springclould.entitites
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    PaymentController.java

    @RestController
    @Slf4j
    public class PaymentController {
        @Value("${server.port}")
        private String serverport;
    
        @GetMapping(value = "/payment4/consule")
        public String paymentzk() {
            return "consule注册中心测试:" + serverport + "\t" + UUID.randomUUID().toString();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    启动回到consul界面,可看到成功注册。
    在这里插入图片描述
    3、创建微服务调用者注册进consul
    同样方法参考验证zk时创建的clould-order2创建clould-order3工程,启动验证,至此服务提供者和服务消费者均已注册进consul:
    在这里插入图片描述

    四、Eureka、Zookeeper、Consul注册中心区别

    Eureka、Zookeeper、Consul注册中心区别:在这里插入图片描述

    经典的CAP理论(粒度考虑的是数据,而不是整体系统策略),分布式架构P是一定要保证的,所以基本上都是AP或者CP

    • C(Consistency)强一致性
    • A(Availability)可用性
    • P(Partition tolerance)分区容错性
  • 相关阅读:
    非零基础自学Java (老师:韩顺平) 第11章 枚举和注解 【2 注解】
    Python吴恩达深度学习作业18 -- 手把手实现循环神经网络(RNN)
    使用ansible-app2k8s管理和部署服务到 kubernetes
    KUKA机器人后台控制程序(SPS)介绍
    无胁科技-TVD每日漏洞情报-2022-8-4
    一次生产死锁问题的处理
    利用frps搭建本地自签名https服务的透传
    AT&T 格式汇编语言语法
    机器学习 - 平均中位数模式——python
    基于自定义表编写认证类、django-jwt源码分析、权限介绍、simpleui的使用
  • 原文地址:https://blog.csdn.net/weixin_47061482/article/details/125872867