Rumah  >  Artikel  >  Java  >  Bina sistem perkhidmatan mikro Spring Cloud yang diedarkan dan sangat tersedia

Bina sistem perkhidmatan mikro Spring Cloud yang diedarkan dan sangat tersedia

王林
王林asal
2023-06-22 09:06:25958semak imbas

Dengan perkembangan berterusan perniagaan Internet, seni bina perkhidmatan mikro telah menjadi kaedah seni bina pilihan untuk lebih banyak perusahaan. Sebagai rangka kerja mikroperkhidmatan berdasarkan Spring Boot, Spring Cloud mempunyai ciri pengedaran dan ketersediaan tinggi Semakin banyak syarikat mula menggunakannya untuk membina sistem perkhidmatan mikro mereka sendiri.

Artikel ini akan memperkenalkan cara menggunakan Spring Cloud untuk membina sistem perkhidmatan mikro teragih yang sangat tersedia.

1. Bina pusat pendaftaran

Pusat pendaftaran ialah salah satu komponen teras seni bina mikro Spring Cloud Semua perkhidmatan mikro perlu mendaftarkan maklumat mereka sendiri dengan pusat pendaftaran, dan kemudian yang lain perkhidmatan boleh lulus Cari perkhidmatan ini di pusat pendaftaran. Dalam Spring Cloud, Eureka adalah komponen pusat pendaftaran yang sangat baik Ia mempunyai ketersediaan yang tinggi, diedarkan dan ciri-ciri lain, dan boleh memenuhi keperluan pelbagai senario Oleh itu, kami memilih untuk menggunakan Eureka untuk membina pusat pendaftaran.

Sebelum menggunakan Eureka untuk membina pusat pendaftaran, kita perlu memahami beberapa konsep asas Eureka:

  1. Eureka Server: Bahagian pelayan Eureka, digunakan untuk menerima maklumat pendaftaran daripada pelanggan dan mengekalkannya Senarai maklumat tentang contoh perkhidmatan.
  2. Pelanggan Eureka: Pelanggan Eureka, pernah mendaftar perkhidmatannya sendiri dengan Pelayan Eureka.
  3. Contoh perkhidmatan: contoh perkhidmatan mikro yang sedang dijalankan. Contoh perkhidmatan mengandungi alamat IP, nombor port, status kesihatan dan maklumat lain perkhidmatan.

Langkah-langkah untuk menggunakan Eureka untuk membina pusat pendaftaran adalah seperti berikut:

  1. Buat projek Spring Boot baharu.
  2. Tambah kebergantungan: Tambah kebergantungan berikut dalam fail pom.xml:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  1. Tambah konfigurasi berikut dalam fail application.yml:
server:
  port: 8761    #设置服务端口号

eureka:
  instance:
    hostname: localhost    #设置Eureka Server的主机名
  client:
    register-with-eureka: false    #设置是否注册自身服务,默认为true,这里设置为false
    fetch-registry: false    #设置是否获取注册列表,默认为true,这里设置为false
  server:
    enable-self-preservation: false    #设置是否启用自我保护机制,默认为true,这里设置为false
  1. Buat kelas permulaan Spring Boot baharu dan tambahkan anotasi @EnableEurekaServer untuk memulakan perkhidmatan Eureka:
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

Melalui langkah di atas, kami berjaya membina pendaftaran berasaskan Eureka pusat. Kami boleh memasukkan http://localhost:8761 dalam penyemak imbas untuk mengakses konsol Eureka Server dan melihat bahawa tiada perkhidmatan didaftarkan ke Eureka Server pada masa ini.

2. Membina penyedia perkhidmatan

Pembekal perkhidmatan ialah perkhidmatan mikro yang melaksanakan perniagaan tertentu Ia akan mendaftarkan maklumatnya sendiri dengan pusat pendaftaran supaya perkhidmatan mikro lain boleh menemuinya dan memanggilnya. Perkhidmatan yang disediakan.

Kami menggunakan contoh mudah di sini untuk membina penyedia perkhidmatan HTTP yang boleh menerima permintaan HTTP dan mengembalikan rentetan.

Langkah-langkah untuk membina penyedia perkhidmatan menggunakan Spring Cloud adalah seperti berikut:

  1. Buat projek Spring Boot baharu.
  2. Tambah kebergantungan: Tambah kebergantungan berikut dalam fail pom.xml:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  1. Tambah konfigurasi berikut dalam fail application.yml:
server:
  port: 8080    #设置服务端口号

spring:
  application:
    name: test-service    #设置服务名称,用于注册到Eureka Server中

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/    #设置Eureka Server地址
  1. Buat kelas Pengawal baharu dan tambahkan antara muka yang mengembalikan rentetan:
@RestController
public class TestController {
    @GetMapping("/test")
    public String test() {
        return "Hello World";
    }
}
  1. Tambah anotasi @EnableDiscoveryClient dalam kelas permulaan untuk mendayakan fungsi penemuan perkhidmatan :
@SpringBootApplication
@EnableDiscoveryClient
public class TestServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestServiceApplication.class, args);
    }
}

Melalui langkah di atas, kami telah berjaya membina pembekal perkhidmatan. Kita boleh memasukkan http://localhost:8080/test dalam pelayar untuk mengakses perkhidmatan yang disediakannya Jika semuanya normal, kita boleh melihat nilai pulangan Hello World.

