"虫洞"--在物理学中是指宇宙中可能存在的连接两个不同时空的隧道,与当前建设连接大客户开放平台的通道,有着异曲同工之处。
图1
是一个公司对外的窗口,公司通过开放平台将内部的标准、数据和服务等以API的形式开放出来,供第三方开发者使用。简单概括就是:“聚集于核心竞争力的业务平台,采用面向大众开放的方式进行业务的整合,形成一种业务共建的模式”。
图2
企业的开放平台是基于货运业务能力支撑的开放平台,提供外部合作伙伴参与服务企业用户的各类原材料,如核心业务API、账号管理、数据订阅推送等。
开放平台的使命是把企业货运行业的定价、交易、物流等一系列基础服务,输送给有需要的商家、三方开发者和服务商平台。
开放平台的核心价值在于通过自身服务和第三方应用的互利互惠,提高用户对应用和平台的整体体验和粘度。
图3
将企业的核心产品服务能力暴露出来,供第三方开发者使用,通过与其他行业能力互通,打造完整的产品生态。
为三方平台、独立开发者、合作客户等带来收益,达到数据交互,合作共赢的目的。
经过业务的千锤百炼与技术的升级沉淀,持续建设了对标业界先进的标准流程开放平台,全面覆盖了直客场景的货运需求对接。
图4
接入流程
图5
标准流程满足80%标准客户,基于标准+定制满足15%的定制客户,平台对接满足5%的平台大客户。
图6
标准客户
特点:标准流程对接,几乎无定制需求,满足全部需求
优点:维护成本低,GTV收益相对稳定
不足:整体收益不高,一个客户只对应一个企业
定制客户
特点:基本按标准流程对接,满足大部分需求,但有定制需求
优点:GTV收益都比较高
不足:维护成本较高,不断提出新的定制需求
平台客户
特点:避开对接标准流程,且提供自有平台,不做改动或极少的配合改动
优点:GTV收益潜力大、流量大,企业客户增长多
不足:接入、联调、测试、验收,维护成本都比较高
遇到平台客户怎么办?
分析问题
支持乏力: 标准流程在这种场景下就显得有些无力
角色反转: 对接方成为平台方,平台方转为对接方
反向对接: 我们对接外部平台,而非对接我们平台
面对冲突
撤退/回避: 把眼前的或潜在的冲突搁置起来,从实际或潜在冲突中退出
强迫: 以牺牲其他方为代价,强制推行某一方案,一般只适用于"赢-输"零和游戏中
面对/解决: 积极定义问题、收集问题、制定解决方案,选择最合适的方案解决问题,实现双赢,甚至多赢
从下面几个平台对比结果可以看出,大部分平台的接入流程与技术能力都大体相似,在入参、返参、协议、鉴权,流程上略有差异。
平台 | 特点 | 差异点 | 共同点 |
---|---|---|---|
聚合平台 | 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
流量控制
客户限流,对平台应用的整体流量控制-总体控制
接口限流,对平台调用接口的流量控制-接口控制
资源配额,对平台调用接口的资源限制-配额控制
图14
一键调试
调用链路
图15
调用示例
一键生成上下文关联参数,发送请求,响应平台结果。
一键生成平台参数签名,响应待加密字符串&加密后的签名字符串,方便调试&测试对比,提升联调效率,降低测试成本
图16
日益增长的需求变更,人工对API异常码的更新并不是实时的,总是滞后的、容易缺漏,间接的提高了接入的成本
通过自助排障,实时查询异常信息的详细原因,更准确的定位问题,减少双边资源的协调成本
排查示例
图17
具备SDK架构的基础功能模块
通信协议封装:让开发者无需关注调用API的通信协议和通信逻辑
接口基础契约封装:让开发者无需关注调用API的参数格式、时间戳、签名、Code码等细节
请求参数模型封装:让开发者便捷地设置API请求参数
返回参数模型封装:让开发者便捷地使用API返回的数据
图18
开放平台 SDK 中,参数模型代码和调用示例代码都具备较强的规则性和模式性,我们选择基于“代码语料”自动生成代码更符合当前的技术路线。
业界主流代码自动生成技术
图19
基于代码语料的自动生成
图20
基于代码语料自动生成代码需要“语料”+“规则”两个核心元素
通过解析API元数据,并结合领域专用语言(DSL)作为语料模板,生成代码语料
基于语料特性为不同的编程语言定制代码的生成规则
将“语料”+“规则”输入代码生成器以完成目标代码的生成
SDK 生成、测试和发布自动化
持续集成(CI)和持续发布(CD)
图21
开发者接入SDK前后问题预估统计
图22
获取SDK基础逻辑代码(人工编写)并完成静态代码检查
拉取API元数据并自动生成参数模型代码
监听SDK可能需要发布的变更,包括通过Binlog机制监听API元数据的变更、通过Git Hook机制监听SDK基础逻辑代码仓库Master分支的变更
一旦监听到有变更产生,通过触发器去触发SDK持续集成和发布流水线的运作
流水线开始运作后,首先执行SDK构建组件,SDK构建组件会并发执行两个操作:
以上操作完成后,执行代码合并和代码编译,将结果提交到流水线
然后由自动化测试组件完成对SDK的单元测试和自动化测试,通过后提交到流水线
最后由自动发布组件完成SDK的打包、上传、下载链接生成和版本信息生成等一系列操作,并最终将最新版本SDK发布到官网供开发者下载
广播推送
提供基础订阅能力,平台服务商按需订阅,推送订阅消息至配置推送地址
定向推送
通过保留原始消息、推送消息,保证推送链路的完整记录
多种推送策略,让开发者在开发中、问题发现、和事后补偿中都可以根据不同策略来实现
图23
抽象平台对接的复用能力,低成本对接更多平台服务商
灵活模型适配与能力编排,高效适配差异化的需求流程
建设对接平台的基本管控,降低平台服务商越权等风险
支持可视化自助排障平台,降低开发/联调/测试/验收成本
提升接口安全可靠的能力,平台接口权限、重复请求幂等
搭建场景丰富的监控体系,高效协助排查、掌握实时情况
犹如"虫洞"一般,随着上述能力的建设进阶,我们就慢慢打通了与大客户平台的通道,构建企业大客户开放平台,实现平台之间的高效连通。