微服务之zookeeperconsul

微服务之zookeeperconsul,第1张

zookeeper/consul
  • 1、zookeeper常见命令
  • 2、zookeeper准备工作
  • 3、服务提供者
    • 3.1、新建Cloud-provider-payment8005
    • 3.2、改pom.xml文件
    • 3.3、写application.yml文件
    • 3.4、主启动类
    • 3.5、编写Controller
    • 3.6、启动8005注册进zookeeper
    • 3.7、验证测试
    • 3.8、思考
  • 4、消费者调用支付微服务
    • 4.1、新建cloud-consumerzk-order
    • 4.2、改pom.xml
    • 4.3、写application.yml
    • 4.4、Config配置类
    • 4.5、主启动类
    • 4.6、业务类
    • 4.7、验证测试
    • 4.8、访问测试地址
  • 5、三个注册中心比较
    • 5.1、CAP理论
    • 5.2、CAP场景


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文件

<dependency>
   <groupId>org.springframework.cloudgroupId>
   <artifactId>spring-cloud-starter-zookeeper-discoveryartifactId>
dependency>


<dependency>
   <groupId>org.springframework.cloudgroupId>
   <artifactId>spring-cloud-starter-consul-discoveryartifactId>
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

<dependency>
   <groupId>org.springframework.cloudgroupId>
   <artifactId>spring-cloud-starter-zookeeper-discoveryartifactId>
dependency>


<dependency>
   <groupId>org.springframework.cloudgroupId>
   <artifactId>spring-cloud-starter-consul-discoveryartifactId>
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满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/731094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存