Skip to content

序言

873字约3分钟

2024-09-09

背景简介

工作近十年,也做过许许多多各种形态的业务系统,主要如下:

  • 经验

    • 某出行平台订单系统
    • 某出行平台账单系统
    • 某出行平台只付系统
    • 某房产平台的基础数据系统
    • 某房产平台的VR三维系统
  • 服务的客户包括 :

    • toG : 政府客户
    • toB : 企业客户
    • toC : C端个人用户
  • 服务形态包括:

    • 云端分布式服务
    • Saas服务
    • 私有化部署服务
    • 单兵便携服务

为什么选择应用网关

在上述工作经验中, 具体的业务形态下,对于具体业务的考量,可以说区别相当之大,对于具体业务的思考,再换了一个行业之后,并不具有太多的可参考价值.而对于具体业务思考,锻炼的是思考方式与思考模型, 难以量化以及具象化, 是一种向虚但是很实用的锻炼, 此处不做过多赘述。

但是, 虽然业务形态服务的客户迥异, 在剥离业务形态, 想更深一层看去, 依旧存在大量共通之处, 且这些共同之处与业务形态、服务的客户等无关, 可以视为各种业务系统之上的一种通用能力. 而种种能力的汇总与应用, 便是聚合成 应用网关服务 , 从纯粹的技术视角来看, 应用网关是很典型且有代表性的一种服务系统。

通用能力分析

一般而言, 开发一个业务系统我们通常会考虑以下问题:

  • 身份认证 : 包括但不限于 登录Token接口签名等
  • 访问权限 : 包括但不限于 对API的访问权限对API接口输出字段的访问权限
  • 流量控制 : 用于保护服务不会因为流量过载导致的服务不可用, 常用流控算法 : 计数器漏桶令牌桶等
  • 服务性能 : 为提高接口响应时效性, 往往会为接口数据做缓存处理, 用于提高响应效率
  • 系统安全 : 一个业务系统, 往往会被外部 黑帽子、白帽子 各种尝试攻击破解, 如果所在团队基础建设比较完善, 往往可以从接入层进行统一拦截, 而在公共接入层相对没有这么晚上的情况下, 应用网关将是业务无系统最后一道安全屏障。
  • ...... 等等其他考量

基于上述考量, 我们在设计开发一个业务系统时, 往往会出现以下逻辑:

  if 没有剩余流量可用 {
    return 命中流控限制, 稍后重试
  }
  if token 非法 {
    return 非法身份
  }
  if 无接口访问权限 {
    return 无权限访问
  }
  if 命中缓存 {
    return 缓存数据
  }
  执行业务逻辑
  if 有a字段权限 {
    a字段放入输出数据
  }
  if 有b字段权限 {
    b字段放入输出数据
  }
  ....字段权限判断
  设置结果缓存
  return 输出数据

而业务网关的意义便在于此: 将业务开发人员从繁琐复杂的基础逻辑中抽离出来, 无需关注基础验证, 专注于实现自身的业务逻辑即可

后续将逐一介绍如何从零搭建一个业务应用网关

贡献者: 白茶清欢