为什么要使用微服务网关?
不同的微服务可能会采用不同的网络地址对外发布. 而访问客户端的某个完整业务流程, 有的时候需要调用多个微服务接口才能完成. 如某个购票系统调用微服务结构如下:
微服务
如果让客户端直接调用每一个微服务接口, 会存在如下问题:
复杂性高. 客户端会多次请求不同的微服务, 而且存在跨域请求, 每个微服务都需要独立认证.
可扩展性差. 不利于代码重构和微服务重新划分, 在业务流程调整的情况下, 微服务适当地进行拆分或者合并, 在直接通讯的情况下, 重构工作难度大.
微服务网关可以解决以上问题, 什么是微服务网关呢?
微服务网关在客户端与服务器端之间架起了一座桥梁, 所有的外部请求都会先经过微服务网关过滤, 客户端只用同微服务网关交互, 而无须直接调用特定微服务的接口. 基于微服务网关的结构图如下:
微服务
微服务网关提供身份认证与安全, 审查与监控, 动态路由, 压力测试, 负载分配等功能. 具备以下优势:
集中监控. 在微服务网关收集监控数据并将其推送到外部系统进行分析.
统一认证. 在微服务网关上进行统一认证, 然后再将请求转发到后端的微服务, 而无须在每个微服务中进行认证.
负载均衡. 当请求到达微服务网关时, 对于负载高的微服务, 通过相应的负载均衡算法和法则, 选择合适的服务器进行访问.
Zuul 是 Netflix 开源的微服务网关, Spring Cloud 对 Zuul 进行了整合与增强, 目前, Zuul 是构建微服务网关不错的选择.
来源: http://www.jianshu.com/p/171a4d17935c