인터넷 비즈니스가 지속적으로 발전함에 따라 마이크로서비스 아키텍처는 점점 더 많은 기업에서 선호하는 아키텍처 방법이 되었습니다. Spring Boot 기반의 마이크로서비스 프레임워크로서 Spring Cloud는 분산성과 고가용성이라는 특징을 가지고 있으며, 이를 활용하여 자체 마이크로서비스 시스템을 구축하는 기업이 늘어나고 있습니다.
이 기사에서는 Spring Cloud를 사용하여 고가용성 분산 마이크로서비스 시스템을 구축하는 방법을 소개합니다.
1. 등록 센터 구축
등록 센터는 Spring Cloud 마이크로서비스 아키텍처의 핵심 구성 요소 중 하나입니다. 모든 마이크로서비스는 등록 센터에 자체 정보를 등록해야 하며, 다른 서비스는 등록을 통해 이 서비스를 찾을 수 있습니다. 센터. Spring Cloud에서 Eureka는 매우 뛰어난 등록 센터 구성 요소입니다. 이는 고가용성, 분산 및 기타 특성을 가지며 다양한 시나리오의 요구 사항을 충족할 수 있습니다. 따라서 우리는 Eureka를 사용하여 등록 센터를 구축하기로 결정했습니다.
Eureka를 사용하여 등록 센터를 구축하기 전에 Eureka의 몇 가지 기본 개념을 이해해야 합니다.
Eureka를 사용하여 등록 센터를 구축하는 단계는 다음과 같습니다.
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
@EnableEurekaServer
注解,用于启动Eureka服务: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
通过以上的步骤,我们就成功构建了一个基于Eureka的注册中心。我们可以在浏览器中输入http://localhost:8761访问Eureka Server的控制台,看到当前没有任何服务注册到Eureka Server中。
二、 构建服务提供者
服务提供者是实现具体业务的微服务,它会向注册中心注册自己的信息,让其他的微服务能够发现它并调用它提供的服务。
我们在这里使用一个简单的示例,构建一个HTTP服务提供者,它能够接受HTTP请求,并返回一个字符串。
使用Spring Cloud构建服务提供者的步骤如下:
@SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
<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地址
@EnableDiscoveryClient
注解,用于启用服务发现功能:@RestController public class TestController { @GetMapping("/test") public String test() { return "Hello World"; } }
通过以上的步骤,我们就成功构建了一个服务提供者。我们可以在浏览器中输入http://localhost:8080/test访问它提供的服务,如果一切正常,就可以看到Hello World的返回值。
三、 构建服务消费者
服务消费者是调用其他微服务提供的服务的微服务,它会向注册中心查询需要的微服务,然后调用该微服务提供的服务。
使用Spring Cloud构建服务消费者的步骤如下:
@SpringBootApplication @EnableDiscoveryClient public class TestServiceApplication { public static void main(String[] args) { SpringApplication.run(TestServiceApplication.class, args); } }
<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"; } }
@EnableDiscoveryClient
注解,用于启用服务发现功能:@RestController public class TestController { @Autowired private TestService testService; @GetMapping("/test") public String test() { return testService.test(); } }
通过以上的步骤,我们就成功构建了一个服务消费者,它可以调用服务提供者的服务并返回正确的结果。
四、 构建API网关
API网关是微服务体系的入口,它起到了路由、负载均衡、安全控制等多种作用。在Spring Cloud中,Zuul是一个优秀的API网关组件,可以满足我们的各种需求。
使用Spring Cloud构建API网关的步骤如下:
@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(); } }
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency>
@EnableZuulProxy
여기에서는 간단한 예를 사용하여 HTTP 요청을 수락하고 문자열을 반환할 수 있는 HTTP 서비스 공급자를 구축합니다. 새 Spring Boot 프로젝트를 생성합니다.
종속성 추가: pom. :
🎜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 #设置服务提供者名称
@EnableDiscoveryClient
주석을 추가하세요. 🎜 🎜@SpringBootApplication @EnableZuulProxy public class ApiGatewayApplication { public static void main(String[] args) { SpringApplication.run(ApiGatewayApplication.class, args); } }🎜위의 단계를 통해 성공적으로 A 서비스 제공자를 구축했습니다. 브라우저에 http://localhost:8080/test를 입력하면 제공되는 서비스에 액세스할 수 있습니다. 모든 것이 정상이면 Hello World의 반환 값을 볼 수 있습니다. 🎜🎜3. 서비스 소비자 구축🎜🎜 서비스 소비자는 다른 마이크로서비스에서 제공하는 서비스를 호출하는 마이크로서비스입니다. 등록 센터에서 필요한 마이크로서비스를 쿼리한 다음 마이크로서비스에서 제공하는 서비스를 호출합니다. 🎜🎜Spring Cloud를 사용하여 서비스 소비자를 구축하는 단계는 다음과 같습니다. 🎜🎜🎜새 Spring Boot 프로젝트를 생성합니다. 🎜🎜종속성 추가: pom.
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
@를 추가합니다. 서비스 검색 기능 활성화를 위한 시작 클래스의 EnableDiscoveryClient
주석: 🎜🎜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分支🎜위 단계를 통해 서비스 공급자의 서비스를 호출하고 올바른 결과를 반환할 수 있는 서비스 소비자를 성공적으로 구축했습니다. 🎜🎜4. API 게이트웨이 구축🎜🎜API 게이트웨이는 마이크로서비스 시스템의 입구이며 라우팅, 로드 밸런싱, 보안 제어 등 다양한 역할을 수행합니다. Spring Cloud에서 Zuul은 다양한 요구 사항을 충족할 수 있는 탁월한 API 게이트웨이 구성 요소입니다. 🎜🎜Spring Cloud를 사용하여 API 게이트웨이를 구축하는 단계는 다음과 같습니다. 🎜🎜🎜새 Spring Boot 프로젝트를 생성합니다. 🎜🎜종속성 추가: Zuul 프록시 기능을 활성화하는 데 사용되는 pom. /서비스 제공자에게 요청하고 올바른 결과를 반환합니다. 🎜🎜5. 구성 센터 구축🎜🎜구성 센터에서는 마이크로서비스 시스템의 구성 정보를 중앙에서 관리할 수 있어 시스템을 보다 편리하게 구성할 수 있습니다. 🎜
在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网关和配置中心。在实际应用过程中,我们可以通过这些组件自由组合,构建出更加复杂、高效的微服务体系。
위 내용은 분산형 고가용성 Spring Cloud 마이크로서비스 시스템 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!