十一、TSF与API网关

十一、TSF与API网关

前面我们已经介绍了TSF的运维管理,服务治理,配置管理功能的使用;TSF 同时也和腾讯云API 网关打通了,您可使用 API Gateway 封装自身业务,将您的数据、业务逻辑或功能安全可靠的开放出来,用以实现自身系统集成、以及与合作伙伴的业务连接,接下来我们看一下TSF的API网关功能。

学习目标

通过本文的学习,你将可以:

  • 了解微服务网关基本概念
  • 掌握TSF 与 API网关的使用

第一章 微服务网关基本概念

1.1 微服务网关概述
  • 微服务网关:

    • 微服务网关是用于实现微服务对外出口的服务,用于协助开发者完成微服务对外提供调用及微服务互相之间调用。

      image-20211203155840131

  • 简单的说 :服务网关 = 路由转发 + 过滤器

    • 路由转发:接收一切外界请求,转发到后端的微服务上去;

    • 过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成

1.2 微服务网关优势
  • 减少客户端与微服务之间的调用次数,提高效率;

  • 便于监控,可在网关中监控数据,可以做统一切面任务处理;

  • 便于认证,只需要在网关进行认证即可,无需每个微服务都进行认证;

  • 降低客户端与服务端的耦合度。

  • 在客户端和服务端之间增加一个API网关,所有的外部请求先通过这个微服务网关,它只需跟网 关进行交互,而由网关进行各个微服务的调用;还有如下优势:

  • 微服务调用管理:微服务网关作为微服务的出⼝口,同时也作为一个微服务将自身注册在注册 中心中,用户通过微服务网关可直接调用后端的微服务业务,并且对后端的微服务做统⼀一的 管理、限流、鉴权等。微服务网关本身提供负载均衡、健康检查、监控等基本能力,方便用户对后端的微服务及调用者的调用情况管理

  • 使用灵活方便:以服务的形式提供微服务网关给用户,有控制台操作,又兼具开源产品所有的代码动态加载的灵活性。用户可以快起创建微服务网关开放业务。

  • 高可靠:每一个微服务网关均为HA高可用,每个用户的微服务网关使⽤用与其他用户资源隔离,保证服务的可用性。

1.3 微服务网关使用场景
  • 在用户系统为微服务架构开发的情况下,微服务架构带来如下状况:
    • 大量的微服务模块,微服务本身需要具有出口提供给客户端调用。
    • 使用腾讯云微服务框架TSF时,常遇到不同隔离命名空间下的直接调用。
    • 每个微服务都需要统一的调用规范、提供鉴权认证等。
    • 每个微服务用户期望从入口即可获取到后端微服务中的完整调用链。
  • 在这种情况下,对 API 的管理和使用,会随着微服务模块的增长而越来越麻烦。而利用微服务网关,能很好的解决这些问题。
1.3 微服务网关使用场景(续)
  • 后端不同命名空间中的微服务可通过微服务网关互相访问

  • 外部客户也可通过微服务网关的IP进行访问。(微服务网关对外提供IP)。

    image-20211203161450216

  • 如上是微服务网关的典型应用场景

第二章 TSF 与 API网关使用

2.1 腾讯云API网关
  • 腾讯云API网关:

    • 在腾讯云公网网站中可以直接使用腾讯云的API网关功能,TSF与API网关产品打通,用户可以在 腾讯云 API 网关上可以配置微服务 API 来将外部请求转发到 TSF 平台上部署的微服务。API 网关与 TSF 平台内的微服务之间的关系如下图:

    image-20211203161844876

  • 腾讯云 API 网关与腾讯云 TSF 是两个独立的产品,关于 API 网关可参考: https://cloud.tencent.com/document/product/628

  • 用户必须将给命名空间配置 code (Namespace Code)才能实现将 API 网关外部的请求转发 到命名空间内的微服务。对于不同命名空间内的名称都是 product 的微服务来说,只有通过命名 空间 ID 和微服务名称来唯一确定一个微服务。由于平台生成的命名空间 ID 较难辨识(通常是 namespaceid-xxxx) ,因此引入命名空间 Code 来作为唯一标示。命名空间 Code 具有如下特 性:

    • 跨集群唯一性
    • 用户自定义
    • 可读性强
    • 不可修改
  • 在TSF上配置命名空间Code可参考: https://cloud.tencent.com/document/product/649/17644

2.2 微服务网关鉴权
  • 支持使用密钥对、Oauth的形式进行访问控制

  • 密钥对鉴权原理:hmac算法加密

  • 为了保护您的 API,避免恶意访问、未授权访问、应用漏洞、黑客攻击等导致的数据损失、资产损失,我们提供了多种 API 认证方式和 API 防护策略。TSF网关支持支持使用密钥对、Oauth的 形式进行访问控制;其中Oauth鉴权:使用业界标准 Oauth 2.0 鉴权;

  • 您可以使用 secretId 和 secretKey 对您的 API 进行认证管理。secretId 和 secretKey 成对出现, 这里将它们将称为 secretId/secretKey 对。在使用 secretId/secretKey 对认证前,需要先创建 好一对 secretId 和 secretKey;

  • Hmac:HMAC是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一 个消息为输入,生成一个消息摘要作为输出。

  • OAuth(开放授权)是一个关于授权的开放标准,允许用户让第三方应用访问该用户在某一网站 上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用

  • OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。 OAuth 2.0关注客户端开发者的简易性

  • 在认证和授权的过程中涉及的三方包括:

    1. 服务提供方,用户使用服务提供方来存储受保护的资源,如照片,视频,联系人列表。

    2. 用户,存放在服务提供方的受保护的资源的拥有者

    3. 客户端,要访问服务提供方资源的第三方应用,通常是网站,如提供照片打印服务的网站。 在认证过程之前,客户端要向服务提供者申请客户端标识

2.3 微服务网关限流
  • 用户可以配置微服务网关每个api路径被请求的最大QPS
  • 超过该次数可以的请求会被拒绝
  • QPS:每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准;
  • 可以在微服务网关中设置每个api请求的最大QPS;如果请求超过最大次数,将会触发限流。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!