Eureka注册中心

全部流程

Eureka注册中心_第1张图片

注册服务中心

添加maven依赖



    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-server

配置Eureka

因为自己是一个注册中心,也是一个微服务,自己也必须要向注册中心(自己)注册,所以要配置注册中心的地址来实现注册。

server:
  port: 10086 #服务端口

spring:
  application:
    name: eurekaserver #eureka的服务名称

eureka:
  client:
    service-url: #eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka  #因为自己也是一个微服务,所以自己也要向自己发送注册信息

开启Eureka

使用@EnableEurekaServer注解来开启Eureka

@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

注册到服务中心

添加Maven依赖

这要加上这个依赖,SpringBoot就会自动向Eureka去注册。


    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client

配置Eureka

server:
  port: 10086 #服务端口

spring:
  application:
    name: orderservice #eureka的服务名称

eureka:
  client:
    service-url: #eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka  #因为自己也是一个微服务,所以自己也要向自己发送注册信息

开启负载均衡

@LoadBalanced注解用于负载均衡。

在有多个相同服务名称的服务中自动作选择,来实现负载均衡。

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

服务名代替网络地址

url中:http://127.0.0.1:8081/user/xxx,改成http://userservice/user/xxx。

userservice为要访问服务的yml中配置的项目名称,这个名称也是注册到Eureka的名称。

在 Eureka 中,这种使用服务名(而非具体的 IP 地址和端口号)来构造服务间调用 URL 的方式,通常被称为“服务发现”或“客户端负载均衡”。

在 Spring Cloud 中,当使用像 RestTemplateFeign 等组件进行服务间调用时,可以直接使用服务名来代替具体的网络地址。这背后的机制称为 “客户端服务发现”。

RestTemplateFeign 看到 URL 以服务名开始时,它们会向 Eureka 服务注册中心查询这个服务名对应的实际网络地址(即 IP 地址和端口号),然后再发起实际的网络请求。这个过程是透明的,开发者不需要手动进行服务查找和负载均衡。

此外,这种方式还允许 Spring Cloud 在请求发送前,根据从 Eureka Server 获取的服务实例列表进行客户端负载均衡(通常是轮询或随机算法),从而实现了分布式系统中的负载均衡。

public Order queryOrderById(Long orderId) {
    Order order = orderMapper.findById(orderId);
    //String url = "http://127.0.0.1:8001/user/" + order.getUserId();用服务名替代ip地址
    String url = "http://userservice/user/" + order.getUserId();
    User user = restTemplate.getForObject(url, User.class);
    order.setUser(user);
    return order;
}

你可能感兴趣的:(微服务,eureka,java,mybatis)