带你读《2022技术人的百宝黑皮书》——跨全端SDK技术演进(2)https://developer.aliyun.com/article/1340358?groupCode=taobaotech
总结一下设计原则9个字:最小够用可扩展原则。
平台 |
包大小(kb, 基础功能) |
说明 |
ANDROID |
43kb |
动态库,v8a |
IOS |
116 |
静态库,实际占app大小 |
Windows |
47kb |
x86 |
包大小情况如图(未包含淘宝天猫基础客户端能力,包含后略增加60k左右)。
目前Lite库已经作为淘系C++基础库集成在集团的近100个App里,除了包大小优势外,稳定性也极佳,百万分之1 左右的崩溃率(淘宝双端统计),同时与淘宝天猫架构组合作,无缝提供淘宝天猫客户端基础能力(log、埋点、键值存储等)。
关于跨平台的架构选择
通常技术还是为业务服务,还是贴近业务来讲述,能更有体感一些,这样也更直观的把我们遇到的问题和背后思考透漏给大家,作为参考,还是以消息为例:
我们面临的问题和诉求:
屏蔽通道,以统一的数据模型方式对外提供:底层需要对接3个服务端(多通道),同时每个server端提供的能力、功能又高度相似,需要抽象后统一屏蔽提供给上层,此外相关数据需要跨通道或者屏蔽通道存储。
调用方线程不统一:业务部分需要处理来自不同线程的高并发(于客户端而言)请求。
多语言:接入层需要适配不同平台,ANDROID-JAVA,IOS、MACOS-Object C,WIN-C++。
多维度支持定制:
- 业务定制:业务上需要面对不同的APP可以有不同的功能定制,这里还包括支持通道的可配置,业务能力的可定制等,举个例子:在淘特里无群聊服务,但是在淘宝里这一部分又是需要的,在千牛里需要有商家群,但不需要有淘友关系群,等等基于业务、以及包大小考虑的定制。
- 线程调度定制:基于耗电量、系统资源、平台特性等考虑,需要线程调度方案的可定制。在移动端对耗电量比较敏感且系统资源有限,但是PC端上对性能要求会更高一些,如何在统一的方案里支持线程调度的平台级、甚至是业务级别定制。
- 网络流量管理定制:对网络能力一方面要有统一的监控,方便判断MTOP的各种API调用情况分析,另一方面需 要有统一的切面能力,在MTOP的调用上做二次业务级别的网络流量接口优化定制。
- DB管理定制:基于FD、平台特定等考虑,需要DB管理可以根据不同的平台有不同的定制策略,在移动端采用 单用户一库多表的形式,在pc端性能最大化采用多库多表甚至需要支持不同app的不同db管理方案可定制。
基础能力复用:对于集团通用的基础组件,需要有统一的能力从外部获取从而方便c++层使用。稳定性保障:是否方便做单元测试,设计上如何避免单元测试对内部代码的入侵。
基于以上,我们设计了MessageSDK的架构大致如下:
带你读《2022技术人的百宝黑皮书》——跨全端SDK技术演进(4)https://developer.aliyun.com/article/1340356?groupCode=taobaotech