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

创建eureka-server服务模块

引入eureka依赖

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

org.springframework.cloud

spring-cloud-starter-netflix-eureka-server

编写启动类

给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依赖:

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

配置文件

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依赖:

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

配置文件

服务发现也需要知道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作为服务发现和注册中心时,需要注意以下事项:

Eureka是一个关键的基础设施组件,必须保证其高可靠性。因此,应该部署多个Eureka服务器并进行集群配置,以确保任何单一节点的故障不会影响整个系统的正常运行。 心跳和超时:Eureka通过定期发送心跳来检查服务实例的健康状况。确保服务实例及时响应心跳请求,并调整心跳和超时设置以适应网络条件和负载。 在多个Eureka服务器之间进行集群配置时,要确保它们的配置文件保持一致。任何配置的更改都应该在所有节点上进行同步,以避免不一致和错误。 对Eureka服务器进行监控,包括其健康状况、负载情况和可用性。可以使用监控工具和告警系统来及时发现和解决潜在的问题。

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: