java 微服务中的服务发现允许应用程序动态发现和连接其他服务。eureka 是一种客户端/服务器系统,提供服务注册、发现和负载均衡。spring cloud eureka 是 eureka 的 spring cloud 实现,提供自动注册、负载均衡和 spring 集成。zkclient 也可以用于服务发现,允许应用程序通过 zookeeper 发现服务地址。
Java 微服务架构中的服务发现
简介
在微服务架构中,服务发现是至关重要的,因为它允许应用程序动态发现和连接到其他服务。Java 中有多种服务发现技术,本文将探讨其中一些技术并提供实战案例。
立即学习“Java免费学习笔记(深入)”;
Eureka
Eureka 是 Netflix 开发的开源服务发现框架。它是一个客户端/服务器系统,其中 Eureka 服务器存储服务注册表,而 Eureka 客户端定期向服务器注册服务。 Eureka 提供了以下功能:
服务注册和取消注册服务发现负载均衡
Spring Cloud:
Spring Cloud Eureka 是 Spring Cloud 生态系统中 Eureka 的一个实现,它提供了一个与 Spring 应用程序无缝集成的 Eureka 客户端。它提供了以下功能:
自动服务注册和取消注册配置化的负载均衡策略与 Spring Boot 和 Spring Cloud 配置属性的集成
实战案例
使用 Spring CloudEureka 发现服务:
在 Maven pom.xml 文件中添加 Eureka 依赖:
org.springframework.cloudspring-cloud-starter-netflix-eureka-client3.1.0
登录后复制创建 Eureka 服务类:
@SpringBootApplication@EnableEurekaClientpublic class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); }}
登录后复制通过 @EnableEurekaClient 注解启用 Eureka 客户端,并使用 @SpringBootApplication 标记服务类。在 Eureka 服务器上启动应用程序,然后通过调用以下端点检查服务是否已注册:
http://localhost:8761/eureka/apps/[service-name]
使用 zkclient 发现服务:
在 Maven pom.xml 文件中添加 zkclient 依赖:
com.101teczkclient0.11
登录后复制创建 Zookeeper 服务发现类:
import org.I0Itec.zkclient.ZkClient;import org.I0Itec.zkclient.serialize.SerializableSerializer;import java.util.*;public class ZkServiceDiscovery { private static final String ZOOKEEPER_ADDRESS = "localhost:2181"; private static final int SESSION_TIMEOUT = 3000; private static final int CONNECTION_TIMEOUT = 3000; private ZkClient zkClient; public ZkServiceDiscovery() { zkClient = new ZkClient(ZOOKEEPER_ADDRESS, SESSION_TIMEOUT, CONNECTION_TIMEOUT, new SerializableSerializer()); } public List discoverServices(String serviceName) { List servicePaths = zkClient.getChildren("/services/" + serviceName + "/instances"); List services = new ArrayList(); for (String servicePath : servicePaths) { services.add(zkClient.readData("/services/" + serviceName + "/instances/" + servicePath)); } return services; } public void close() { zkClient.close(); }}
登录后复制使用 discoverServices() 方法发现服务并获取其地址。在关闭服务时,调用 close() 方法释放 Zookeeper 客户端资源。
以上就是Java微服务架构中的服务发现的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2620643.html