浅谈小程序开源业务架构建设之路

这篇具有很好参考价值的文章主要介绍了浅谈小程序开源业务架构建设之路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  一、业务介绍

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.物料消息日志链路

  • 物料唯一标识:物料服务将统一管理和存储物料数据,对于不同场景的物料都有各自的唯一标识体系,使用物料唯一表示进行物料消息的链路日志串联。

  • 日志收集检索:公司统一的收集服务提供业务标识定义、检索和排序功能,对于长链路的物料消息传递分发场景,可以很好的串联起整个异步链路。文章来源地址https://www.toymoban.com/news/detail-527326.html

到了这里,关于浅谈小程序开源业务架构建设之路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小程序框架Mpx的下一代脚手架升级之路|滴滴开源

    导读 Mpx开源之路已经走过五个年头, 目前支持了滴滴内部全量的小程序业务开发,是滴滴开源委员会孵化的精品项目。 2022年至今,我们对 Mpx 框架进行了多项重要功能升级,包括组合式API开发规范、分包异步构建支持、单元测试能力建设和今天要重点介绍的@mpxjs/cli脚手架升

    2024年02月13日
    浏览(51)
  • 海睿思分享 | 浅谈医院大数据中心建设

    随着大数据在医疗行业临床诊疗、医院管理、健康管理等领域应用热度增加,越来越多医院设立了 大数据中心 或者在 信息中心 基础上开展了 大数据的建设 。 什么是大数据中心?大数据中心和CDR的区别是什么?医院应该怎样进行大数据建设? 1 什么是大数据中心 医院数据

    2024年02月06日
    浏览(41)
  • 小程序跨端组件库 Mpx-cube-ui 开源:助力高效业务开发与主题定制

    Mpx-cube-ui 是一款基于 Mpx 小程序框架的移动端基础组件库,一份源码可以跨端输出所有小程序平台及 Web,同时具备良好的拓展能力和可定制化的能力来帮助你快速构建 Mpx 应用项目。 Mpx-cube-ui 提供了灵活配置的主题定制能力,在组件设计开发阶段对表现层的结构和样式进行抽

    2024年04月12日
    浏览(38)
  • 浅谈安科瑞EMS能源管控平台建设的意义-安科瑞 蒋静

    摘 要:能源消耗量大、能源运输供给不足、环境压力日趋增加、能耗双控等一系列问题一直困扰着钢铁冶金行业,制约着企业快速稳定健康发展。本文介绍的安科瑞EMS能源管控平台,采用自动化、信息化技术,实现从能源数据采集、过程监控、能源介质消耗分析、能耗管理等

    2024年02月06日
    浏览(41)
  • 闲鱼大终端UI组件库——FishUI建设之路

    随着闲鱼前端架构的不断演进,一些关键技术设施需要结合业务特征逐步自建,技术方案也要拥抱社区来提升可扩展性。一方面, 闲鱼跨端开发框架kun 让前端开发者使用JS/CSS/HTML即可交付终端页面,同时兼顾了动态性和高性能,另一方面,前端UI框架也正从集团 rax 逐步转向

    2024年02月07日
    浏览(32)
  • 云科通明湖:金融业务可持续性能力建设,少不了这块“拼图”!

    随着银行行业数字化转型的不断深入,数据中心支撑业务可持续性的需求不断凸显,为了在业务发展和创新中取得行业领先,需要金融业务具备很强的适应性,以保证终端客户不断提升的使用体验,因此,金融企业的双活数据中心建设也越来越重要。 但是双活数据中心建设是

    2024年02月16日
    浏览(53)
  • 浅谈仓储UI自动化之路

    分层测试:就是不同的时间段,不同的团队或团队使用不同的测试用例对产品不同的关注点进行测试。一个系统/产品我们最先看到的是UI层,也就是外观或者说整体,这些是最上层,最上层依赖下面的服务层,也就是接口或者模块,最底层就是单元,这个单元是函数或者方法

    2024年02月05日
    浏览(42)
  • 小白的ctf之路之文件上传浅谈

    这次开始使用upload-labs开始进行文件上传的初步练习。 首先什么是文件上传以及文件上传的漏洞。通俗点来讲,就是在一些网站中需要上传照片,文档等一些文件的操作就是文件上传。而这里也同样有着大量漏洞可以利用,总的来说就是利用服务器对上传文件的过滤不严格,

    2024年02月16日
    浏览(59)
  • 分而治之 -- 浅谈分库分表及实践之路

    之前总在聊微服务, 微服务本身也是分布式系统,其实微服务的核心思想是分而治之,把一个复杂的单体系统,按照业务的交付,分成不同的自服务,以降低资深复杂度,同时可以提升系统的扩展性。 今天想聊一下分库分表,因为对于快速增长的业务来说,这个是无法回避

    2024年02月07日
    浏览(80)
  • Spring高手之路-Spring在业务中常见的使用方式

    目录 通过IOC实现策略模式 通过AOP实现拦截增强 1.参数检验 2.缓存逻辑 3.日志记录 通过Event异步解耦 通过Spring管理事务 1.声明式事务 2.编程式事务 3.需要注意的问题 不能在事务中处理分布式缓存 不能在事务中执行 RPC 操作 不过度使用声明式事务 很多时候,我们需要对不同的

    2024年01月19日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包