上一讲我们学习了 Dubbo 是如何与 Nacos 协同作业。通过对比 RESTful 与 RPC,我们介绍了两种通信方式的区别,再通过实例讲解如何将 Dubbo 与 Nacos 进行整合。但你是否发现无论是基于 OpenFeign 的 RESTful 通信,还是基于 Dubbo 的 RPC 通信,它们都在强调的是微服务间的信息传递,属于微服务架构内部的事情。而对于用户端从外侧访问微服务如何有效管理,微服务又是如何将接口暴露给用户呢?这就需要通过 API 网关实现需求了,本讲咱们就针对 API 网关学习三方面知识:

  1. 介绍 API 网关的用途与产品;

  2. 讲解 Spring Cloud Gateway 的配置技巧;

  3. 讲解 Gateway执行原理与自定义过滤器(Filter)。

API 网关的作用

如下图所示,对于整个微服务来说如果将每一个微服务的接口直接暴露给用户是错误的做法,这里主要体现出三个问题:

服务将所有 API 接口对外直接暴露给用户端,这本身就是不安全和不可控的,用户可能越权访问不属于它的功能,例如普通的用户去访问管理员的高级功能。

后台服务可能采用不同的通信方式,如服务 A 采用 RESTful 通信,服务 B 采用 RPC 通信,不同的接入方式让用户端接入困难。尤其是 App 端接入 RPC 过程更为复杂。

在服务访问前很难做到统一的前置处理,如服务访问前需要对用户进行鉴权,这就必须将鉴权代码分散到每个服务模块中,随着服务数量增加代码将难以维护。

Spring Cloud Alibaba 服务门户:Spring Cloud Gateway 如何把好微服务的大门相关推荐

  1. Spring Cloud Alibaba - 19 Nacos Config配置中心加载不同微服务的通用配置的两种方式

    文章目录 Pre 实现 方式一 通过 shared-dataids 方式 方式二 通过 ext-config方式 配置文件优先级 源码 Pre Spring Cloud Alibaba - 18 Na ...

  2. Spring Cloud Alibaba - 18 Nacos Config配置中心加载相同微服务的不同环境下的通用配置

    文章目录 需求 实现 Step 1 Nacos Config 新增公共配置 Step 2 验证 配置文件优先级 源码 需求 举个例子,同一个微服务,通常我们的servlet-context 都是相同的 ...

  3. Spring Cloud Alibaba | Dubbo 与 Spring Cloud 完美结合

    https://www.cnblogs.com/babycomeon/p/11546737.html Spring Cloud Alibaba | Dubbo 与 Spring Cloud 完美结合 ...

  4. JAVA Cloud微服务项目实战课程 SpringBoot 2.x +SpringCloud 微服务课程

    课程目录 第1章 课程介绍 课程导学和学习建议 1-1 SpringCloud导学 1-2 获取源码说明 1-3 提问建议 1-4 点餐项目演示说明 第2章 微服务介绍 什么是微服务, 单体架构优缺点 ...

  5. gateway动态路由_微服务中的网关技术:Gateway

    技术/杨33 一.Gateway是什么 为微服务提供一种简单有效的统一的API路由管理方式. Gateway是基于WebFlux框架实现的,而WebFlux框架底层使用了高性能的Reactor模式通讯 ...

  6. 基于 GateWay 和 Nacos 实现微服务架构灰度发布方案

    一.灰度发布 灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式.在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有 ...

  7. gateway动态路由_微服务与网关技术(SIA-GateWay)

    一.背景 软件架构,总是在不断的演进中... 把时间退回到二十年之前,当时企业级领域研发主要推崇的还是C/S模式,PB.Delphi这样的开发软件是企业应用开发的主流.随着时间的推移,基于浏览器的B/ ...

  8. 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式

    文章目录 1-什么是Iaas,Paas和Saas 一 IaaS基础设施服务 二 paas平台即服务 三saas软件即服务 四 总结 2-单体应用和缺点 一 单体应用 二 单体应用的缺陷 3-微服务概念 ...

  9. 初学者学习微服务 需要了解哪些知识?该如何入门微服务?有哪些优质的教程可以学习?

    前面一章节,我们学习了常用的网络通信协议,以及各自的优缺点,并做了一个较为全面的总结.这一章节,我们就来对微服务入门基础做一个准备,学习微服务,我们应该从哪些方面去学习.终于有人把tcp.http.r ...

  10. 微服务架构下的核心话题 (三):微服务架构的技术选型

    前期回顾: 微服务架构下的核心话题 (一):微服务架构下各类项目的顺势崛起 微服务架构下的核心话题 (二):微服务架构的设计原则和核心话题 一.前言 为了实现基于微服务开发的产品,或者说为了将单体应用 ...

最新文章

  1. case when里的like功能 ////// 截取(substr)
  2. linux配置nginx虚拟目录
  3. linux 鬼精灵漏洞,鬼精灵Grinch:比Bash破壳(shellshock)更严重的Linux漏洞
  4. 用开源项目cropper实现对图片中任意部分进行裁剪
  5. GitHub轻松阅读微服务实战项目流程详解【第二天:API网关的设计与实现】
  6. STM32F1笔记(十三)SPI
  7. 【大数据】分布式集群部署
  8. 紫为云 2020春招开启!算法职位20K-50K!
  9. shell中的变量与eval(转)
  10. 在思科路由器上做 _限速
  11. Hibernate学习笔记--映射配置文件详解
  12. 国内各地图API坐标系统比较与转换
  13. matlab 仿真wsn,wsn仿真matlab
  14. u盘pe启动盘怎么制作?
  15. eclipse简单的中英文切换,觉大多数的版本都可以
  16. 葫芦兄弟java7723_颠峰对决之喜羊羊大战葫芦娃
  17. 腾讯词向量下载链接(Tencent_AILab_ChineseEmbedding.txt)
  18. 【跟我做】简单两部使用laravel-easy-WeChat包快速实现微信企业付款到用户零钱包功能...
  19. 2020最新版前端学习路线图--手机网页还可以这么玩?
  20. kdj指标主要看哪个值_KDJ指标怎么看?KDJ指标详解

热门文章

  1. Cell重磅发布15万人体微生物基因组!超大规模宏基因组研究揭示数千计人体微生物新物种...
  2. Python使用matplotlib可视化条形图(bar plot)、自定义在条形图的顶部添加数值标签(Bar Chart)
  3. R语言机器学习Caret包(Caret包是分类和回归训练的简称)、数据划分、数据预处理、模型构建、模型调优、模型评估、多模型对比、模型预测推理
  4. python使用matplotlib可视化、自定义移除Y轴指定轴刻度标签(removing specific axis ticks in matplotlib y axis)
  5. pandas使用drop函数删除dataframe中指定索引列表对应位置的数据行(drop multiple rows in dataframe with integer index)
  6. R语言ggplot2可视化分组变量下的数据分布(线条、色彩配置)、WVPlots包的ShadowHist函数比较分组下的数据直方图、ggplot2分面图facet_wrap可视化分组变量下的数据分布
  7. R语言临床预测模型的评价指标与验证指标实战:综合判别改善指数IDI(Integrated Discrimination Improvement, IDI)
  8. pandas read_csv ‘utf-8‘ codec can‘t decode bytes in position 1198-1199: invalid continuation byte解决
  9. 高斯混合模型聚类实战(Gaussian Mixtures)
  10. 主题模型(topic models)总结