SpringCloud---网关概念、Zuul项目搭建(六)

一、网关概念

1、什么是路由网关

网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求、鉴权、监控、缓存、限流等功能。它将"1对N"问题转换成了"1对1”问题。

通过服务路由的功能,可以在对外提供服务时,只暴露 网关中配置的调用地址,而调用方就不需要了解后端具体的微服务主机。

2、为什么要使用微服务网关

不同的微服务一般会有不同的网络地址,而客户端可能需要调用多个服务接口才能完成一个业务需求,若让客户端直接与各个微服务通信,会有以下问题:

(1)客户端会多次请求不同微服务,增加了客户端复杂性

(2)存在跨域请求,处理相对复杂

(3)认证复杂,每个服务都需要独立认证

(4)难以重构,多个服务可能将会合并成一个或拆分成多个

3、网关的优点

微服务网关介于服务端与客户端的中间层,所有外部服务请求都会先经过微服务网关客户只能跟微服务网关进行交互,无需调用特定微服务接口,使得开发得到简化

总的理解网关优点

服务网关 = 路由转发 + 过滤器

(1)路由转发:接收一切外界请求,转发到后端的微服务上去。

(2)过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。

4、服务网关技术选型

引入服务网关后的微服务架构如上,总体包含三部分:服务网关、open-service和service。

(1)总体流程

服务网关、open-service和service启动时注册到注册中心上去;

用户请求时直接请求网关,网关做智能路由转发(包括服务发现,负载均衡)到open-service,这其中包含权限校验、监控、限流等操作

open-service聚合内部service响应,返回给网关,网关再返回给用户

(2)引入网关的注意点

增加了网关,多了一层转发(原本用户请求直接访问open-service即可),性能会下降一些(但是下降不大,通常,网关机器性能会很好,而且网关与open-service的访问通常

是内网访问,速度很快);

(3)服务网关基本功能

智能路由:接收外部一切请求,并转发到后端的对外服务open-service上去;

注意:我们只转发外部请求,服务之间的请求不走网关,这就表示全链路追踪、内部服务API监控、内部服务之间调用的容错、智能路由不能在网关完成;

当然,也可以将所有的服务调用都走网关,那么几乎所有的功能都可以集成到网关中,但是这样的话,网关的压力会很大,不堪重负。

权限校验:可在微服务网关上进行认证,然后在将请求转发给微服务,无须每个微服务都进行认证,不校验服务内部的请求。服务内部的请求有必要校验吗?

API监控:只监控经过网关的请求,以及网关本身的一些性能指标(例如,gc等);

限流:与监控配合,进行限流操作;

API日志统一收集:类似于一个aspect切面,记录接口的进入和出去时的相关日志。

二、Zuul项目搭建

使用到的组件包括:Eureka、Feign、Zuul,包括以下四个项目:

(1)Eureka-server:   7001    注册中心

(2)product-server :8001   商品微服务

(3)order-server :   9001   订单微服务

(4)zuul-gateway :   6001   Zuul网关

注册中心、商品微服务、order在之前博客都已搭建,这里就不重复写。这里只写zuul-gateway微服务。

只有zuul才会暴露出去供访问,其它服务都只有内网,外面访问不到的。

创建Zuul服务:

https://github.com/cwn132/service-zuul

https://blog.csdn.net/yp090416/article/details/78017552

Zuul认证:

https://github.com/cdy1996/sample-springcloud/tree/zuul-dymamic

https://blog.csdn.net/cdy1996/article/details/80960215

zuul权限校验、接口限流:

https://www.cnblogs.com/qdhxhz/p/9601170.html

