POP产品白皮书

1 前言

=======     2014年专有云项目涌现,网关TOP由于依赖过重,无法满足专有云部署要求。10月底开始研发自己的轻量级网关。
    经过两个月的开发、测试,2015年1月部署在专有云环境,开始为1号项目提供服务,同年2月9日,发布到公有云提供服务。 本文包括:POP的功能及工作流程简述,含POP的接入流程、规范,也包含POP的测试方法,不同人群可选择性查看。


1.1 POP是什么

POP(Portable OpenAPI Proxy) 阿里云网关,基于B2B的ocean网关开发,结合阿里云的业务特点进行定向开发,符合公有云、专有云及国际化部署需求,实现HTTP流量路由、流量控制、用户验证、参数校验等核心功能。

1.2 POP能做什么

业务方只需完成接口需要的hsf、dubbo或者http服务部分的开发,通过内建API在POP中录入API相关的信息并提供接口自测试脚本,就可以轻松通过POP将内部服务对外开放,无需投入额外的开发成本,节省大量资源。同时POP可以同步生成开发者多语言开发SDK(目前只支持java,其他语言排期中),帮助业务方实现API低成本开放。

  1. POP有一套完整的签名认证体系,为后端拦劫无效请求,从而接入方只需要完成自己的接口开发即可接入;详细功能描述参照《签名验证》。
    将用户http或https的get或post请求转换为后端需要的协议,无论http、https、dubbo、hsf都可轻松接入,详细功能参照《协议转换》。
  2.  可以设置API开放给部分用户,可以满足API分权开放或者灰度发布的需求,参照《访问控制》。
  3.  POP可以根据接口的定义,将后端系统参数和参数值转换为给用户的展示字段或展示值。从而保护后端的字段不暴露给用户,又方便查询。详细可参照《参数处理》。

  4.  可以在每个API上都可以根据每个用户的重要程度,对其进行流量设置阀值,避免由于单个用户出现问题(比如:遭受攻击),影响大用户的使用,也可保护后端应用避免攻击。详细可参照《流量控制》。

  5.  可以在全局、版本、API三个层次设置错误码,POP会在返回时会逐层匹配,减少接入方错误码配置的工作量,详细可参照《错误处理》。

  6.  POP也提供了详细的日志供接入方,统计或排查问题使用。详细可参照《日志服务》。

  7.  可以将你在POP中的API生成不同语言的SDK,支持Java、PHP、python、C#(目前支持Java,其他语言在加班加点的开发中),详细参照《SDK自动生成》。

1.3 POP网关的构成

 网关应用 完整的网关功能,包括协议转换、流控、认证、验权、服务调用等。 网关调用处理框架,并且支持基于插件机制替换处理流程中的默认模块。例:阿云API协议转换,验签模块替换、日志记录等。  运维工具 API信息管理(APIFactory),网关运维(Registry)等等。  日志服务 调用日志采集和分析。

1.4 POP与TOP的不同

POP开发以兼容TOP为基本原则,以轻量化部署为指导,并结合阿里云的特点增加了多个功能点或改进;如:单元化部署、POP省去了TOP单独定义入参和结构体的过程。 对比项 TOP POP 单元化部署 X √ 透传Http请求给业务方 X √ 忽略业务方Https证书 X √ 三级错误码映射 X(两级错误码) √ 结构体定义重复 X √(API级不重复) ROA风格API X √ 入参数大小写敏感 X √ resourceOwnerAccount转换为resourceOwnerId √ X callerUidEmail、OwerIdloginEmail等参数透传到业务层 √ X

1.5 POP接入支持

任务 描述 POP负责人
POP接入咨询 包含如何接入,及对POP功能了解; 谢文龙
域名申请 查询域名是否被占用,域名解析,TOP 谢文龙、夸父
API接口风格审核 需在接入前提供API设计文档,包括API描述; 李祖合
接入问题处理 接入过程中的异常或疑问 谢文龙、淘飞
预发和正式发布 将API发布到预发/正式环境
域名解析切换 新增余名解析,或解析切换至POP 谢文龙、夸父

1.6 接入POP需要做什么

POP接口描述由XML文件组成,POP通过对XML文件的解析,实现对对用户请求的控制和分发。

  1.  定义API描述文件XML,产品(如何定义)、版本(如何定义)、API(如何定义)。  将定义的XML文件导入POP
  2. API分三级管理,所以接入POP,需要导入产品级XML、版本级XML、API级XML。

  3. 如果您对POP的功能已经留了解,请跳过第三章,从《接入快速指引》开始吧!