3. Membina pengguna perkhidmatan

Pengguna perkhidmatan ialah perkhidmatan mikro yang memanggil perkhidmatan yang disediakan oleh perkhidmatan mikro lain Ia akan menanyakan pusat pendaftaran untuk perkhidmatan mikro yang diperlukan dan kemudian menghubungi perkhidmatan mikro yang disediakan .

Langkah-langkah untuk membina pengguna perkhidmatan menggunakan Spring Cloud adalah seperti berikut:

  1. Buat projek Spring Boot baharu.
  2. Tambah kebergantungan: Tambah kebergantungan berikut dalam fail pom.xml:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  1. Tambah konfigurasi berikut dalam fail application.yml:
server:
  port: 8090    #设置服务端口号

spring:
  application:
    name: test-consumer    #设置服务名称

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/    #设置Eureka Server地址
  1. Tambah kelas Perkhidmatan untuk memanggil pembekal perkhidmatan:
@Service
public class TestService {
    @Autowired
    private RestTemplate restTemplate;

    @HystrixCommand(fallbackMethod = "fallback")
    public String test() {
        return restTemplate.getForObject("http://test-service/test", String.class);
    }

    public String fallback() {
        return "fallback";
    }
}
  1. Tambah kelas Pengawal untuk mendedahkan antara muka perkhidmatan:
@RestController
public class TestController {
    @Autowired
    private TestService testService;

    @GetMapping("/test")
    public String test() {
        return testService.test();
    }
}
  1. Tambah anotasi @EnableDiscoveryClient dalam kelas permulaan untuk mendayakan fungsi penemuan perkhidmatan:
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker    #启用熔断器功能
public class TestConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestConsumerApplication.class, args);
    }

    @Bean
    @LoadBalanced    #启用负载均衡功能
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

Melalui langkah di atas, kami telah berjaya membina pengguna perkhidmatan, yang boleh menghubungi perkhidmatan Pembekal perkhidmatan dan kembalikan hasil yang betul.

4. Bina gateway API

Gerbang API ialah pintu masuk ke sistem mikroperkhidmatan ini memainkan pelbagai peranan seperti penghalaan, pengimbangan beban dan kawalan keselamatan. Dalam Spring Cloud, Zuul ialah komponen gerbang API yang sangat baik yang boleh memenuhi pelbagai keperluan kami.

Langkah-langkah untuk membina get laluan API menggunakan Spring Cloud adalah seperti berikut:

  1. Buat projek Spring Boot baharu.
  2. Tambah kebergantungan: Tambah kebergantungan berikut dalam fail pom.xml:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
  1. Tambah konfigurasi berikut dalam fail application.yml:
server:
  port: 8888    #设置服务端口号

spring:
  application:
    name: api-gateway    #设置服务名称

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/    #设置Eureka Server地址

zuul:
  routes:
    test-service:
      path: /test/**
      serviceId: test-service    #设置服务提供者名称
  1. Tambah anotasi @EnableZuulProxy dalam kelas permulaan untuk mendayakan fungsi proksi Zuul:
@SpringBootApplication
@EnableZuulProxy
public class ApiGatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(ApiGatewayApplication.class, args);
    }
}

Melalui langkah di atas, kami berjaya membina get laluan API yang boleh menyambungkan http The ://localhost:8888/test permintaan dimajukan kepada pembekal perkhidmatan dan hasil yang betul dikembalikan.

5 Bina pusat konfigurasi

Pusat konfigurasi boleh mengurus maklumat konfigurasi dalam sistem mikroperkhidmatan, kami boleh mengkonfigurasi sistem dengan lebih mudah.

在Spring Cloud中,Config Server是一个优秀的配置中心组件,它可以与Eureka、Zuul等组件配合使用,构建一个完整的微服务体系。

使用Spring Cloud构建配置中心的步骤如下:

  1. 新建一个Spring Boot项目。
  2. 添加依赖:在pom.xml文件中添加如下依赖:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>
  1. 在application.yml文件中添加如下配置:
server:
  port: 8888    #设置服务端口号

spring:
  application:
    name: config-server    #设置服务名称

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/    #设置Eureka Server地址

# 配置中心
spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/{username}/{repository}.git    #设置git仓库地址
          username: {username}    #设置git用户名
          password: {password}    #设置git密码
          search-paths: respo1A/config, respo1B/config    #设置配置文件搜索路径
          default-label: main    #设置git分支
  1. 在启动类中添加@EnableConfigServer注解,用于启用Config Server功能:
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

通过以上的步骤,我们就成功构建了一个Config Server。我们可以将配置文件上传到git仓库中,然后通过http://localhost:8888/application-dev.properties的方式获取指定的配置文件。

六、 总结

通过以上的步骤,我们成功地构建了一个高可用、分布式的Spring Cloud微服务体系,包括了注册中心、服务提供者、服务消费者、API网关和配置中心。在实际应用过程中,我们可以通过这些组件自由组合,构建出更加复杂、高效的微服务体系。

Atas ialah kandungan terperinci Bina sistem perkhidmatan mikro Spring Cloud yang diedarkan dan sangat tersedia. 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