Eureka停更说明

https://github.com/Netflix/eureka/wiki

Eureka 2.0 (Discontinued) The existing open source work on eureka 2.0 is discontinued. The code base and artifacts that were released as part of the existing repository of work on the 2.x branch is considered use at your own risk. Eureka 1.x is a core part of Netflix’s service discovery system and is still an active project.


SpringCloud整合Zookeeper

Linux/win下安装ZK,开启服务
服务节点是临时节点,CP

注册中心Zookeeper

  • zookeeper是一个分布式协调工具,可以实现注册中心功能

  • 关闭Linux服务器防火墙后,启动zookeeper服务器

    • systemctl stop firewalld关闭防火墙
    • systemctl status firewalld查看防火墙状态
  • zookeeper服务器取代Eureka服务器,zk作为服务注册中心

服务提供者

新建Moudle:cloud-provider-payment8004

pom.xml(注意自己的ZK版本)

  1. <dependencies>
  2. <!-- SpringBoot整合Web组件 -->
  3. <dependency>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-starter-web</artifactId>
  6. </dependency>
  7. <dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
  8. <groupId>com.holden.springcloud</groupId>
  9. <artifactId>cloud-api-commons</artifactId>
  10. <version>${project.version}</version>
  11. </dependency>
  12. <!-- SpringBoot整合zookeeper客户端 -->
  13. <dependency>
  14. <groupId>org.springframework.cloud</groupId>
  15. <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
  16. <!--先排除自带的zookeeper3.5.3-->
  17. <exclusions>
  18. <exclusion>
  19. <groupId>org.apache.zookeeper</groupId>
  20. <artifactId>zookeeper</artifactId>
  21. </exclusion>
  22. </exclusions>
  23. </dependency>
  24. <!--添加zookeeper3.6.2版本-->
  25. <dependency>
  26. <groupId>org.apache.zookeeper</groupId>
  27. <artifactId>zookeeper</artifactId>
  28. <version>3.6.2</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-devtools</artifactId>
  33. <scope>runtime</scope>
  34. <optional>true</optional>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.projectlombok</groupId>
  38. <artifactId>lombok</artifactId>
  39. <optional>true</optional>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.springframework.boot</groupId>
  43. <artifactId>spring-boot-starter-test</artifactId>
  44. <scope>test</scope>
  45. </dependency>
  46. </dependencies>

application.yml

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


#服务别名----注册zookeeper到注册中心名称
spring:
  application:
    name: cloud-provider-payment
  cloud:
    zookeeper:
      connect-string: 192.168.66.66:2181    #Linux主机:端口

主启动类
PaymentController.java

@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();
    }
}

测试
image.png
image.png
image.png

{
    "name":"cloud-provider-payment",
    "id":"32df2919-8c5c-48be-8aaf-e2c471d3669f",
    "address":"192.168.1.110",
    "port":8004,
    "sslPort":null,
    "payload":{
        "@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance",
        "id":"application-1",
        "name":"cloud-provider-payment",
        "metadata":{

        }
    },
    "registrationTimeUTC":1616767308411,
    "serviceType":"DYNAMIC",
    "uriSpec":{
        "parts":[
            {
                "value":"scheme",
                "variable":true
            },
            {
                "value":"://",
                "variable":false
            },
            {
                "value":"address",
                "variable":true
            },
            {
                "value":":",
                "variable":false
            },
            {
                "value":"port",
                "variable":true
            }
        ]
    }
}

服务消费者

新建Moudle:cloud-consumerzk-order80

pom.xml

server:
  port: 80

spring:
  application:
    name: cloud-consumer-order
  cloud:
  #注册到zookeeper地址
    zookeeper:
      connect-string: 192.168.66.66:2181

主启动类

ApplicationContextConfig.java**

@Configuration
public class ApplicationContextConfig
{
    @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(value = "/consumer/payment/zk")
    public String paymentInfo()
    {
        String result = restTemplate.getForObject(INVOKE_URL+"/payment/zk",String.class);
        return result;
    }
}

测试
image.png
image.png