03 注册中心Zookeeper

注册中心Zookeeper

进入到 zookeeper bin目录下

./zkServer.sh 开启zookeeper

./zkCli.sh 开启zookeeper服务端

zookeeper也是有心跳机制,在一定时间能如果一直没心跳返回,Zookeeper就会把服务节点剔除掉。所以在Zookeeper上的服务节点是临时节点。

支付服务

  1. 新建工程cloud-provider-payment8004
  2. pom 文件

其他依赖是情况添加 如果 zookeeper的版本号比依赖的高 可能会出现jar包冲突

	<!--替换掉eureka依赖,其他直接复制8001-->
        <!--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>

  1. yml
#表示注册到 zookeeper 服务器的支付服务提供者端口号
server:
  port: 8004

spring:
  application:
    #服务别名——注册到zookeeper注册中心的名称
    name: cloud-provider-payment
  cloud:
    zookeeper:
      connect-string: 112.124.22.24:2181 #linux的ip加暴露的端口号
      #用的阿里云的 写公网地址
  1. 主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8004 {

    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8004.class, args);
    }
}
  1. controller 层
@RestController
@Slf4j
public class PaymentController {

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

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

启动测试

在 zookeeper 中出现了 微服务的名称

https://tool.lu/json/

出现了 json 在线编译后

消费服务

新建消费者模块cloud-consumerzk-order80。

pom和yml直接复制8004。(yml中端口号改为80,应用名改为cloud-consumer-order,其他都相同)

主启动类。(与8004相同)

在springcloud包下新建config.ApplicationContextConfig

@Configuration
public class ApplicationContextConfig {

    @Resource
    private RestTemplate restTemplate;

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

controller 层

@RestController
@Slf4j
public class OrderZKController {

    public static final String INVOKE_URL="http://cloud-provider-payment";

    @Resource
    private RestTemplate restTemplate;

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

启动项目后 ,zookeeper 中也有了 消费微服务

posted @ 2021-12-02 21:18  flypiggg  阅读(112)  评论(0)    收藏  举报