前言

之前从 http 的一个案例去分析了 soul 网关的整体的流程,相信大家对 soul 网关已经有了一些了解。

今天开始,我们正式进入 spring cloud 案例的学习。

先从一个简单的 spring cloud 案例开始完成一个服务的代理。

涉及到的模块介绍

在之前的文章中我们已经知道了 soul 网关里面的两大核心模块 —— soul-admin 和 soul-bootstrap。

前者提供了一个 web 端管理界面,并且存储了所有服务接口的数据。

后者是网关的真正功能,提供服务的代理。

剩下的模块就是真正的服务,这些服务可以是 http 接口,也可以是 spirng cloud 服务,甚至是其他诸如 dubbo 的接口等。

今天我们主要关注 spring cloud 服务。

启动方式

在我们之前的文章里,所有的服务一旦启动就会向 soul-admin 模块注入服务接口数据,然后 soul-admin 又跟 soul-bootstrap 同步数据。

因此,soul-admin 一般需要先启动,然后才是真正的服务模块和 soul-bootstrap。

但是由于 spring cloud 服务需要额外的注册中心,在 soul 源码里面的 soul-examples 目录下面是没有 eureka 或者 nacos 的注册中心服务的,所以在启动项目之前,需要额外提供注册中心服务。

这里我们以 eureka 为例。

新建一个项目,添加 spring-cloud-starter-netflix-eureka-server 模块,然后在配置文件里面设置 eureka 服务的配置。

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  4. </dependency>
  1. server:
  2. port: 8761
  3. spring:
  4. application:
  5. name: eureka-server
  6. eureka:
  7. client:
  8. register-with-eureka: false
  9. fetch-registry: false
  10. serviceUrl:
  11. defaultZone: http://localhost:${server.port}/eureka/

最后在项目的启动类上添加启动 eureka 服务的注解就行了。

  1. @SpringBootApplication
  2. @EnableEurekaServer
  3. public class EurekaServerApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(EurekaServerApplication.class, args);
  6. }
  7. }

到此为止,一个单机的 eureka 注册中心服务就已经完成了。

剩下的就是 soul 网关开启对 spring cloud 的支持,以及设置 eureka 注册中心的地址。

测试和总结

服务启动好了之后,我们开始测试 soul 网关代理的结果。
image.png
image.png
如果测试到上面的结果,那就代表 soul 网关代理 spring cloud 服务已经成功生效了。

可以看到最终的结果跟我们之前运行 soul 代理 http 服务十分相似,使用 soul 网关之后就无需关心真实的服务到底是什么。

最后简单总结一下,我们今天测试了 soul-examples-springcloud 模块,实现了通过 soul 网关代理前者提供的接口而访问到服务,跟 http 服务不一样的是这次多了一个服务注册中心。

那么你是否好奇这个注册中心干了些什么?

以及,在 soul 网关里面是否有其他地方用到了这个注册中心呢?

我们下篇文章继续分析。