1、学习 Eureka 注册中心

简介: 1、学习 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
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

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

server:
  port: 10086
spring:
  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: 8080
spring:
  application:
    name: order-service
eureka:
  client:
    service-url: 
      defaultZone: http://127.0.0.1:10086/eureka
server:
  port: 8081
spring:
  application:
    name: user-service
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

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

三、服务发现

1、启动 RestTemplate 的负载均衡

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

@Bean
  @LoadBalanced
  public RestTemplate restTemplate() {
      return new RestTemplate();
  }

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(随机)

五、修改负载均衡规则

@Bean
    public IRule iRule() {
        return new RandomRule();
    }
user-service:
  ribbon: # user-service的负载均衡规则是:随机
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

六、饥饿加载

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

🍀RibbonLoadBalanceClient 默认是懒创建,首次访问的时候才创建(首次请求响应时间会比较长)。

🍀饥饿加载:项目创建的时候就创建 RibbonLoadBalanceClient

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1月前
|
存储 SpringCloudAlibaba Nacos
2、学习 Nacos 注册中心
2、学习 Nacos 注册中心
36 0
|
15天前
|
存储 监控 安全
服务注册中心Eureka
服务注册中心Eureka
26 1
|
2月前
|
机器学习/深度学习 Java Nacos
Nacos实战之配置中心与注册中心详解
Nacos实战之配置中心与注册中心详解
Nacos实战之配置中心与注册中心详解
|
8月前
|
负载均衡 监控 算法
Eureka注册中心
Eureka注册中心
86 0
|
10月前
|
Java Maven
搭建Eureka注册中心
先创建一个maven项目 导入springboot springcloud和Eureka相关依赖 依赖这里一直有错误,改了半天才可以用 ,用的是阿里云的仓库下载的。
搭建Eureka注册中心集群
第一个Eureka的配置文件
|
11月前
|
负载均衡 监控 算法
Eureka的作用、搭建Eureka注册中心、服务注册及服务发现
Eureka的作用、搭建Eureka注册中心、服务注册及服务发现
102 0
|
11月前
|
JavaScript Java Nacos
Nacos 关于注册中心注册不上的问题
原因是nacos的版本和spring boot的版本不兼容导致的,当时我们用的nacos的版本是0.2.1,spring boot 的版本是2.1.9,2.1.9的spring boot不兼容nacos0.2.1
134 0
|
负载均衡 Java Maven
SpringCloud基础服务注册中心Eureka
由于Spring Cloud为服务治理做了一层抽象接口,所以在Spring Cloud应用中可以支持多种不同的服务治理框架,比如:Netflix Eureka、Consul、Zookeeper。在Spring Cloud服务治理抽象层的作用下,我们可以无缝地切换服务治理实现,并且不影响任何其他的服务注册、服务发现、服务调用等逻辑。(有过面向接口编程的同学应该能体会到这一层抽象接口带来的好处。)
|
存储 负载均衡 监控
(五)、Eureka服务注册中心
(五)、Eureka服务注册中心
(五)、Eureka服务注册中心