纵有疾风起
人生不言弃

.NET Core微服务之基于Steeltoe集成Zuul实现统一API网关

Tip: 此篇已加入.NET Core微服务基础系列文章索引,本篇接上一篇《基于Steeltoe使用Eureka实现服务注册与发现》,所演示的示例也是基于上一篇的基础上而扩展的。

=>  Steeltoe目录快速导航

1. 基于Steeltoe使用Spring Cloud Eureka

2. 基于Steeltoe使用Spring Cloud Zuul

3. 基于Steeltoe使用Spring Cloud Hystrix

4. 基于Steeltoe使用Spring Cloud Config

5. 基于Steeltoe使用Zipkin

一、关于Spring Cloud Zuul

  API Gateway(API GW / API 网关),顾名思义,是出现在系统边界上的一个面向API的、串行集中式的强管控服务,这里的边界是企业IT系统的边界。

  Zuul 是Netflix 提供的一个开源组件,致力于在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架,也有很多公司使用它来作为网关的重要组成部分。Spring Cloud 体系收录的该模块,主要用于提供动态路由、监控、安全控制、限流配额等,可以将内部微服务API同意暴露。

  .NET Core微服务之基于Steeltoe集成Zuul实现统一API网关插图

  有关Zuul的更多内容,请参考我的这一篇:《Spring Cloud微服务架构学习笔记与示例》,这里不是本文重点,不再赘述。

二、快速构建Zuul Server

  (1)pom.xml添加相关依赖包:本示例的版本 => Spring Boot 1.5.15.RELEASE,Spring Cloud Edgware.SR3

    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>        </dependency>        <!-- zuul -->        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-zuul</artifactId>        </dependency>        <!-- eureka -->        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-eureka</artifactId>        </dependency>        <!-- 热启动,热部署依赖包,为了调试方便,加入此包 -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-devtools</artifactId>            <optional>true</optional>        </dependency>    </dependencies>    <!-- spring cloud dependencies -->    <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.springframework.cloud</groupId>                <artifactId>spring-cloud-dependencies</artifactId>                <version>Edgware.SR3</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>

  (2)启动类添加@EnableZuulProxy注解

@SpringBootApplication@EnableZuulProxypublic class ZuulServiceApplication {    public static void main(String[] args) {        SpringApplication.run(ZuulServiceApplication.class, args);    }}

  (3)添加必要配置(application.yml):主要是针对Eureka的配置,本示例将Zuul也作为一个Eureka Client注册到Eureka Server中。

server:  port: 5000spring:  application:    name: zuul-gateway-serviceeureka:  client:    serviceUrl:      defaultZone: http://localhost:8761/eureka/  instance:    prefer-ip-address: true # 优先注册IP地址而不是hostname    instance-id: zuul-gateway-container:${server.port}  healthcheck:    enabled: true # 启用健康检查,注意:需要引用spring boot actuatormanagement:  security:    enabled: false # 默认为true,改为false以便可以看到routes

  启动Eureka Server和Zuul Server之后:

  .NET Core微服务之基于Steeltoe集成Zuul实现统一API网关插图(1)

  示例代码:https://github.com/EdisonChou/Microservice.PoC.Steeltoe/tree/master/springcloud/zuul-service

三、快速验证测试

  基于第一篇的三个已注册到Eureka的ASP.NET Core WebAPI示例项目(示例代码:https://github.com/EdisonChou/Microservice.PoC.Steeltoe/tree/master/src/Chapter1-ServiceDiscovery),无须做任何修改,启动并注册到Eureka之后的服务列表:

  .NET Core微服务之基于Steeltoe集成Zuul实现统一API网关插图(2)

  (1)通过Zuul访问Agent-Service

  .NET Core微服务之基于Steeltoe集成Zuul实现统一API网关插图(3)

  (2)通过Zuul访问Premium-Service

  .NET Core微服务之基于Steeltoe集成Zuul实现统一API网关插图(4)

  (3)通过Zuul访问Client-Service (多Client-Service实例,验证负载均衡)

  .NET Core微服务之基于Steeltoe集成Zuul实现统一API网关插图(5)

四、小结

  本文极简地介绍了一下Spring Cloud Zuul,并使用Java快速地编写了一个API网关Zuul Server,然后基于上一篇的三个ASP.NET Core演示了一下API网关的效果。当然,对于Zuul还有很多内容,这里就不再一一演示,有兴趣的童鞋或者对这种混搭式的架构感兴趣的童鞋可以去了解一下。

 

文章转载于:https://www.cnblogs.com/edisonchou/p/dotnet_core_microservice_integrate_with_springcloud_zuul.html

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » .NET Core微服务之基于Steeltoe集成Zuul实现统一API网关

分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录   注册

切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活