简介
为了更好地支撑日益增长的庞大业务量,我们常常需要把服务进行整合、拆分,使我们的服务不仅能通过集群部署抵挡流量的冲击,又能根据业务在其上进行灵活的扩展。随着分布式的普及、服务的快速增长与云计算技术的进步,微服务架构也因其特有的优势而备受关注。微服务架构的本质,是把整体的业务拆分成很多有特定明确功能的服务,通过很多分散的小服务之间的配合,去解决更大,更复杂的问题。对被拆分后的服务进行分类和管理,彼此之间使用统一的接口来进行交互。
本系列讲述了在阿里云Kubernetes容器服务基础之上,如何快速搭建基于Spring Cloud的微服务架构中的基础设施:
- 第一篇:分布式服务注册与发现系统
- 第二篇:分布式配置管理系统
- 第三篇:API网关服务Zuul 系统
- 第四篇:分布式追踪系统
- 第五篇:分布式弹性服务与容错处理框架Hystrix及其监控仪表板
- 第六篇:熔断器聚合监控Hystrix Turbine
本文是系列中的第三篇,着重介绍API网关服务Zuul 系统。
为了解决上面提到的问题,引入了API网关的概念。API网关是一个更为智能的应用服务器,它有点类似于我们微服务架构系统的门面,所有的外部访问都要先经过API网关,然后API网关来实现请求路由、负载均衡、权限验证等功能。Spring Cloud中提供的Spring Cloud Zuul实现了API网关的功能。
下面讲述一下在阿里云Kubernetes容器服务基础之上,如何快速搭建一套API网关服务Zuul 系统。
准备Kubernetes环境
阿里云容器服务Kubernetes 1.9.3目前已经上线,可以通过容器服务管理控制台非常方便地快速创建 Kubernetes 集群。
体验通过应用目录简便部署
点击左侧的应用目录
,在右侧选中ack-springcloud-zuul
,如下:
点击参数
, 可以通过修改参数配置进行定制化,主要的配置部分是路由规则,如下:
zuul:
routes:
SAMPLESERVICE: /myusers/**
test:
path: /external/**
url: https://www.aliyun.com/
默认情况下,Zuul会代理所有注册到Eureka Server的微服务,并且Zuul的路由规则如下:
http://ZUUL_HOST:ZUUL_PORT/微服务在Eureka上的serviceId/** 会被转发到serviceId对应的微服务。
此处配置了以下路由规则:
- 所有符合
/myusers/**
的请求都将被转发到SAMPLESERVICE
服务上,而SAMPLESERVICE
服务的地址到底是什么则由Eureka Server去分析,此处只需要写上服务名即可; - 所有符合
/external/**
的请求都将被转发到https://www.aliyun.com/
;
修改之后,在右侧选择对应的集群、命名空间,指定发布名称,然后点击部署。
几分钟之后,一个高可用的Zuul Server实例就可以创建出来。
体验Zuul Server
点击左侧的服务
,在右侧点击刚创建的Zuul Server服务提供的访问地址,如下所示:
默认情况下,Zuul会代理所有注册到Eureka Server的微服务,并且Zuul的路由规则如下:
http://ZUUL_HOST:ZUUL_PORT/微服务在Eureka上的serviceId/** 会被转发到serviceId对应的微服务。
请求访问 /myusers/
,首先会去Eureka Server中查询注册的SAMPLESERVICE服务,然后访问会指向其中的一个服务地址。
请求访问 /external/
,所有的访问都会指向 https://www.aliyun.com/
,如下:
总结
我们可以利用阿里云Kubernetes容器服务,快速搭建一套API网关服务Zuul 系统,为应用引
入和配置网关服务。欢迎大家使用阿里云上的容器服务,快速搭建一套API网关服务Zuul 系统,比较简单地集成到自己项目的微服务开发中。