目录
一、支付服务注册进入zookeeper
一、Linux下安装zookeeper3.4.9
二、创建module
三、修改pom
四、编写yml
五、编写主启动类
六、编写逻辑代码
七、启动测试
二、订单服务注册进入zookeeper
1、创建模块
2、修改pom
3、编写yml
4、编写主启动类
5、编写逻辑代码
(1)config包下
(2)controller包下
6、运行测试
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