Rumah >Java >javaTutorial >Penemuan perkhidmatan dalam seni bina perkhidmatan mikro Java

Penemuan perkhidmatan dalam seni bina perkhidmatan mikro Java

WBOY
WBOYasal
2024-06-02 12:09:571051semak imbas

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

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:

  • Pendaftaran perkhidmatan dan pembatalan pendaftaran
  • Penemuan perkhidmatan
  • Pengimbangan beban

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:

  • Pendaftaran dan penyahdaftaran perkhidmatan automatik
  • Strategi pengimbangan beban boleh dikonfigurasikan
  • Penyatuan dengan ciri konfigurasi Spring Boot dan Spring Cloud

Kes praktikal

    Tambah kebergantungan Eureka dalam fail pom.xml Maven:
  1. <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        <version>3.1.0</version>
    </dependency>
    Buat kelas perkhidmatan Eureka:
  1. @EnableEurekaClient 注解启用 Eureka 客户端,并使用 @SpringBootApplication 标记服务类。
  2. 在 Eureka 服务器上启动应用程序,然后通过调用以下端点检查服务是否已注册:

http://localhost:8761/eureka/apps/[service-name]

使用 zkclient 发现服务:

  1. 在 Maven pom.xml 文件中添加 zkclient 依赖:
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }

}
  1. 创建 Zookeeper 服务发现类:
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.11</version>
</dependency>
  1. 使用 discoverServices() 方法发现服务并获取其地址。
  2. 在关闭服务时,调用 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();
        }
    
    }
Dayakan klien Eureka melalui @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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn