eureka官方已经宣布不再更新了,今天我们使用zookeeper来代替eureka。
zookeeper是一个分布式协调工具,可以实现注册中心功能。
一、支付服务注册进入zookeeper
一、Linux下安装zookeeper3.4.9
这个网上有十分详细的教程,不再赘述。
可参考在 CentOS7 上安装 zookeeper-3.4.9 服务_程序员记事本-CSDN博客
二、创建module
创建一个普通maven工程,命名为cloud-provider-payment8004。
三、修改pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>cloud</artifactId> <groupId>com.shang.cloud</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>cloud-provider-payment8004</artifactId> <dependencies> <!-- SpringBoot整合Web组件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity --> <groupId>com.shang.cloud</groupId> <artifactId>cloud-api-commons</artifactId> <version>${project.version}</version> </dependency> <!-- SpringBoot整合zookeeper客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> <!--先排除自带的zookeeper3.5.3--> <exclusions> <exclusion> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </exclusion> </exclusions> </dependency> <!--添加zookeeper3.4.9版本--> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.9</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> </project>
四、编写yml
#8004表示注册到zookeeper服务器的支付服务提供者端口号 server: port: 8004 #服务别名----注册zookeeper到注册中心名称 spring: application: name: cloud-provider-payment cloud: zookeeper: connect-string: xx.xx.xx.xx:2181 #自己的Linux的ip地址:2181
五、编写主启动类
@SpringBootApplication @EnableDiscoveryClient //用于向使用consul或者zookeeper作为注册中心时注册服务 public class PaymentMain8004 { public static void main(String[] args) { SpringApplication.run(PaymentMain8004.class, args); } }
六、编写逻辑代码
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(); } }
七、启动测试
启动8004服务。
1、在浏览器地址栏中输入
http://localhost:8004/payment/zk
2、在Linux的zookeeper客户端中
说明注册成功。
二、订单服务注册进入zookeeper
1、创建模块
创建cloud-consumerzk-order80
2、修改pom
pom文件与8004一致
3、编写yml
yml文件可以直接复制8004的,然后将端口号改为80(因为不想和Nginx抢80端口,我改成了90)
4、编写主启动类
@SpringBootApplication @EnableDiscoveryClient public class OrderZKMain80 { public static void main(String[] args) { SpringApplication.run(OrderZKMain80.class, args); } }
5、编写逻辑代码
(1)config包下
@Configuration public class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); } }
(2)controller包下
@RestController @Slf4j public class OrderZKController { public static final String INVOKE_URL = "http://cloud-provider-payment"; @Autowired private RestTemplate restTemplate; @GetMapping(value = "/consumer/payment/zk") public String paymentInfo(){ String result = restTemplate.getForObject(INVOKE_URL+"/payment/zk",String.class); return result; } }
6、运行测试
先打开8004服务,再打开80服务
在浏览器地址栏中输入
http://localhost:90/consumer/payment/zk