Eureka快速入门

Eureka介绍

Eureka 是 Netflix 开发的服务发现框架。Spring Cloud 将其集成在 spring-cloud-netflix 子项目中,以实现 Spring Cloud 的服务发现功能。

Eureka的作用

Eureka的作用

Eureka的主要作用如下:

服务的注册和拉取

服务实例启动后,将自己的信息注册到Eureka服务端,完成服务注册,Eureka服务端保存注册的服务名称到服务实例地址列表的映射关系,然后Eureka客户端根据根据服务的名称,拉取实例地址列表,完成服务发现(服务拉取)。

实现服务间的负载均衡

Eureka客户端从实例列表中利用负载均衡算法选择其中一个实例地址,然后会向该实例地址发送远程调用。

对服务进行健康检测(心跳策略)

消费者每隔一段时间(默认为30秒)向Eureka服务端发起请求,报告自己的状态,即心跳。当一段时间没有发送心跳时,Eureka服务端会认为该微服务实例出现故障,将该实例节点从服务列表中剔除,在Eureka客户端拉取服务的时候就能将故障实例排除。

Eureka注册中心的搭建过程

引入Eureka服务端依赖

在Eureka微服务中引入如下依赖:

 <!--eureka服务端依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

编写启动类

在Eureka服务端微服务的启动类上添加@EnableEurekaServer注解开启Eureka:

@SpringBootApplication
@EnableEurekaServer //通过注解开启eureka表示自己是一个注册中心
public class EurekaApplication {

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

编写配置文件

在application.yml配置文件中配置Eureka的相关配置:

server:
  port: 10086 #服务端口
spring:
  application:
    name: eureka-server #服务名称
eureka:
  client:
    service-url: #eureka注册中心地址信息,自身也是个微服务,会将自己也注册在eureka上
      defaultZone: http://127.0.0.1:10086/eureka

完成上述配置后启动服务,浏览器访问服务地址,如果出现如下页面即搭建成功:

在这里插入图片描述

服务注册

服务注册和服务拉取的相关依赖都统一封装在ereuka-client依赖下

引入Eureka客户端依赖

在需要注册的微服务的pom.xml文件中引入如下依赖:

<!--eureka客户端依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

修改配置文件

在配置文件中添加和eureka有关的配置,添加服务名和eureka地址:

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

如果在访问Eureka服务端页面的时候该服务的名字如图红框中所示展示出来即为该微服务成功注册在Eureka上:

在这里插入图片描述

服务发现

引入Eureka客户端依赖

在需要进行服务发现的微服务的pom.xml文件中引入如下依赖:

<!--eureka客户端依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

修改配置文件

在配置文件中添加和eureka有关的配置,同样添加服务名和eureka地址,服务发现也需要知道eureka地址:

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

服务的拉取和负载均衡

负载均衡只需要在RestTemplate上添加@LoadBalanced注解即可实现,默认的方式为轮询

    @Bean
    @LoadBalanced //开启负载均衡,默认为轮询
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

服务拉取即修改服务的访问路径,用服务名代替IP地址和端口

@Service
public class OrderService {

    @Autowired
    private OrderMapper orderMapper;

    @Autowired
    private RestTemplate restTemplate;

    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        // 2、利用RestTemplate发起Http请求,查询用户
        //String url = "http://localhost:8080/user/" + order.getUserId();
        //将上边这句替换为下边的格式,修改端口号和IP地址为服务名称
        String url = "http://userservice/user/" + order.getUserId();
        User user = restTemplate.getForObject(url, User.class);
        //3、封装User到Order
        order.setUser(user);
        // 4.返回
        return order;
    }
}
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud是一个用于构建分布式系统的开发工具包,它基于Spring Boot,并提供了一系列的开发工具和服务,帮助开发者快速构建和管理分布式系统的各个组件。 要快速入门Spring Cloud,你可以按照以下步骤进行操作: 1. 确保你已经安装了Java开发环境和Maven构建工具。 2. 创建一个新的Spring Boot项目。你可以使用Spring Initializr(http://start.spring.io/)网站或者使用IDE(如IntelliJ IDEA、Eclipse)的工具来创建一个新的Spring Boot项目。 3. 在创建项目时,选择需要使用的Spring Cloud组件。Spring Cloud提供了许多组件,如服务注册与发现(Eureka、Consul)、负载均衡(Ribbon)、断路器(Hystrix)、配置管理(Config Server)、网关(Zuul)、消息总线(Spring Cloud Bus)等等。根据你的需求选择相应的组件依赖。 4. 编写业务代码。根据你的业务需求,编写相应的业务代码。可以使用Spring MVC来实现RESTful API,使用Spring Data来操作数据库等等。 5. 配置和启动Spring Cloud组件。根据你选择的组件,配置相应的参数和属性。例如,如果你选择了Eureka作为服务注册与发现组件,需要配置Eureka Server和Eureka Client相关属性。然后启动相应的组件服务。 6. 集成和测试。将你的业务代码集成到Spring Cloud项目中,并进行测试。可以使用Postman等工具来测试RESTful API的调用和返回结果。 这只是一个简单的快速入门指南,Spring Cloud还有更多的功能和组件可以探索和学习。你可以参考Spring Cloud官方文档(https://spring.io/projects/spring-cloud)来了解更多详细信息。祝你学习愉快!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值