Eureka注册中心

全部流程

注册服务中心

添加maven依赖

<!--引用注册中心-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

配置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去注册。

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

配置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;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值