• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

从零开始 Spring Cloud 2Eureka 注册心

武飞扬头像
魔芋红茶
帮助1

从零开始 Spring Cloud 2:Eureka 注册中心

学新通

图源:laiketui.com

Eureka 常被用作 Spring Cloud注册中心,用于注册微服务的接口提供方。

本文将学习如何在项目中添加 Eureka 注册中心,以及将接口注册到 Eureka

添加 Eureka 服务端

学新通

依赖

在子模块 eureka-server 中添加 eureka 服务端的依赖:

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

启动类

添加一个根包 org.example.shopping.eureka,并添加启动类:

package org.example.shopping.eureka;
// ...
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

不要忘记添加@EnableEurekaServer,否则 Eureka 不能正常启动,会报错。

配置文件

添加配置文件 application.yml

server:
  port: 8090
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8090/eureka

这里的配置项 eureka.client.service-url.defaultZone 用于将当前应用注册到指定的 eureka,在eureka-server 这个子模块中,意味着将自己注册到自己。这样设计是有意义的,eureka 本身也可以做集群,如果那样,可以通过这种方式将 eureka 注册到所在的集群服务器。

控制面板

现在访问 http://localhost:8090/ 就能看到 Eureka 的控制面板:

学新通

其中的 Instances currently registered with Eureka 显示的是当前注册到 Eureka 上的微服务实例。之所以说是“实例”,是因为同一个微服务应用可以部署多个实例,作为集群使用,此时接口调用时就可以用负载均衡的方式选取其中一个调用。

注册服务

下面将子模块 shopping-user 注册到 Eureka,这样子模块 shopping-order 就可以通过 Eureka 获取接口地址并调用接口,不用再将接口硬编码了。

依赖

在在模块 shopping-userPOM 中添加 Eureka 客户端的依赖:

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

如果 Maven 不能正常下载依赖,可以选取一个指定版本的依赖,我这里使用了3.1.3(服务端也使用了这个版本):

学新通

配置文件

修改配置文件,添加应用名和 Eureka 服务端地址:

spring:
  application:
    name: shopping-user
    eureka:
client:
  service-url:
    defaultZone: http://localhost:8090/eureka

测试

现在启动子模块 shopping-usereureka-server,打开 eureka 的控制面板:

学新通

可以看到两个注册的服务,Status 列也可以看到服务地址。

启动多个实例

Service 面板中右键 Copy Configuration

学新通

如果没有 Service 窗口,可以通过菜单 view->tool windows->services 开启。

为另一个运行实例起一个名字,并添加启动参数 -Dserver.port=8082

学新通

现在 Not Started 菜单下会出现刚添加的启动配置。

学新通

右键 run 启动。

现在在 Eureka 的控制面板就能看到启动了两个 shopping-user 实例。

学新通

使用服务

依赖

子模块 shopping-order 要使用 Eureka 获取服务地址,同样需要添加 Eureka 客户端依赖:

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

配置文件

修改配置文件,添加 Eureka 服务地址:

spring:
  application:
    name: shopping-order
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8090/eureka

负载均衡

启用负载均衡,这里只需要为RestTemplatebean 方法添加@LoadBalanced注解:

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

服务调用

修改OrderService,将硬编码的接口地址修改为使用 Eureka 上注册的服务名:

@Service
public class OrderService {
	// ...
    public Order findOrderById(Long orderId) {
        Order order = orderMapper.findById(orderId);
        String url = String.format("http://shopping-user/user/%d", order.getUserId());
		Result<?> result = restTemplate.getForObject(url, Result.class);
        // ...
    }
}

现在再尝试访问接口 http://localhost:8080/order/101,可以通过 IDEA 的 services 窗口查看到 shopping-user 的其中一个实例响应了接口调用。

The End,谢谢阅读。

本文的完整示例代码可以从这里获取。

参考资料

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiaihjf
系列文章
更多 icon
同类精品
更多 icon
继续加载