转载

【一起学源码-微服务】Zuul源码一:Zuul核心概念及Demo演示

本文章首发自本人公众号: 壹枝花算不算浪漫 ,如若转载请标明来源!

感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫

【一起学源码-微服务】Zuul源码一:Zuul核心概念及Demo演示

前言

前情回顾

前面已经分析了Hystrix相关的源码,这一讲开始看下微服务网关的鼻祖:zuul组件。

本讲目录

  1. API网关的作用
  2. zuul demo

源码分析

API网关的作用

在大多数微服务实现中,内部微服务端点不会暴露在外部。

一组公共服务将使用API网关向客户端公开。 Spring Cloud Zuul 主要的功能是提供负载均衡、反向代理、权限认证、动态路由、监控、弹性、安全等的边缘服务。其主要作用是为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。

通常我们用api网关作用如下:

1、请求路由 屏蔽复杂的后台系统的大量的服务,然后让前端工程师调用的时候非常的简单

2、统一处理 把所有后台服务都需要做的一些通用的事情,挪到网关里面去处理 (1)统一安全认证 (2)统一限流 (3)统一降级 (4)统一异常处理 (5)统一请求统计 (6)统一超时处理

来张图可能会更直观一点:

【一起学源码-微服务】Zuul源码一:Zuul核心概念及Demo演示

zuul demo

还是基于之前的代码,代码git地址: github.com/barrywangme…

项目结构:

  1. eureka-server:注册中心
  2. serviceA:服务A,注册到eureka-server
  3. serviceB:服务B,注册到eureka-server
  4. zuul-gateway:api网关服务,注册到eureka-server

添加zuul-gateway配置如下:

server:
  port: 9000
spring:
  application:
    name: zuul-gateway
eureka:
  instance:
    hostname: localhost
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
zuul:
  prefix: /api
  routes:
    serviceB:
      serviceId: serviceB
复制代码

然后一次启动eureka-server、serviceA、serviceB、zuul-gateway

浏览器请求: http://localhost:9000/api/serviceB/user/feign/greeting/wangmeng

可看到浏览器返回对应结果。 这里9000是 zuul-gateway 的项目端口号,这里我们请求被转发到 serviceB 服务上,然后给出响应。

这一讲很简单,后面我们可以通过demo代码进行debug 一点点去探究源码。

原文  https://juejin.im/post/5e9a52ede51d45470d528c94
正文到此结束
Loading...