Zookeeper注册中心实战
•
大数据
Java学习手册+面试指南:https://javaxiaobear.cn
Spring Cloud Zookeeper通过自动配置和绑定到 Spring 环境和其他 Spring 编程模型习惯用法,为 Spring Boot 应用程序提供Apache Zookeeper集成。通过一些简单的注释,您可以快速启用和配置应用程序内的常见模式,并使用 Zookeeper 构建大型分布式系统。提供的模式包括服务发现和分布式配置。
特征
- 服务发现:实例可以向 Zookeeper 注册,客户端可以使用 Spring 管理的 bean 发现实例
- 支持 Spring Cloud LoadBalancer – 客户端负载均衡解决方案
- 支持Spring Cloud OpenFeign
- 分布式配置:使用Zookeeper作为数据存储
官方地址:https://spring.io/projects/spring-cloud-zookeeper#lea

1、创建服务
创建名为:spring-cloud-zookeeper项目,
依赖如下:
4.0.0
com.javaxiaobear
javaxiaobear-zookeeper
1.0-SNAPSHOT
spring-cloud-zookeeper
8
8
UTF-8
2023.0.0
3.2.1
org.springframework.boot
spring-boot-starter-parent
${spring.boot.version}
org.springframework.cloud
spring-cloud-dependencies
${spring.cloud.version}
pom
import
2、服务提供者
服务提供者名字为:javaxiaobear-provider
1、添加依赖
4.0.0
org.springframework.boot
spring-boot-starter-parent
3.2.1
com.javaxiaobear
javaxiaobear-provider
0.0.1-SNAPSHOT
javaxiaobear-provider
javaxiaobear-provider
21
2023.0.0
org.springframework.cloud
spring-cloud-starter-zookeeper-discovery
org.springframework.boot
spring-boot-starter-web
org.projectlombok
lombok
provided
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
2、配置文件application.yml
server:
port: 8080 #端口
spring:
application:
name: product-service # 服务名称
# ZooKeeper 配置
cloud:
zookeeper:
discovery:
enabled: true # ?????? ZooKeeper ????????????? false ??
connect-string: ip:2181
3、服务代码
1、实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Product {
private Integer id;
private String productName;
private Integer productNum;
private Double productPrice;
}
2、服务接口
public interface ProviderService {
/**
* 查询商品列表
*
* @return
*/
List selectProductList();
}
3、服务实现类
@Slf4j
@Service
public class ProviderServiceImpl implements ProviderService {
@Override
public List selectProductList() {
log.info("商品服务查询商品信息...");
return Arrays.asList(
new Product(1, "小米手机", 1, 5800D),
new Product(2, "小熊面试手册", 1, 68.88D),
new Product(3, "小熊笔记", 5, 20.20D)
);
}
}
4、控制层
@RestController
public class ProviderController {
@Autowired
private ProviderService providerService;
@GetMapping("/list")
public List selectList(){
return providerService.selectProductList();
}
}
3、服务消费者
服务提供者名字为: javaxiaobear-consumer
1、添加依赖
依赖和提供者一样
2、添加配置文件
server:
port: 9090 # ??
spring:
application:
name: consumer-service # ????
# ?? ZooKeeper ????
cloud:
zookeeper:
discovery:
enabled: true # ?????? ZooKeeper ????????????? false ??
connect-string: ip:2181
3、服务代码
1、控制层
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Autowired
private DiscoveryClient discoveryClient;
@GetMapping("/go")
public void order() {
//调用提供者服务
List providerServer = discoveryClient.getInstances("product-service");
if (0 == providerServer.size()) {
return;
}
ServiceInstance serviceInstance = providerServer.get(0);
System.out.print(serviceInstance.getUri() + " --- ");
//获取接口路径
String url = serviceInstance.getUri() + "/list";
RestTemplate restTemplate = new RestTemplate();
//调用接口
String str = restTemplate.getForObject(url, String.class);
System.out.println(str);
}
}
4、测试
访问路径:http://localhost:9090/consumer/go


本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/0c1f6b7eb3.html
