0%

Creating microservice using Spring Cloud, Eureka and Zuul

概述

Spring 框架提供了一系列的库来创建微服务,它们是 Spring Cloud 项目的一部分。这篇文章展示如何使用 Spring Boot 和下列技术来创建简单的微服务:

  • Zuul 网关服务,提供动态路由,监听,弹性,安全性以及其他
  • Ribbon 客户端负载均衡
  • Feign 声明 REST 客户端
  • Eureka 服务注册和发现
  • Sleuth 通过日志分布式跟踪
  • Zipkin 具有请求可视化的分布式跟踪系统

piomin/sample-spring-microservices 是一个简单的应用,下图展示了这个应用的结构。客户端由 customer-service 提供,通过 Zuul 网关存储基本客户数据。此端点与 account-service 互动,以收集 account-service 端点所服务的客户账户信息。每个服务在 Eurekadiscovery-serice 上自行注册,并使用 spring-cloud-sleuthzipkin-service 发送日志。

account-service

Create Project

Dependencies of Spring Boot project:

  • Eureka Server
  • Spring Boot Actuator
  • Sleuth
  • Zipkin Client

pom.xml:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

sccount-service 中,使用 findByCustomer 方法通过 id 获取客户账户。