ToB企服应用市场:ToB评测及商务社交产业平台

标题: Spring-cloud 微服务 服务注册_服务发现-Eureka [打印本页]

作者: 梦应逍遥    时间: 2024-12-30 05:50
标题: Spring-cloud 微服务 服务注册_服务发现-Eureka
一、Eureka

Eureka是Netflix开发的一个服务注册和发现框架,通常被用于构建微服务架构中的服务管理体系。作为Spring Cloud Netflix组件之一,Eureka被广泛用于Spring Cloud项目中来实现服务的注册与发现。
核心概念


工作原理

特点


Eureka通过这些机制,有用地实现了服务管理,进步了微服务架构的稳固性和弹性。
二、CAP理论

CAP理论是分布式体系中一个非常重要的概念,由加州大学伯克利分校的计算机科学家Eric Brewer在2000年提出。CAP代表一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance),这三个属性在分布式体系的筹划中至关重要。理论指出,一个分布式体系最多只能同时满意这三个属性中的两个。
CAP三要素

理论的现实应用

在现实应用中,分布式体系通常要在一致性和可用性之间做衡量,因为分区容忍性在当代网络环境下是一个必须要保证的属性(否则体系的某个部分可能由于网络故障而被孤立)。

结论

CAP理论提供了一个有用的框架来理解不同分布式体系筹划所面临的衡量。固然理论指出无法同时实现三者,但现实应用中,体系筹划者通常会根据业务需求的优先级来动态调整一致性和可用性的级别,同时尽量保持体系对分区的容忍性。
三、在spring boot构建的spring cloud 项目中 怎样创建Eureka-server

Spring Boot中创建一个Eureka Server非常直接,主要分为几个步骤:添加依靠、设置应用、启用Eureka Server,然后运行它。下面是详细的步骤:
1. 创建Spring Boot项目

首先,你需要一个基本的Spring Boot项目。可以利用Spring Initializr来快速天生项目结构。
2. 添加依靠

在项目的pom.xml文件中,添加Eureka Server的依靠。如果你正在利用Maven,可以添加如下依靠:
  1. <dependencies>
  2.     <!-- Eureka Server -->
  3.     <dependency>
  4.         <groupId>org.springframework.cloud</groupId>
  5.         <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  6.     </dependency>
  7.     <!-- Spring Boot Starter Web -->
  8.     <dependency>
  9.         <groupId>org.springframework.boot</groupId>
  10.         <artifactId>spring-boot-starter-web</artifactId>
  11.     </dependency>
  12.     <!-- 添加Spring Boot Starter Test,用于测试 -->
  13.     <dependency>
  14.         <groupId>org.springframework.boot</groupId>
  15.         <artifactId>spring-boot-starter-test</artifactId>
  16.         <scope>test</scope>
  17.     </dependency>
  18. </dependencies>
  19. <dependencyManagement>
  20.     <dependencies>
  21.         <dependency>
  22.             <groupId>org.springframework.cloud</groupId>
  23.             <artifactId>spring-cloud-dependencies</artifactId>
  24.             <version>${spring-cloud.version}</version>
  25.             <type>pom</type>
  26.             <scope>import</scope>
  27.         </dependency>
  28.     </dependencies>
  29. </dependencyManagement>
复制代码
这里的${spring-cloud.version}需要更换为当前稳固的Spring Cloud版本,例如2020.0.3。请访问Spring Cloud官方文档查看最新版本。
3. 设置Eureka Server

在你的Spring Boot项目中的application.properties或application.yml文件中添加Eureka的基本设置:
如果是application.properties:
  1. server.port=8761
  2. eureka.client.register-with-eureka=false
  3. eureka.client.fetch-registry=false
  4. eureka.instance.hostname=localhost
复制代码
如果是application.yml:
  1. server:
  2.   port: 8761
  3. eureka:
  4.   client:
  5.     register-with-eureka: false
  6.     fetch-registry: false
  7.   instance:
  8.     hostname: localhost
复制代码
这些设置设定了Eureka Server的端口为8761,并告诉Eureka Server它自己不是一个客户端(不需要将自己注册到其他Eureka Server上)。
4. 启用Eureka Server

