前言
之前从 http 的一个案例去分析了 soul 网关的整体的流程,相信大家对 soul 网关已经有了一些了解。
今天开始,我们正式进入 spring cloud 案例的学习。
先从一个简单的 spring cloud 案例开始完成一个服务的代理。
涉及到的模块介绍
在之前的文章中我们已经知道了 soul 网关里面的两大核心模块 —— soul-admin 和 soul-bootstrap。
前者提供了一个 web 端管理界面,并且存储了所有服务接口的数据。
后者是网关的真正功能,提供服务的代理。
剩下的模块就是真正的服务,这些服务可以是 http 接口,也可以是 spirng cloud 服务,甚至是其他诸如 dubbo 的接口等。
启动方式
在我们之前的文章里,所有的服务一旦启动就会向 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 服务的配置。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
server:
port: 8761
spring:
application:
name: eureka-server
eureka:
client:
register-with-eureka: false
fetch-registry: false
serviceUrl:
defaultZone: http://localhost:${server.port}/eureka/
最后在项目的启动类上添加启动 eureka 服务的注解就行了。
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
到此为止,一个单机的 eureka 注册中心服务就已经完成了。
剩下的就是 soul 网关开启对 spring cloud 的支持,以及设置 eureka 注册中心的地址。
测试和总结
服务启动好了之后,我们开始测试 soul 网关代理的结果。
如果测试到上面的结果,那就代表 soul 网关代理 spring cloud 服务已经成功生效了。
可以看到最终的结果跟我们之前运行 soul 代理 http 服务十分相似,使用 soul 网关之后就无需关心真实的服务到底是什么。
最后简单总结一下,我们今天测试了 soul-examples-springcloud 模块,实现了通过 soul 网关代理前者提供的接口而访问到服务,跟 http 服务不一样的是这次多了一个服务注册中心。
那么你是否好奇这个注册中心干了些什么?
以及,在 soul 网关里面是否有其他地方用到了这个注册中心呢?
我们下篇文章继续分析。