企业开放平台进阶之路
"虫洞"--在物理学中是指宇宙中可能存在的连接两个不同时空的隧道,与当前建设连接大客户开放平台的通道,有着异曲同工之处。
为什么需要开放平台
图1
什么是开放平台
是一个公司对外的窗口,公司通过开放平台将内部的标准、数据和服务等以API的形式开放出来,供第三方开发者使用。 简单概括就是:“聚集于核心竞争力的业务平台,采用面向大众开放的方式进行业务的整合,形成一种业务共建的模式”。
图2
企业的开放平台是基于货运业务能力支撑的开放平台,提供外部合作伙伴参与服务企业用户的各类原材料,如核心业务API、账号管理、数据订阅推送等。开放平台的使命是把企业货运行业的定价、交易、物流等一系列基础服务,输送给有需要的商家、三方开发者和服务商平台。开放平台的价值
开放平台的核心价值在于通过自身服务和第三方应用的互利互惠,提高用户对应用和平台的整体体验和粘度。
图3
- 将企业的核心产品服务能力暴露出来,供第三方开发者使用,通过与其他行业能力互通,打造完整的产品生态。
- 为三方平台、独立开发者、合作客户等带来收益,达到数据交互,合作共赢的目的。
需要怎样的开放平台
货拉拉现状
经过业务的千锤百炼与技术的升级沉淀,持续建设了对标业界先进的标准流程开放平台,全面覆盖了直客场景的货运需求对接。
平台架构
图4
接入流程
图5
客户特征
标准流程满足80%标准客户,基于标准+定制满足15%的定制客户,平台对接满足5%的平台大客户。
图6
- 标准客户
- 特点:标准流程对接,几乎无定制需求,满足全部需求
- 优点:维护成本低,GTV收益相对稳定
- 不足:整体收益不高,一个客户只对应一个企业
- 定制客户
- 特点:基本按标准流程对接,满足大部分需求,但有定制需求
- 优点:GTV收益都比较高
- 不足:维护成本较高,不断提出新的定制需求
- 平台客户
- 特点:避开对接标准流程,且提供自有平台,不做改动或极少的配合改动
- 优点:GTV收益潜力大、流量大,企业客户增长多
- 不足:接入、联调、测试、验收,维护成本都比较高
面临的挑战
遇到平台客户怎么办?
- 分析问题
- 支持乏力: 标准流程在这种场景下就显得有些无力
- 角色反转: 对接方成为平台方,平台方转为对接方
- 反向对接: 我们对接外部平台,而非对接我们平台
- 面对冲突
- 撤退/回避: 把眼前的或潜在的冲突搁置起来,从实际或潜在冲突中退出
- 强迫: 以牺牲其他方为代价,强制推行某一方案,一般只适用于"赢-输"零和游戏中
- 面对/解决: 积极定义问题、收集问题、制定解决方案,选择最合适的方案解决问题,实现双赢,甚至多赢



