定义

API网关是一个服务器,它是系统中的单个入口点,用户对API网关进行单一呼叫,然后API网关调用每个相关的微服务器。它类似于面向对象设计的Facade模式。API网关封装内部系统架构,并提供针对每个客户端定制的API。它可能还有其他的责任,如身份验证,监控,负载平衡,缓存,请求整形和管理,以及静态响应处理。

优缺点

使用API​​网关的主要优点是它封装了应用程序的内部结构。客户只需与网关进行通话,而不必调用特定的服务。API网关为每种类型的客户端提供了特定的API。这减少了客户端和应用程序之间的往返次数。它还简化了客户端代码。

API网关也有一些缺点。它是另一个高度可用的组件,必须开发,部署和管理。还有一个风险是API网关成为开发瓶颈。开发人员必须更新API网关以暴露每个微服务端点。重要的是更新API网关的过程尽可能轻。否则,开发人员将被迫排队等待更新网关。尽管存在这些缺点,但是对于大多数现实世界的应用来说,使用API​​网关是合理的。

微服务架构特性

微服务,其实是一种架构风格…

  • 异构

服务不同最适合的技术方案不同,微服务可以帮助我们轻松采用不同的技术,并且理解这些新技术的好处,尝试新技术通常伴随这风险。但对于微服务系统而言,总会存在一些地方让你可以尝试新技术,可以选择一个风险最小的服务采用新技术,并降低风险。

  • 隔离

微服务架构将系统分解为独立运行单元给系统带来更好的隔离性,独立的微服务在发生异常时更容易定位和隔离问题,隔离性也是服务扩展性的基础。

  • 扩展

庞大的单体服务只能作为一个整体进行扩展,即使系统中只有一小部分模块存在性能问题,也需要对整个系统进行扩展。而微服务架构可以根据性能需要对不同的模块进行水平扩展,微服务的弹性也可以很好的处理服务不可用和功能降级问题。

  • 部署简单

在微服务架构中,各个服务的部署是独立的,这样就可以更快的对特定部分的代码进行部署。服务出现问题也更容易快速回滚,同时敏捷的交付和部署带来了更好的业务需求响应体验。

  • 灵活

在微服务架构中,系统会开放很多接口供外部使用。当情况发生改变时,可以使用不同的方式构建应用,而整体化的应用程序只能提供有一个非常粗粒度的接口供外部使用。把单体应用分解成多个微服务,可以达到可复用,可组合的目的。

三. 微服务与网关技术

下图是一个典型的微服务架构,仅供参考

什么是微服务网关

微服务网关是微服务架构中的一个关键的角色,用来保护、增强和控制对于微服务的访问,微服务网关是一个处于应用程序或服务之前的系统,用来管理授权、访问控制和流量限制等,这样微服务就会被微服务网关保护起来,对所有的调用者透明。因此,隐藏在微服务网关后面的业务系统就可以更加专注于业务本身。

微服务网关的分类

常见的微服务网关根据使用特性大致被分成流量网关和业务网关。两种网关分别有不同关注点,下面是总结的两种网关类型特性:

微服务网关的作用

微服务网关作为连接服务的消费方和服务提供方的中间件系统,将各自的业务系统的演进和发展做了天然的隔离,使业务系统更加专注于业务服务本身,同时微服务网关还可以为服务提供和沉淀更多附加功能,下面是总结的微服务网关主要作用:

SIA-GateWay

SIA-GATEWAY 是基于 SpringCloud 微服务生态体系下开发的一个分布式微服务网关系统。具备简单易用、可视化、高可扩展、高可用性等特征,提供云原生、完整及成熟的接入服务解决方案。

关键特性

简单易用, 支持基于 Docker 容器的快速部署及交付。

