Eureka注册中心

发布时间:2023年12月26日

Eureka注册中心是Netflix开源的一款服务发现工具,用于实现微服务架构中的服务注册与发现。Eureka注册中心可以用于管理和监控微服务架构中的各个服务实例,并提供了服务发现和故障转移功能。通过Eureka注册中心,微服务之间可以互相感知和调用,实现高可用性和弹性扩展。Eureka注册中心具有简单易用、可靠性强、支持大规模部署等特点,被广泛应用于微服务架构中。

创建eureka-server服务模块

引入eureka依赖

引入SpringCloud为eureka提供的starter依赖:

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

编写启动类

给eureka-server服务编写一个启动类,一定要添加一个@EnableEurekaServer注解,开启eureka的注册中心功能:

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

编写配置文件

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

启动服务

启动微服务,然后在浏览器访问:http://127.0.0.1:10086

注意:一个微服务,既可以是服务提供者,又可以是服务消费者,因此eureka将服务注册、服务发现等功能统一封装到了eureka-client端

服务注册

在需要注册的服务模块注册到eureka中

引入依赖

在需要注册的服务模块(user-service)的pom文件中,引入下面的eureka-client依赖:

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

配置文件

spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

服务发现

我们将order-service的逻辑修改:向eureka-server拉取user-service的信息,实现服务发现。

引入依赖

在order-service的pom文件中,引入下面的eureka-client依赖:

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

配置文件

服务发现也需要知道eureka地址,因此第二步与服务注册一致,都是配置eureka信息:

在order-service中,修改application.yml文件,添加服务名称、eureka地址:

spring:
  application:
    name: orderservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

服务拉取和负载均衡

我们要去eureka-server中拉取user-service服务的实例列表,并且实现负载均衡,只需要添加一些注解即可。

在order-service的OrderApplication中,给RestTemplate这个Bean添加一个@LoadBalanced注解:

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

修改order-service服务中的top.zsyp.order.service包下的OrderService类中的queryOrderById方法。修改访问的url路径,用服务名代替ip、端口:

public Order queryOrderById(Long orderId) {
        
        Order order = orderMapper.findById(orderId);
        // String url = "http://localhost:8081/user/" + order.getUserId();
        String url = "http://userservice/user/" + order.getUserId();
        User user = restTemplate.getForObject(url, User.class);
        order.setUser(user);
 
        return order;
    }

?使用Eureka作为服务发现和注册中心时,需要注意以下事项:

  1. Eureka是一个关键的基础设施组件,必须保证其高可靠性。因此,应该部署多个Eureka服务器并进行集群配置,以确保任何单一节点的故障不会影响整个系统的正常运行。

  2. 心跳和超时:Eureka通过定期发送心跳来检查服务实例的健康状况。确保服务实例及时响应心跳请求,并调整心跳和超时设置以适应网络条件和负载。

  3. 在多个Eureka服务器之间进行集群配置时,要确保它们的配置文件保持一致。任何配置的更改都应该在所有节点上进行同步,以避免不一致和错误。

  4. 对Eureka服务器进行监控,包括其健康状况、负载情况和可用性。可以使用监控工具和告警系统来及时发现和解决潜在的问题。

文章来源:https://blog.csdn.net/weixin_49564779/article/details/135107612
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。