0


1、学习 Eureka 注册中心

学习 Eureka 注册中心

一、创建 Eureka 微服务

在这里插入图片描述

0、SpringBoot 和 SpringCloud 版本

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.9.RELEASE</version></parent>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR10</version><type>pom</type><scope>import</scope></dependency>

1、引入 Eureka 服务端依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>

2、启动类加 @EnableEurekaServer 注解

@EnableEurekaServer@SpringBootApplicationpublicclassEurekaApplication{publicstaticvoidmain(String[] args){SpringApplication.run(EurekaApplication.class, args);}}

3、配置 yaml 文件,把 Eureka 服务注册到 Eureka 注册中心

server:port:10086spring:application:name: eureka-server

# 将eureka-server注册到Eureka注册中心eureka:client:service-url:# 需要加【/eureka】,否则无法注册defaultZone: http://127.0.0.1:10086/eureka

4、访问 Eureka 服务端,查看注册中心的服务列表信息

如:http://localhost:10086/
在这里插入图片描述

二、其他微服务注册到 Eureka 中

在这里插入图片描述

1、添加 Eureka 客户端依赖

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

2、在 yaml 文件中配置 Eureka 服务端信息

server:port:8080spring:application:name: order-service
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka
server:port:8081spring:application:name: user-service

eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka

3、IDEA 2022 中启动多个服务实例

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、服务发现

1、启动 RestTemplate 的负载均衡

使用服务名,根据负载均衡规则挑选服务提供者

@Bean@LoadBalancedpublicRestTemplaterestTemplate(){returnnewRestTemplate();}

2、根据服务名从 Eureka 注册中心中获取服务的IP和端口号

// String url = "http://localhost:8081/user/" + order.getUserId(); // 硬编码// 👇 根据服务名从 Eureka 注册中心中获取服务的IP和端口号String url ="http://user-service/user/"+ order.getUserId();

四、Ribbon 负载均衡原理

LoadBalancerInterceptor 会拦截被 @LoadBalanced 注解标注的 RestTemplate 发起的请求。它实现了 ClientHttpRequestInterceptor 接口,该接口作用:拦截客户端HTTP请求。LoadBalancerInterceptor 的 intercept 方法中获取服务名称,把服务名称交给 RibbonLoadBalanceClient,RibbonLoadBalanceClient 把服务名称交给 DynamicServerListLoadBalancer,DynamicServerListLoadBalancer 从 Eureka 注册中心获取该服务名的所有的实例信息,然后根据负载均衡规则挑选一个服务实例(

chooseServer

)。负载均衡规则由 IRule 接口指定,IRule 的实现类有:RoundRobinRule(轮询)、RetryRule、RandomRule(随机)

五、修改负载均衡规则

@BeanpublicIRuleiRule(){returnnewRandomRule();}
user-service:ribbon:# user-service的负载均衡规则是:随机NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

六、饥饿加载

ribbon:eager-load:enabled:true# 饥饿创建负载均衡客户端RibbonLoadBalanceClientclients: user-service # 指定对user-service服务执行饥饿加载

🍀RibbonLoadBalanceClient 默认是懒创建,首次访问的时候才创建(首次请求响应时间会比较长)。
🍀饥饿加载:项目创建的时候就创建 RibbonLoadBalanceClient

标签: 学习 eureka 云原生

本文转载自: https://blog.csdn.net/m0_54189068/article/details/136083915
版权归原作者 张思睿ZHQ 所有, 如有侵权,请联系我们删除。

“1、学习 Eureka 注册中心”的评论:

还没有评论