图7
方向的探索
平台调研
- 从下面几个平台对比结果可以看出,大部分平台的接入流程与技术能力都大体相似,在入参、返参、协议、鉴权,流程上略有差异。
平台 | 特点 | 差异点 | 共同点 |
---|---|---|---|
聚合平台 | 1、车型配置,运营配置 2、API地址,运营配置 3、流程差异,关注核心流程物流平台 | 1、公共&业务参数 2、请求协议 3、签名鉴权 4、业务诉求 | 1、签约入驻 2、创建应用 3、密钥分配 4、文档对接 5、系统调试 6、集成上线 |
物流平台 | 1、公共&业务参数 2、请求协议 3、签名鉴权 4、业务诉求 | ||
电商平台 | 1、城市映射,建立关系 2、API权限包,运营平台分配 |
系统规划
图8
背景
- 复用能力不够,当前系统可复用能力欠缺,每次接入都要经历从0到1的过程
- 无法灵活适配,平台增多,参数差异大,相同能力不同的流程诉求难以快速满足
- 管控能力不足,管理平台客户措施欠缺,接口权限,流量控制,监控告警等不完善
- 联调环境较差,双边联调环境难对齐、进度慢,订阅消息推送完整性能力不足
目标
- 轻量对接,业务识别、策略鉴权、参数适配、能力编排,沉淀可复用能力,持续降低对接成本
- 能力编排,计价、营销、订单、支付等能力的组合编排,支持流程差异化,满足大客户不同诉求
- 管控建设,户权限、API权限、监控告警、数据统计,建设管控能力,降低系统风险
- 自助排障,建设API调试、签名生成、SDK自动生成工具,降低沟通成本、资源排查成本
核心建设
客户管理
- 平台管理
- 审核机制,通过审核的外部平台,有权限调用我们平台提供的核心服务能力,对平台整体安全管控
- 通用配置,可视化管理平台可配置接入密钥、支付方式、授权回调、引导信息、状态映射等信息
图9
- 平台授权
- 客户授权
- 统一授权H5页面,模型适配,便于嵌入外部平台App端、飞书、钉钉等软件端
- 通过授权获得与系统交互的身份��识,将贯穿企业的核心服务能力的整个过程
- 授权回调
- 回调通知,将授权绑定关系结果推送给合作平台,这是约定双边交互流程中的唯一标识
- 主动查询,提供平台主动查询授权结果信息能力,便于合作平台对授权信息的确认与补偿
- 客户授权
图10
业务适配
- 模型适配
- 下单链路较长,涉及地址解析、车型转换、支付方式、播单时长、司机引导、订单备注、报价搬运等等
- 服务商平台参数差异大,经过转换、定制、配置,统一适配成标准模型的参数,复用于通用的业务能力
图11
- 能力编排
- 原子能力:地址能力、定价能力、核价能力、用券能力、下单能力、支付能力
- 平台能力:由多个原子能力的组合而成,实现具备不同组合能力的通用平台能力
- 能力扩展:对平台能力进行扩展,让平台能力具备满足更多差异化诉求的能力
图12
提效工具
- 参考业界先进技术方案,持续建设针对此类平台大客户的接入辅助工具,提高接入效率,降低接入成本
网关配置
- 统一接口、统一维护
- 由M(平台)*N(接口量)收拢为一套接口。
- 识别身份,统一监控,降低维护成本。
图13
Sentinel集成
- 流量控制
- 客户限流,对平台应用的整体流量控制-总体控制
- 接口限流,对平台调用接口的流量控制-接口控制
- 资源配额,对平台调用接口的资源限制-配额控制
图14
API调试台
- 一键调试
- 一键生成上下文关联参数,发送请求,响应平台结果。
- 一键生成平台参数签名,响应待加密字符串&加密后的签名字符串,方便调试&测试对比,提升联调效率,降低测试成本
- 调用链路
图15
- 调用示例
- 调用链路
图16
自助排障
- 日益增长的需求变更,人工对API异常码的更新并不是实时的,总是滞后的、容易缺漏,间接的提高了接入的成本
- 通过自助排障,实时查询异常信息的详细原因,更准确的定位问题,减少双边资源的协调成本
- 排查示例
- 排查示例
图17
SDK生成
- 具备SDK架构的基础功能模块
- 通信协议封装:让开发者无需关注调用API的通信协议和通信逻辑
- 接口基础契约封装:让开发者无需关注调用API的参数格式、时间戳、签名、Code码等细节
- 请求参数模型封装:让开发者便捷地设置API请求参数
- 返回参数模型封装:让开发者便捷地使用API返回的数据
图18
- 开放平台 SDK 中,参数模型代码和调用示例代码都具备较强的规则性和模式性,我们选择基于“代码语料”自动生成代码更符合当前的技术路线。
-
基于代码语料自动生成代码需要“语料”+“规则”两个核心元素
-
通过解析API元数据,并结合领域专用语言(DSL)作为语料模板,生成代码语料
-
基于语料特性为不同的编程语言定制代码的生成规则
-
将“语料”+“规则”输入代码生成器以完成目标代码的生成
- 业界主流代码自动生成技术
图19
- 基于代码语料的自动生成
- 业界主流代码自动生成技术
-
图20
- SDK 生成、测试和发布自动化
-
监听SDK可能需要发布的变更,包括通过Binlog机制监听API元数据的变更、通过Git Hook机制监听SDK基础逻辑代码仓库Master分支的变更
-
一旦监听到有变更产生,通过触发器去触发SDK持续集成和发布流水线的运作
-
流水线开始运作后,首先执行SDK构建组件,SDK构建组件会并发执行两个操作:
- 获取SDK基础逻辑代码(人工编写)并完成静态代码检查
- 拉取API元数据并自动生成参数模型代码
-
以上操作完成后,执行代码合并和代码编译,将结果提交到流水线
-
然后由自动化测试组件完成对SDK的单元测试和自动化测试,通过后提交到流水线
-
最后由自动发布组件完成SDK的打包、上传、下载链接生成和版本信息生成等一系列操作,并最终将最新版本SDK发布到官网供开发者下载
- 持续集成(CI)和持续发布(CD)
图21
- 开发者接入SDK前后问题预估统计
- 持续集成(CI)和持续发布(CD)
-
图22
消息推���
- 广播推送
- 提供基础订阅能力,平台服务商按需订阅,推送订阅消息至配置推送地址
- 定向推送
- 通过保留原始消息、推送消息,保证推送链路的完整记录
- 多种推送策略,让开发者在开发中、问题发现、和事后补偿中都可以根据不同策略来实现
图23
总结&展望
- 抽象平台对接的复用能力,低成本对接更多平台服务商
- 灵活模型适配与能力编排,高效适配差异化的需求流程
- 建设对接平台的基本管控,降低平台服务商越权等风险
- 支持可视化自助排障平台,降低开发/联调/测试/验收成本
- 提升接口安全可靠的能力,平台接口权限、重复请求幂等
- 搭建场景丰富的监控体系,高效协助排查、掌握实时情况
犹如"虫洞"一般,随着上述能力的建设进阶,我们就慢慢打通了与大客户平台的通道,构建企业大客户开放平台,实现平台之间的高效连通。
转载自:https://juejin.cn/post/7392606582486843446