SpringCloud---网关概念、Zuul项目搭建(六)的更多相关文章

  1. SpringCloud(六)之 网关概念、Zuul项目搭建-(利用Zuul 实现鉴权和限流实战)

    一.网关概念 1.什么是路由网关 网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求.鉴权.监控.缓存.限流等功能.它将"1对N"问题转换成 ...

  2. SpringCloud(7)---网关概念、Zuul项目搭建

    SpringCloud(7)---网关概念.Zuul项目搭建 一.网关概念 1.什么是路由网关 网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求.鉴权.监控. ...

  3. 小D课堂 - 新版本微服务springcloud+Docker教程_6-02 springcloud网关组件zuul

    笔记 2.SpringCloud的网关组件zuul基本使用     简介:讲解zuul网关基本使用 1.加入依赖 2.启动类加入注解 @EnableZuulProxy         默认集成断路器 ...

  4. IDEA项目搭建六——使用Eureka和Ribbon进行项目服务化

    一.Eureka的作用 这里先简单说明使用eureka进行业务层隔离,实现项目服务化也可以理解为微服务,我一直崇尚先实现代码再学习理论,先简单上手进行操作,eureka使用分为三块,1是服务注册中心, ...

  5. Vuex的基本概念、项目搭建、入坑点

    前言:Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. Vuex的四大核心 1.state 驱 ...

  6. SpringBoot+SpringCloud+vue+Element开发项目——搭建开发环境

    1.新建一个项目

  7. Day04_乐优商城项目搭建

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...

  8. 搭建springCloud网关zuul

    一.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

  9. soul开源网关项目搭建学习

    1. soul开源网关项目搭建学习 1.1. 地址 https://gitee.com/shuaiqiyu/soul 1.2. 介绍 官方介绍:这是一个异步的,高性能的,跨语言的,响应式的API网关. ...

随机推荐

  1. 【我们一起写框架】MVVM的WPF框架(三)—数据控件

    这世上,没人能一次性写出完美无缺的框架:因为,任何一个框架都需要项目的淬炼,然后才能升华,趋近完美. 所以,框架是个反复修改的东西,最终形成的东西. 如果你学了一点技术,觉得自己可以写出框架了,觉得自 ...

  2. 简单介绍shell编程四剑客之awk

    概要:分别的作用 grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤. sed:stream editor 文本编辑工具:(流编辑器),擅长取行.替换. awk ...

  3. sql学习笔记(三)—— 联表查询

    上篇写了一些sql查询的知识,这篇接着写一下有关联表查询的知识. 既然是联表查询,那肯定得多个表啊,所以,我们先创建一个教师表,表名为 teacher,并且向表中插入数据. 准备工作: 创建表语句: ...

  4. 引用KBC.PetroSIM.Interop的dll,在代码中调用时出现 80040154 没有注册类 的错误

    失败的尝试: regsvr32注册:模块已加载,但找不到入口点DllRegisterServer regasm注册:需写上regasm的完整路径,注册成功,但问题依旧 将项目的平台改为x86:问题依旧 ...

  5. Django学习之九: auth 认证组件

    目录 Django auth 认证组件 配置使用auth组件及其中间件 request.user 可以直接在template模版中使用 auth组件常用api 获取认证model类 认证检测装饰器@l ...

  6. vue -webkit-box-orient: vertical webpack打包后被过滤掉了 线上没有这行代码

    (1)方法一:加上绿色注释,跳过webpack的css打包 .word-overflow-{ overflow:hidden; text-overflow:ellipsis; display:-web ...

  7. typescript的函数

    1:默认参数(传入值会覆盖默认参数,不传值也行) function getinfo(name:string,age:number=20):string{ return `${name}---${age ...

  8. WPF:Webbrowser 捕获关闭事件

    有点难描述说的是什么.大概就是下面这个图:窗体中嵌套一个Webbrowser,现在网页请求关闭 响应MessageHook事件: this.webBrowser.MessageHook += webB ...

  9. Git 安装 on centos7

    本文演示如何在CentOS7上安装和使用git. 1 准备工作 1.1 浏览器访问安装包下载地址: https://www.kernel.org/pub/software/scm/git/ 找到下载列 ...

  10. 关于 python中的 TKinterlistbox 控件加横竖滚动条

    上代码 win=tkinter.Tk() scorllbar=tkinter.Scrollbar(win) scorllbar.pack(side=tkinter.RIGHT,fill=tkinter ...