在本系列的 上一篇文章 中,我们将一个普通的 Spring Boot 项目改造为 Spring Cloud 框架中的一个服务。在本文中,我们将实现一个 Gateway 服务,以便于调用改造好的 Todo 服务。
构建Gateway项目
在 IDEA 中构建一个简单的 Maven 项目,groupId 命名为: cn.com.hohistar.tutorial, artifactId 为: springcloud-gateway-srv, 然后将将以下的内容替换原 pom.xml 文件中的内容:
1 |
|
可以看到,我们将使用 Spring Cloud 的两个组件: netflix-zuul 和 netflix-eureka-client
新建启动类:
在 src/main/java 目录下新建一个包: cn.com.hohistgar.tutorial.springcloudgatewaysrv, 再在包中新建一个类, 名为: SpringcloudGatewaySrvApplication, 复制以下代码在内容:
1 |
|
其实 SpringcloudGatewaySrvApplication 就是一个 SpringBoot 的启动类,只是增加了两个注解: @EnableZuulProxy, @EnableEurekaClient 。
@EnableEurekaClient - 用来实现把自己(当前应用服务)注册到注册与发现服务中
@EnableZuulProxy - 开启 Gateway 的功能
定义配置参数
在 src/main/resources 目录中新建一个名为: application.yaml 的文件,将以下内容复制到文件中:
1 | server: |
可以看到,整个配置文件分为四段,第一,第二段是普通的 Spring Boot 项目设置,指明项目运行的端口和项目名称。第三段是注册服务的客户端配置,注意将 defaultZone 换为环境中实际运行的注册服务的地址和端口。最后一部分是 Gateway 的配置,在当前的例子中,我们只配置了路由,将对 todo 路径的访问转发到 cloud-todo-service 中。
运行并验证
注意:在运行 Gateway 之前,确保在手册一和二中将来的服务已经运行
在 IDEA 中启动应用,然后在浏览器中打开:
1 | http://localhost:8761 |
可以看到todo 服务和 gateway 服务已经注册到注册服务器中了。
接着在浏览其中打开:
1 | http://localhost:9098/api/todo/todo |
如果正常,应该得到 cloud-todo-service 的返回的待办事项,是一个 json 数组。
下一步
在下一步 中,我们将为 Gateway 增加限流功能。