评论回复网站怎么做的,徐州建网站,网站常识,网站建设的技术需要一、业务介绍
1.1 小程序开源整体介绍
百度从做智能小程序的第一天开始就打造真正开源开放的生态#xff0c;我们的愿景是#xff1a;定义移动时代最佳体验#xff0c;建设智能小程序行业标准#xff0c;打破孤岛#xff0c;共建开源、开放、繁荣的小程序行业生态。百度… 一、业务介绍
1.1 小程序开源整体介绍
百度从做智能小程序的第一天开始就打造真正开源开放的生态我们的愿景是定义移动时代最佳体验建设智能小程序行业标准打破孤岛共建开源、开放、繁荣的小程序行业生态。百度智能小程序的生态玩家有三类分别是联盟合作伙伴、开发者和用户。对于联盟合作伙伴满足合作伙伴的生态共建、流量共享、商业共赢诉求使得合作伙伴App内缺失场景得到高效补充拉动合作伙伴App用户使用时长共享小程序的变现收入。对于开发者满足了开发者一次开发多端运行诉求使得开发者流量获取更加便捷高效、并且增加开发者商业收入。对于用户满足用户的无需跳出即可享受一站式服务诉求。百度搜索做为小程序的十分重要分发入口通过构建统一的小程序行业生态 提升百度的搜索生态中的用户体验、服务闭环。 百度智能小程序开源的架构是如何支撑起整个联盟生态运转的呢 如图所示小程序开源联盟的整个业务架构分位四层。包括联盟宿主层、对外联盟赋能层、中间服务层、基础建设层。 联盟宿主层。百度智能小程序已经接入非常丰富的联盟宿主包括OPPO浏览器、VIVO浏览器、小米浏览器、爱奇艺、百度极速版等等。 对外联盟赋能层百度智能小程序开源联盟主要通过开源联盟平台对宿主提供入场能力、经营能力、资源输出能力以支持开源生态成员的入驻、配置、集成、准入检测、小程序信息、物料信息、分佣、订单信息、运营等诉求。宿主通过资源输出模块拿到小程序以及物料的数据后可以在自己的App内场探索可落地的场景并进行资源的分发。 内部中间服务层主要是承上启下的服务封装基础服务并支撑对外联盟赋能层对基础业务数据的获取。主要包含小程序开源宿主管理、能力资产管理、分发管理、订单及分佣管理、数据管理等。 基础建设层主要包含小程序开源框架、数据服务、小程序/物料服务、包服务以及安全加固等方案的落地。
1.2 小程序开源与厂商合作介绍
随着百度小程序开源联盟的不断发展也吸引了头部手机厂商。小程序开源与厂商共建了丰富的业务场景不仅包含厂商的浏览器场景还有桌面锁屏、负一屏、全局搜等多种场景。如此多样化的场景建设中我们面临的共性挑战是如何保障厂商线上分发质量、如何建设一条从厂商浏览器到百度搜索到小程序的全流程分发管控通路从而可以精准、实时的管控厂商浏览器的小程序分发。
具体我们是如何考虑并建设的呢下面将详细介绍下。
二、整体技术建设思路介绍
2.1小程序开源分发保障技术要点
1.背景介绍
开源保障核心围绕的对象为宿主与小程序核心目的是为了保障小程序在宿主上的分发质量。
为什么会存在分发质量问题宿主在入驻开源后需要集成开源SDK并进行相关能力的开发在这些流程完成后宿主就获得了相应的宿主能力。小程序是基于swanjs开发框架进行的开发swanjs这套运行时框架底层同样是依赖开源SDK运行因此在小程序完成开发后小程序本身也获得或依赖了相关能力。因为不同的宿主能力支持情况不同就会导致同一个小程序在不同宿主上分发时可能遇到某个宿主不支持小程序使用到的某个能力进而导致该小程序无法在宿主上正常打开或者降级为H5打开导致用户体验受损。
因此需要有一套开源保障方案来提前发现宿主与小程序之间能力不匹配情况进而确保系统能够自由管控小程序在宿主上分发全过程。 2.技术要点
要实现小程序在宿主上分发通路建设核心涉及端流程打通、能力与定级流打通及最终分发流打通三大板块如下图所示 1端流程包含宿主端流程和小程序端流程打通
a、宿主端流程
宿主入驻开源入驻成功后宿主需要集成开源SDK与开发宿主开发完成后即可打包发布宿主App同时宿主包在发布前需要经过宿主能力测试通过下载宿主工具进行CTS能力测试并产出宿主能力支持情况。
b、小程序端流程
开发者进行小程序开发开发完成后操作小程序包版本发布上线之后小程序开源保障模块会订阅小程序发版动作同时拉取小程序包信息执行小程序能力扫描测试并产出小程序能力使用情况。
2能力与定级流
在宿主与小程序分别完成接入与能力扫描后开源保障系统就可以分别基于宿主与小程序能力扫描结果进行解析产出最终的宿主和小程序能力使用情况并存储。同时开源保障系统可以基于宿主能力与小程序能力分别对宿主和小程序进行能力定级计算出宿主与小程序当前能达到哪个等级并给宿主和小程序分别打上等级标识。
3分发流
主要由小程序分发端实现主要根据用户在开源保障系统中配置的分发策略基于策略计算小程序是否满足在宿主上分发条件。
3.名词解释
SWANJS小程序前端运行时框架。
能力能力指的是小程序开源系统中对百度APP或者说开源SDK中所封装并支持的各种API、组件、框架等系统能力的统称详细可参考小程序开发者文档https://smartprogram.baidu.com/docs/develop/api/apilist/进行了解目前小程序开源共支持的能力有1000多个。
CTS测试CTS即Compatibility Test Suite, 兼容性测试套件是为了保障智能小程序在宿主APP稳定运行提供了一套兼容性测试集合宿主APP上线前需先通过CTS测试。
AST扫描抽象语法树Abstract Syntax Tree扫描是小程序应用的一种源码扫描工具通过抽象语法树的方式对小程序源码进行扫描分析目前已支持小程序用到的能力、能力属性、能力参数、能力返回值、能力涉及的关键路径等多种维度的扫描功能。
L级根据能力在小程序侧使用情况区分出一些基础能力与特色能力和低频能力等同时宿主可以根据这些能力标准进行按需实现等级划分如下
L1小程序自带不用宿主额外配合框架实现。
L2能力建议端补齐确保基础体验内部矩阵必要实现包含手百独有能力在内的必要能力。
L3特色能力强依赖端能力满足宿主按需实现。
L4低频能力不追求满足宿主按需实现。
2.2 宿主能力检测机制 1.使用宿主工具进行CTS能力测试
宿主在集成开源SDK并完成开发后进行打包可在开源宿主平台下载宿主工具对包体进行CTS能力测。CTS支持宿主进行全能力自动测试和补充测试补充测试可以对全能力测试中未通过的能力进行批量测试测试完成后上传自动测试报告。其中还存在部分能力无法实现CTS自动化测试需进行手动测试测试完成后宿主在手机上传手动测试报告。
2.宿主工具上传测试报告
在宿主执行完自动测试与手动测试后需分别上传自动测试报告与手动测试报告至开源保障系统同时因为同一个宿主版本可能存在多次重复测试过程会产生多份测试报告因此宿主需要分别选择一份最终的自动测试报告和手动测试报告使得开源保障系统可以对最终确认的报告进行解析。
3.报告解析产出宿主能力
开源系统在收到宿主确认报告的操作后开始执行报告解析计算宿主能力支持情况产出最终的宿主能力列表并存储下来在宿主能力产出的同时同样会执行宿主能力定级计算出宿主能力等级并进行标记产出的宿主能力和宿主等级将在后续宿主分发小程序时分发策略中使用。
能力检测服务可用性保障
当用户完成测试报告确认动作后开源保障系统实时进行报告解析和能力解析相关操作在一个进程中完成如果因为系统执行异常导致的宿主能力检测失败开源保障系统中设计重试任务进行兜底保障所有宿主都能完成能力检测。
2.3 小程序能力检测机制 1.小程序包发布及发版消息订阅
小程序能力检测通路依赖开发者在开发者中心完成小程序开发与发版全流程之后开源保障系统负责订阅小程序发版行为并自动拉取小程序包体信息最后推送给AST小程序能力扫描工具进行扫描操作。
2.小程序能力扫描
小程序能力扫描核心依赖AST小程序能力扫描工具完成该工具主要通过抽象语法树方式实现对小程序包体代码进行扫描分析共支持扫描小程序使用到哪些开源能力能力对应的参数、返回值及属性及能力涉及的小程序关键路径以上信息扫描成功后的结果将回传给开源保障系统。
3.小程序能力解析
开源保障系统在接收到AST小程序能力扫描结果后会进行扫描结果分析提取出小程序使用的能力情况及其他关键信息并存储下来同时会触发小程序定级任务来执行小程序等级计算产出并存储当前小程序包版本的等级以便后续保障流程使用。
能力检测服务可用性保障
当开源保障系统订阅到小程序发版信息后开始走推送AST扫描及后续流程整个流程过程均为实时流但是中间存在跨系统交互等多个子流程为了保证小程序能力检测过程一定能全部执行成功开源保障系统中设计重试任务进行兜底对能力检测失败的小程序记录进行重推AST扫描及能力解析等同时中间步骤保证幂等保障所有小程序都能完成能力检测。
2.4 分发匹配机制
为了得到宿主App与小程序的兼容情况小程序开源业务系统建设了分级机制。将小程序与宿主App从低到高分别评定为 L1 至 L4 级并基于L级确定可以分发哪些小程序。具体步骤包括
1.宿主App与小程序的能力分析将待匹配的宿主App进行能力测试得到宿主App所支持的全部能力将待匹配的小程序进行能力扫描得到小程序运行需要的全部能力。
2.宿主App与小程序的等级评定根据能力的重要性对宿主App与小程序的能力进行等级映射、等级聚合来评定App与小程序的等级。
3.宿主App与小程序的分发匹配根据宿主App等级确定匹配的小程序集其中L1级的宿主App仅能匹配到L1级的小程序L2级的宿主App可以匹配到L1与L2的小程序宿主App的最高级别为L4即具备运行全部小程序的能力。 2.5 分发干预机制
为了得到宿主App上可分发的小程序小程序开源业务系统结合内部分发匹配机制与管理员干预机制来确定宿主App可以打开的小程序集。具体步骤包括
1.小程序管理员管控第一级小程序分发管控基于管理员对小程序的私有化、App黑名单以及小程序下线的诉求确保App上无法打开私有、被拉黑、下线的小程序。
2.L级匹配机制管控第二级小程序分发管控通过L级匹配机制得到App可正常运行的小程序集合使默认情况下宿主App只能打开L级相匹配的小程序。
3.宿主App管理员干预匹配机制的补充App管理员可根据小程序运行的数据、App应用场景等需求提交想分发的小程序名单来表达分发诉求。 三、总结与思考
打破孤岛共建开源、开放、繁荣的小程序行业生态 一直是小程序开源联盟努力的目标。基础能力框架的完善、各行各业数据的互通以及开发者、宿主和百度友好积极的合作模式是完成这样目标的关键。技术架构的规划一定是围绕着共同的目标和伙伴们的诉求展开切实的跟踪和服务为理念用合理的技术手段赋能产品和生态这样才可以体现生态价值。在小程序开源业务架构建设道路中对服务化结构以及全流程的问题排查有如下总结和思考
3.1服务化架构的设计思路
1.基础数据的内聚和服务的收敛
数据是服务的基础无论是开发者平台、tp平台还是宿主平台都会对基础数据的使用场景统一管理基础数据可以很好的保证基础信息在各个平台的统一性而统一收敛的基础数据提供服务可以有效的管理和运维。
2.自研rpc框架赋能微服务架构和治理
微服务的架构往往离不开的组件就是rpc框架整体框架中的内部服务调用使用rpc框架在提高网络交互的效率同时使用rpc框架的运维功能有效提高服务稳定性。
3.单一职责原则拆分原有的重模块切实落地架构微服务化
随着开源业务逐年快速发展很多模块原有的功能聚合和边界划分已经不太符合现有场景基于业务发展的趋势和微服务单一职责理念对服务进行拆解不仅可以有效降低服务的耦合度而且衍生出更易扩展和更健壮的服务。
4.日志收集、监控报警 服务稳定性保障
分布式的日志收集和全面的监控报警是保证服务稳定性的重要手段也是问题排查和解决的常用方式但也并不是所有的地方都要日志收集和监控报警合理有效的的日志上报和监控报警指标可以有效的在第一时间发现问题和解决问题。
3.2全流程问题排查
小程序开源的链路比较长在遇到线上badcase的时候如果核心日志数据不完善日志数据链路没打通上下游数据链路情况就无法查询排查问题周期长甚至排查不了问题继而导致稳定性问题得不到很好的解决和处理基于这样的问题在线日志建设十分重要。
1.http请求日志链路 trace维护基于 server mesh 理念使用 java agent 能力和 openTrace 标准发布平台统一管理trace生成和传递不仅无侵入而且对于业务只需要很少的接入成本即可完成。 trace链路发布平台提供想用的trace链路拓扑有效的排查traceId下调用场景和花费时间帮助开发同学及时发现问题和排查问题。 trace日志统一分布式日志收集服务将收集业务方提交日志兼容发布平台统一管理的trace信息保留trace链路的具体日志详情方便在具体问题场景上面更详细排查问题。
2.物料消息日志链路 物料唯一标识物料服务将统一管理和存储物料数据对于不同场景的物料都有各自的唯一标识体系使用物料唯一表示进行物料消息的链路日志串联。 日志收集检索公司统一的收集服务提供业务标识定义、检索和排序功能对于长链路的物料消息传递分发场景可以很好的串联起整个异步链路。