兼容性良好, 兼容 SpringBoot 微服务及传统 HTTP-URL 的负载均衡及路由服务。

  • 高可扩展性, 支持基于 Java 语言的第三方插件扩展特性及动态加载机制。
  • 支持多租户,多用户角色下的网关拆分管理。
  • 可视化管理,提供实时路由拓扑、网关集群拓扑展示功能。
  • 服务治理,支持网关集群 Dashboard、实时日志、历史日志查询、熔断管理、预警管理等功能。
  • 多注册中心支持,提供分布式网关集群下对多注册中心集群的切换管理功能。
  • 动态路由组件绑定机制,提供包括 URL 统计、日志、灰度发布、限流、安全等公共服务组件。

下图是 SIA-GATEWAY 的整体架构图,架构由 CORE 和 Admin Cluster 组成,其中:

  • CORE 承载网关 HTTP 请求的主要服务节点,CORE 节点可以根据所属的网关组信息自动注册到 Admin 管理端。
  • Admin 是网关集群的管理后台,由 Admin、Service、Stream、Monitor 等服务组成。

下图是网关的整体部署架构图:

面向业务系统的微服务网关

微服务网关系统是一个处于应用程序或服务(提供 REST API 接口服务)之前的中间件系统, 所以 SIA-GateWay 在建设初期做技术选型时就充分考虑到所使用的技术方案应该兼容后端代理业务系统所使用的技术栈和技术体系,所以我们使用了 Netflix 的 ZUUL 作为我们网关系统技术栈,单纯的脱离使用场景谈某一种网关功能如何强大的做法,后续都会给业务方的使用带来更多的麻烦。 更明确的说如果目前大部分业务系统采用的技术栈是 JAVA 系统, 那么不建议使用 Nginx, Kong 或者 OpenResty 等网关系统, 这里主要是处于软件工程性方面考虑。举个例子,业务方需要将一个公共组件以 Plugin 机制集成到微服务网关, 如果使用 Lua 脚本文件或者其他脚本语言,那么引入一种新的语言技术栈所带来的复杂度会给业务系统带来更多的不确定性,系统后期维护成本和运维的难度都会呈指数级的提升。

基于组件模块化的设计

微服务网关的一个很重要的作用就是可以将微服务的 API 聚合后提供一个统一的 EntryPoint 作为业务使用方的一个统一入口以及屏蔽和隐藏业务内部逻辑。下面是 SIA-GateWay 提供的公共组件类型及分类。目前 SIA-GateWay 通过组件管理的机制实现了 5 个大类 8 个子类的公共服务组件供业务方使用, 其中提供的路由组件绑定机制可以让业务方灵活的决定是否要在运行时执行相关组件逻辑。

去中心化的网关架构设计

微服务架构的一个重要的特性就是去中心化的架构设计思路,SIA-GateWay 在软件设计层面上增加了一个“网关组”的抽象概念,一个网关组对应就是一个独立的业务领域。网关组的概念也契合了微服务架构中的一些理念:业务系统依赖微服务网关提供明确清晰的服务边界;业务系统通过微服务网关对外暴露业务的标准服务接口。

从实现层面, SIA-GateWay 充分利用并结合了容器自动化的部署技术,在解决最后一公里的问题上,将网关以云端容器资源的方式交付给不同业务方,通过共享网关 SDK 部署包的方式将网关的服务下沉到容器中实现和执行,从而在时间和空间上做到了系统的弹性和灵活交付。同时中心化的管理能力又给使用网关的具有不同权限的用户可以同时维护各自所属网关组下的网关节点带来了便利。

