单机Eureka构建步骤

偏执的太偏执、 2023-10-11 20:31 100阅读 0赞

目录

一、Eureka基础知识

(一)什么是服务治理

(二)什么是服务注册

(三)Eureka两组件

二、单机Eureka构建步骤

(一)IDEA生成eurekaServer端服务注册中心

(二)EurekaClient端cloud-provider-payment8001

(三)EurekaClient端cloud-consumer-order80

(四)bug


一、Eureka基础知识

(一)什么是服务治理

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理

在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

(二)什么是服务注册

Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行
在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地RPC调用。RPC远程调用框架核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。在任何rpc远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址))
下左图是Eureka系统架构,右图是Dubbo的架构,请对比

60cae7af99334c0bae689ed99e692507.png

(三)Eureka两组件

Eureka包含两个组件:Eureka Server和Eureka Client

Eureka Server提供服务注册服务
各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。

EurekaClient通过注册中心进行访问
是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)

二、单机Eureka构建步骤

6de9df6f9d1c4f5689e0268cee59aa20.png

(一)IDEA生成eurekaServer端服务注册中心

1、建Module

cloud-eureka-server7001

2、改POM

  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. <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
  8. <dependency>
  9. <groupId>com.atguigu.springcloud</groupId>
  10. <artifactId>cloud-api-commons</artifactId>
  11. <version>${project.version}</version>
  12. </dependency>
  13. <!--boot web actuator-->
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-starter-web</artifactId>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter-actuator</artifactId>
  21. </dependency>
  22. <!--一般通用配置-->
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-devtools</artifactId>
  26. <scope>runtime</scope>
  27. <optional>true</optional>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.projectlombok</groupId>
  31. <artifactId>lombok</artifactId>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.springframework.boot</groupId>
  35. <artifactId>spring-boot-starter-test</artifactId>
  36. <scope>test</scope>
  37. </dependency>
  38. <dependency>
  39. <groupId>junit</groupId>
  40. <artifactId>junit</artifactId>
  41. </dependency>
  42. </dependencies>

3、写YML

  1. server:
  2. port: 7001
  3. eureka:
  4. instance:
  5. hostname: localhost #eureka服务端的实例名称
  6. client:
  7. #false表示不向注册中心注册自己。
  8. register-with-eureka: false
  9. #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
  10. fetch-registry: false
  11. service-url:
  12. #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。
  13. defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

4、主启动

@EnableEurekaServer

5、测试

34d4873082fe418db66c0fc058575a8f.png

(二)EurekaClient端cloud-provider-payment8001

1、建Module

cloud-provider-payment8001

2、改POM

  1. <!--eureka-client-->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  5. </dependency>

3、写YML

  1. eureka:
  2. client:
  3. #表示是否将自己注册进EurekaServer默认为true。
  4. register-with-eureka: true
  5. #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
  6. fetchRegistry: true
  7. service-url:
  8. defaultZone: http://localhost:7001/eureka

4、主启动

  1. @SpringBootApplication
  2. @EnableEurekaClient
  3. public class PaymentMain8001 {
  4. public static void main(String[] args) {
  5. SpringApplication.run(PaymentMain8001.class, args);
  6. }
  7. }

5、测试

52353ae23e6c4ba99ea4ae6361460825.png

6、自我保护机制

3117b713563b4b5981ab045548a7127a.png

(三)EurekaClient端cloud-consumer-order80

1、建Module

cloud-consumer-order80

2、改POM

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  4. </dependency>

3、写YML

  1. server:
  2. port: 80
  3. spring:
  4. application:
  5. name: cloud-order-service
  6. eureka:
  7. client:
  8. #表示是否将自己注册进EurekaServer默认为true。
  9. register-with-eureka: true
  10. #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
  11. fetchRegistry: true
  12. service-url:
  13. defaultZone: http://localhost:7001/eureka

4、主启动

  1. @SpringBootApplication
  2. @EnableEurekaClient
  3. public class OrderMain80
  4. {
  5. public static void main(String[] args)
  6. {
  7. SpringApplication.run(OrderMain80.class,args);
  8. }
  9. }

5、测试

先要启动EurekaServer,7001服务

再要启动服务提供者provider,8001服务

eureka服务器

f48efb5081704b439844752e7f7f634a.png

http://localhost/consumer/payment/get/1

9a075c5a420846f68ef1930810375a2c.png

(四)bug

  1. Failed to bind properties under 'eureka.client.service-url' to java.util.Map<java.lang.String, java.lang.String>

94ea7d8d356b4b08982814f8dc0b6407.png

发表评论

表情:
评论列表 (有 0 条评论,100人围观)

还没有评论,来说两句吧...

相关阅读