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

2020/4/18 17:24:33

本文主要是介绍【一起学源码-微服务】Zuul源码一:Zuul核心概念及Demo演示,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

申明

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

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

22.jpg

前言

前情回顾

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

本讲目录

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

源码分析

API网关的作用

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

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

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

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

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

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

网关作用.png

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 一点点去探究源码。

总结

这一讲主要是对API网关一级Zuul有个基本的认识,还列了一个demo项目,大家可以下载自己本地运行试一试。

这里再先预告一下zuul的核心原理,用图概括如下:

01_Zuul核心原理图.jpg

具体的讲解会在下一讲源码剖析,敬请关注。



这篇关于【一起学源码-微服务】Zuul源码一:Zuul核心概念及Demo演示的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程