微服务之zookeeper/consul


1、zookeeper常见命令

注意点

  • 到zookeeper的bin目录下执行相应命令
  • zookeeper默认端口号:2181
  • consul默认端口号:8500

1、启动服务

sudo ./zkServer.sh start

2、查看服务状态

 sudo ./zkServer.sh status

3、停止服务

sudo ./zkServer.sh stop

4、重启服务

 sudo ./zkServer.sh restart

5、启动客户端

 sudo ./zkCli.sh

2、zookeeper准备工作

关闭防火墙

 sudo ufw disable
 # 查看防火墙状态
 sudo ufw status

3、服务提供者

3.1、新建Cloud-provider-payment8005

3.2、改pom.xml文件

<!--如果使用zookeeper做负载均衡,则选择zookeeper客户端组件-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>

<!--如果使用consul做负载均衡,则选择consul客户端组件-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

3.3、写application.yml文件

spring:
  cloud:
    zookeeper:
      connect-string: 192.168.25.3:2181   #zookeeper服务器的地址
      
    #如果为consul做负载,则此处配置consul
    consul:
      host: localhost
      port: 8500
      discovery:
        #hostname: 127.0.0.1
        service-name: ${spring.application.name}

3.4、主启动类

@SpringBootApplication
@EnableDiscoveryClient //该注解应用于向Consul或者ZooKeeper作为注册中心时注册服务
public class Payment8005Main {
    public static void main(String[] args) {
        SpringApplication.run(Payment8005Main.class,args);
    }
}

3.5、编写Controller

@RestController
public class PaymentController {

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

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

3.6、启动8005注册进zookeeper

3.7、验证测试

测试1:zookeeper服务器

测试2:浏览器

3.8、思考

zookeeper服务节点是临时的

4、消费者调用支付微服务

4.1、新建cloud-consumerzk-order

4.2、改pom.xml

<!--如果使用zookeeper做负载均衡,则选择zookeeper客户端组件-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>

<!--如果使用consul做负载均衡,则选择consul客户端组件-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

4.3、写application.yml

server:
  port: 80

spring:
  application:
    name: cloud-consumer
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型
      #mysql5.x的没有cj
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root123
  cloud:
    zookeeper:  
      connect-string: 192.168.25.3:2181   #zookeeper服务器的地址
      
    #如果为consul做负载,则此处配置consul
    consul:
      host: localhost
      port: 8500
      discovery:
        #hostname: 127.0.0.1
        service-name: ${spring.application.name}

4.4、Config配置类

@Configuration
public class ApplicationContextConfig {

    /**
     * RestTemplate的作用是完成微服务之间的调用
     * @return
     */

    @Bean  //依赖注入
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

4.5、主启动类

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

4.6、业务类

@RestController
public class OrderZKController {

    @Resource
    private RestTemplate restTemplate;

    public static final String PAYMENT_URL = "http://cloud-payment-service";

    @GetMapping("/consumer/zk")
    public String consumer_zk() {

        String result = restTemplate.getForObject(PAYMENT_URL + "/payment/zk", String.class);
        return result;
    }
}

4.7、验证测试

4.8、访问测试地址

5、三个注册中心比较

组件名语言实现CAP对外暴露接口SpringCloud集成
EurekaJavaAP(绝情与否可配置)可配支持HTTP
zookeeperGoCP(绝情)支持HTTP/DNS
consulJavaCP(绝情)支持客户端已集成

5.1、CAP理论

  • C:Consistency (强一致性)
  • A:Availability (可用性)
  • P:Partition tolerance (分区容错性)

5.2、CAP场景

类型场景
CA(不现实)单点集群,满足—致性,可用性的系统,通常在可扩展性上不太强大。
CP满足一致性,分区容忍必的系统,通常性能不是特别高。
AP满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值