Penemuan perkhidmatan dalam perkhidmatan mikro Java membolehkan aplikasi menemui dan menyambung ke perkhidmatan lain secara dinamik. Eureka ialah sistem pelanggan/pelayan yang menyediakan pendaftaran perkhidmatan, penemuan dan pengimbangan beban. Spring Cloud Eureka ialah pelaksanaan Spring Cloud Eureka, menyediakan pendaftaran automatik, pengimbangan beban dan penyepaduan Spring. zkclient juga boleh digunakan untuk penemuan perkhidmatan, membenarkan aplikasi menemui alamat perkhidmatan melalui Zookeeper.
Penemuan Perkhidmatan dalam Seni Bina Perkhidmatan Mikro Java
Pengenalan
Dalam seni bina perkhidmatan mikro, penemuan perkhidmatan adalah penting kerana ia membolehkan aplikasi menemui dan menyambung kepada perkhidmatan lain secara dinamik. Terdapat beberapa teknologi penemuan perkhidmatan di Jawa, dan artikel ini akan meneroka sebahagian daripadanya dan memberikan contoh praktikal.
Eureka
Eureka ialah rangka kerja penemuan perkhidmatan sumber terbuka yang dibangunkan oleh Netflix. Ia adalah sistem klien/pelayan di mana pelayan Eureka menyimpan daftar perkhidmatan dan klien Eureka secara berkala mendaftar perkhidmatan dengan pelayan. Eureka menyediakan fungsi berikut:
Spring Cloud:
Spring Cloud Eureka adalah pelaksanaan Spring Cloud Eureka kepada pelanggan, yang menyediakan Cloud Eureka sebagai pelanggan. yang disepadukan dengan lancar dengan aplikasi Spring. Ia menyediakan ciri-ciri berikut:
Kes praktikal
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>3.1.0</version> </dependency>
@EnableEurekaClient
注解启用 Eureka 客户端,并使用 @SpringBootApplication
标记服务类。http://localhost:8761/eureka/apps/[service-name]
使用 zkclient 发现服务:
@SpringBootApplication @EnableEurekaClient public class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } }
<dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.11</version> </dependency>
discoverServices()
方法发现服务并获取其地址。close()
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<String> discoverServices(String serviceName) { List<String> servicePaths = zkClient.getChildren("/services/" + serviceName + "/instances"); List<String> services = new ArrayList<>(); for (String servicePath : servicePaths) { services.add(zkClient.readData("/services/" + serviceName + "/instances/" + servicePath)); } return services; } public void close() { zkClient.close(); } }
@EnableEurekatation andScode>kod pengguna> an@nokatation danBopcode> code> menandakan kelas perkhidmatan. 🎜🎜Mulakan aplikasi pada pelayan Eureka dan semak sama ada perkhidmatan itu didaftarkan dengan menghubungi titik akhir berikut: 🎜🎜🎜<kod>http://localhost:8761/eureka/apps/[service-name]</kod>
🎜 🎜 🎜Gunakan zkclient untuk menemui perkhidmatan: 🎜🎜🎜🎜Tambah pergantungan zkclient dalam perkhidmatan Maven pom dan dapatkan alamatnya. 🎜🎜Apabila menutup perkhidmatan, panggil kaedah close()
untuk mengeluarkan sumber pelanggan Zookeeper. 🎜🎜Atas ialah kandungan terperinci Penemuan perkhidmatan dalam seni bina perkhidmatan mikro Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!