Rumah >Java >javaTutorial >Bina sistem perkhidmatan mikro Spring Cloud yang diedarkan dan sangat tersedia
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:
Langkah-langkah untuk menggunakan Eureka untuk membina pusat pendaftaran adalah seperti berikut:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
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
@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:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
server: port: 8080 #设置服务端口号 spring: application: name: test-service #设置服务名称,用于注册到Eureka Server中 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ #设置Eureka Server地址
@RestController public class TestController { @GetMapping("/test") public String test() { return "Hello World"; } }
@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:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
server: port: 8090 #设置服务端口号 spring: application: name: test-consumer #设置服务名称 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ #设置Eureka Server地址
@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"; } }
@RestController public class TestController { @Autowired private TestService testService; @GetMapping("/test") public String test() { return testService.test(); } }
@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:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency>
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 #设置服务提供者名称
@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构建配置中心的步骤如下:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
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分支
@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!