在你的Spring Boot应用的主类上添加@EnableEurekaServer注解来启用Eureka Server功能:
  1. import org.springframework.boot.SpringApplication;
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;
  3. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  4. @SpringBootApplication
  5. @EnableEurekaServer
  6. public class EurekaServerApplication {
  7.     public static void main(String[] args) {
  8.         SpringApplication.run(EurekaServerApplication.class, args);
  9.     }
  10. }
复制代码
如今,一切都设置好了,你只需要运行这个Spring Boot应用。可以直接在IDE中运行,大概通过下令行利用Maven或Gradle构建并运行。
启动后,访问http://localhost:8761,你应该能看到Eureka的控制台,这表示你的Eureka Server已经正常运行。
以上就是在Spring Boot项目中设置Eureka Server的基本步骤。这样设置后,你可以开始将其他微服务注册到这个Eureka Server上了。
四、服务注册与服务发现
要实现服务注册和发现的详细代码,我可以给你展示怎样在一个利用Spring Cloud和Eureka的环境中进行设置和编码。这里包罗了怎样创建Eureka服务器、服务提供者和服务消耗者的示例代码。
步骤1:设置Eureka服务器

我之前已经形貌了怎样设置一个Eureka服务器。这里我们只关注代码部分。在Spring Boot应用的主类中利用@EnableEurekaServer注解来激活Eureka服务器。
  1. import org.springframework.boot.SpringApplication;
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;
  3. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  4. @SpringBootApplication
  5. @EnableEurekaServer
  6. public class EurekaServerApplication {
  7.     public static void main(String[] args) {
  8.         SpringApplication.run(EurekaServerApplication.class, args);
  9.     }
  10. }
复制代码
步骤2:创建服务提供者

服务提供者会注册自己到Eureka服务器。这需要在pom.xml中添加Eureka客户端依靠,然后在Spring Boot的主类中利用@EnableDiscoveryClient注解。
  1. <dependency>
  2.     <groupId>org.springframework.cloud</groupId>
  3.     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  4. </dependency>
复制代码
  1. import org.springframework.boot.SpringApplication;
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;
  3. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  4. @SpringBootApplication
  5. @EnableDiscoveryClient
  6. public class ServiceProviderApplication {
  7.     public static void main(String[] args) {
  8.         SpringApplication.run(ServiceProviderApplication.class, args);
  9.     }
  10. }
复制代码
  1. import org.springframework.web.bind.annotation.GetMapping;
  2. import org.springframework.web.bind.annotation.RestController;
  3. @RestController
  4. public class ServiceController {
  5.     @GetMapping("/service")
  6.     public String service() {
  7.         return "Hello from Service Provider";
  8.     }
  9. }
复制代码
步骤3:创建服务消耗者

服务消耗者同样需要添加Eureka客户端依靠,并在主类中利用@EnableDiscoveryClient。然后,利用RestTemplate或Feign客户端从Eureka获取服务并进行调用。
添加依靠(如果利用Feign):
  1. <dependency>
  2.     <groupId>org.springframework.cloud</groupId>
  3.     <artifactId>spring-cloud-starter-openfeign</artifactId>
  4. </dependency>
复制代码
  1. import org.springframework.boot.SpringApplication;
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;
  3. import org.springframework.cloud.openfeign.EnableFeignClients;
  4. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  5. @SpringBootApplication
  6. @EnableDiscoveryClient
  7. @EnableFeignClients
  8. public class ServiceConsumerApplication {
  9.     public static void main(String[] args) {
  10.         SpringApplication.run(ServiceConsumerApplication.class, args);
  11.     }
  12. }
复制代码
  1. import org.springframework.cloud.openfeign.FeignClient;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. @FeignClient(name = "service-provider")
  4. public interface ServiceProviderClient {
  5.     @GetMapping("/service")
  6.     String getService();
  7. }
  8. @RestController
  9. public class ServiceController {
  10.     @Autowired
  11.     private ServiceProviderClient serviceProviderClient;
  12.     @GetMapping("/consume")
  13.     public String consume() {
  14.         return serviceProviderClient.getService();
  15.     }
  16. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4