微服务认证模式_微服务之“网关模式”相关推荐

  1. java 熔断器模式_微服务架构熔断器机制的概念以及常用组件类型

    熔断器机制是我们在学习微服务编程开发的时候需要重点掌握的一个编程技术知识点,而今天我们就通过案例分析来了解一下,熔断器机制的概念以及常用组件类型都有哪些. 所谓熔断器机制,即类似电流的保险器,当然电压 ...

  2. 微服务升级优点_微服务–——定义, 原则 和 优点

    微服务是业界最新的流行语,似乎每个人都在以这样或那样的方式谈论它.让我们理解一下什么是微服务?通过这篇教程我们将理解微服务的定义,概念以及微服务的原理. 微服务的定义 如今,微服务是SOA(面向服务的 ...

  3. python微服务架构设计模式_微服务架构设计模式 PDF 电子书 百度云 网盘下载

    你还没有注册,无法下载本站所有资源,请立即注册! 您需要 登录 才可以下载或查看,没有帐号?立即注册 x java自学网(http://www.137zw.com)-java论坛,java电子书推荐: ...

  4. java微服务是什么_微服务架构:什么是微服务

    博主 本文为微服务连载第一篇,如果有幸看到,还请找个时间仔细阅读,欢迎收藏或转载,如有不足之处烦请留言指正,共同进步,希望对你有帮助,谢谢 引言 和朋友聊天,招聘,看个行业要闻都是微服务... 最近几 ...

  5. 微服务可靠性测试_微服务可靠性设计

    1.背景 微服务化之后,系统分布式部署,传统单个流程的本地API调用被拆分成多个微服务之间的跨网络调用,由于引入了网络通信.序列化和反序列化等操作,系统发生故障的概率提高了很多.微服务故障,有些是由于 ...

  6. golang微服务框架对比_微服务里程碑,Golang与Spring Cloud Alibaba完美结合

    目前微服务架构仍是软件架构中最新的热门话题,虽然Golang是一门新的语言,但Golang的性能比python和java高出不少.既能承受程序使用运行的服务构建的繁重负载,又容易与GitHub集成,管 ...

  7. 微服务启动顺序_微服务框架Demo.MicroServer运行手册

    一.背景说明: 之前分享过一个微服务开发框架, "享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionle ...

  8. 合沟微服务怎么添加_微服务架构:动态配置中心搭建

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 在微服务架构中,服务之间有着错综复杂的依赖关系,每个服务都有自己的依赖配置,在运行期间很多配置会根据访问流量等因素进行调整,传统的配置信息 ...

  9. java微服务项目简历_微服务框架-SpringCloud简介

    前面一篇文章谈到微服务基础框架,而Netflix的多个开源组件一起正好可以提供完整的分布式微服务基础架构环境,而对于Spring Cloud正是对Netflix的多个开源组件进一步的封装而成,同时又实 ...

最新文章

  1. 从 CALayer 的 Position、AnchorPoint 说起
  2. CF401D Roman and Numbers
  3. tv英语域名注册_企业邮箱十万个为什么——域名篇
  4. Java xml 工具 JDOM 使用详解.
  5. FckEditor的安装与设置
  6. Android 访问本地 HTML
  7. 前端工程师面试题汇总
  8. 新网卡不能绑定“旧”IP故障的解决
  9. 基于php的成绩管理设计(含源文件)
  10. VALSE2019总结(4)-主题报告
  11. python期末考试及答案广东_PYTHON语言应用答案试题题目及答案,期末考试题库,章节测验答案...
  12. time 测试一条命令的执行时间
  13. python ocr文字识别竖排繁体_古籍族谱繁体竖排中文识别图文攻略-千百OCR
  14. java解惑--谜题11:最后的笑声
  15. 服务器共享文件设成禁止删除,服务器共享文件夹权限 禁止删除共享文件方法...
  16. 小程序二维码和小程序带参数二维码生成
  17. p站,一个神奇的网站
  18. 夜神模拟器的安装与使用
  19. 微信公众号渠道二维码怎么生成?可以进行用户分组吗?
  20. 中国保温杯市场销售渠道分析与营销模式报告(2021-2026年)

热门文章

  1. vba 窗体单选框怎么传回sub_VBA之EXCEL应用
  2. body添加代码 js_hexo 博客添加评论和阅读量
  3. 建模大师怎么安装到revit中_「Revit技巧」插件挤满了、冲突了,怎么办?
  4. Android Studio自定义视图无法预览
  5. Holt-Winters模型原理分析
  6. lucene索引文件格式
  7. lucene底层数据结构——底层filter bitset原理,时间序列数据压缩将同一时间数据压缩为一行...
  8. Shell : 基本语法
  9. ajax 和xmlHttpRequest区别
  10. Codeforces Round #316 (Div. 2) D. Tree Requests dfs序