vivo web service:亿万级规模web服务引擎架构
本文首发于 vivo互联网技术 微信公众号
链接:https://mp.weixin.qq.com/s/ovOS0l9U5svlUMfZoYFU9Q
vivo web service是开发团队围绕奇点内核打造出的基于vivo手机平台的web服务引擎,该服务引擎从浏览器产品线中经过多年迭代而出。除了提供可靠的基础Web服务,服务引擎还集成了非常强大的扩展功能。本文从架构方面对该服务引擎进行一次简单剖析,帮助读者对vivo web service有一个整体了解。
1. 奇点内核
在多年的浏览器开发工作中,开发团队逐渐迭代出一款有竞争力的内核产品–奇点内核。从架构上讲奇点内核已经不是一款单纯的系统 WebView 替代产品,它集成了丰富的扩展功能,同时具备高性能、稳定性强的特点。
奇点内核架构示意图
这么丰富的功能如果仅提供给浏览器使用,无疑是大材小用了。
我们举几个例子:
深色模式。这是最近非常火热的功能。然而,从Android Q开始系统WebView才逐渐支持深色模式。这对于在无法升级到Q版本的Android平台的开发者来说,仅使用系统WebView来实现类似的效果,无疑是巨大的挑战。幸运的是,使用奇点内核可以轻松的获取比系统WebView更好的深色模式效果,同时支持按需调整样式,这应该是应用开发者的巨大福音了。
稳定性。系统WebView的崩溃率数据约为0.4%左右,奇点内核在更加复杂的浏览器环境中运行,崩溃率基本保持在0.05%以下,这对长期苦于系统WebView稳定性差问题的应用有很大吸引力。
兼容性。奇点内核提供全平台的兼容能力,使用同样的API应用可以做到全平台上返回同样的执行结果,而不需要考虑Android版本的兼容性问题,节省接入方的开发和维护的工作量。
安全性。基于快速迭代的能力,开发团队能够在第一时间修复WebView暴露的各种风险和漏洞,同时通过数据加密、防劫持等手段提高了Web访问的安全性,这是系统WebView做不到的。
2.vivo web service
以上优势,对于关注相关点的应用已经有足够的吸引力了。更进一步,在奇点内核的基础上我们将浏览器和部门的其他技术资源整合起来,构建了一个围绕奇点内核的服务平台,我们称为vivo web service。
web service apk架构示意图
其中:
奇点内核以WebView的形式提供出来, API与系统WebView保持一致。
作为奇点内核的后备,Web服务平台提供动态切换奇点WebView到系统WebView的能力。
通过奇点内核,还可以有条件的使用到云端代理(省流加速、内容转码等)、HTTP DNS防劫持能力。
web service可以提供JSBridge、J2V8等扩展能力。
web service可以提供强大的奇点Player,这款自主研发的播放器在播放速度和稳定性方面远超系统提供的MediaPlayer。
我们将以上资源整合后,以奇点内核为核心提供出一套web service sdk出来供接入方使用。由于使用插件化技术,接入方仅需接入200多K的sdk,就可以使用到上述这些功能。
3.vivo web service架构
在vivo手机平台上,各个应用使用web service的架构示意图,图中展示了各应用通过sdk可以获取到的web service的各种服务。
注意,这个图仅表示应用间的依赖关系,并非类似于Android平台的层次架构图。web service目前并不是系统framework的一部分,它与其他应用没有区别,就是普通的app而已。
web service架构示意图
4.vivo web service技术原理
前面提到,web service的实现方式是插件化,由sdk和apk两部分构成。接入方通过sdk动态加载web service apk,每个应用在自己的进程空间中使用独自的web service,互不干扰。
应用动态加载web service apk示意图
其中:
web service apk提前被安装到系统中,或者由应用按需下载安装。
应用在使用web service之前使用sdk接口将apk中的类实现动态加载到自己的进程中,就可以使用服务。
应用可以通过API开启或者关闭某些服务,也可以通过服务器配置,每个应用的配置互不干扰。
apk可以通过应用商店进行更新,更新后应用下次启动立刻可以使用到apk的最新特性。
apk支持自升级,可以通过服务器配置是否强制升级为最新版本,作为紧急问题修复的兜底方案。
5.vivo web service未来演进
随着web service的迭代,未来的功能会更加丰富。目前来看,web service可能向以下的几个方向演进。
提供更强大的Web能力。Web能力的提供者是内核,未来我们会通过定期的升级内核,并持续的进行性能和稳定性优化来强化内核能力。
提供更多的扩展功能。未来web service会开发和引入更多、更强大的组件或服务,这些组件或服务依托于Web服务,为接入方提供更多的可选择性。
提供更简洁的接入方式。未来web service中的奇点内核会成为系统的默认webview。第三方应用甚至不需要修改代码,就能使用上web service服务。依托于vivo强大的手机平台优势,web service会有更大的想象空间。
平台应用使用vivo web service示意图
更多内容敬请关注 vivo 互联网技术 微信公众号
注:转载文章请先与微信号:labs2020 联系。
vivo web service:亿万级规模web服务引擎架构的更多相关文章
- 使用Web Service进行网络编程-----Web Service简介
Android应用通常都是运行在手机平台上,手机系统的硬件资源是有限的,不管是存储能力还是计算能力都是有限的,在Android系统上开发.运行一些单用户.小型应用是可能的,但对于需要进行大量的数据处理 ...
- Web Service学习-CXF开发Web Service实例demo(一)
Web Service是什么? Web Service不是框架.更甚至不是一种技术. 而是一种跨平台,跨语言的规范 Web Service解决什么问题: 为了解决不同平台,不同语言所编写的应用之间怎样 ...
- Web Service学习之一:Web Service原理
一.定义 Web Service 不是框架也不是技术 而是解决远程调用.跨平台调用.跨语言调用问题的一种规范. 二.应用1.同一个公司新.旧系统的整合:比如CRM系统与OA.客服系统相互调用2.不同公 ...
- web service, wcf, wcf rest, web api之间的区别
在.NET Framework中,有很多种技术可以创建基于http协议的服务,譬如说web service, wcf,wcf rest和web api等等.网上有很多的文章教我们如何开发.使用这几种技 ...
- Web Service学习-CXF开发Web Service的权限控制(二)
Web Service怎样进行权限控制? 解决思路:server端要求input消息总是携带实username.password信息,假设没实username和password信息.直接拒绝调用 解决 ...
- web service 项目 和 普通 web项目 的 区别
web service 面向的是开发者(需要再次开发) 普通web 面向的是用户(直接使用)
- java web service 写入图片到web/img/
获取本类service路径,然后字符串截取和拼接 String classpath= this.getClass().getResource("/").getPath(); Str ...
- 【转】简述什么是Web服务(Web Service)技术?
Web Service 是在 Internet 上进行分布式计算的基本构造块,是组件对象技术在 Internet 中的延伸,是一种部署在Web 上的组件.它融合了以组件为基础的开发模式和 ...
- http服务 WCF、Web API、Web service、WCF REST之间的区别
http服务 WCF.Web API.Web service.WCF REST之间的区别 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web ...
随机推荐
- Date、Calendar和GregorianCalendar的使用
java.util 包提供了 Date 类来封装当前的日期和时间. Date 类提供两个构造函数来实例化 Date 对象. 第一个构造函数使用当前日期和时间来初始化对象. Date public st ...
- Android组合Windows环境下Frida的安装步骤
Frida是什么 我觉得官网已经说得很清楚了.简单的说就是一款动态代码检测工具,可用于各种系统,这里的主要用途是动态检测Android代码,配合Windows系统环境使用. Frida ...
- 华为云MySQL金融版正式商用,高可靠的金融级数据库来了
摘要:全新三节点架构,基于深度优化的MGR组复制技术,提供金融级的数据一致性. 日前,华为云数据库MySQL 金融版正式商业化发布,MySQL金融版采用MGR技术,基于Paxos协议,采用一主两备三节 ...
- 关于Block内部要不要使用weakSelf的几种情况
本文转载自http://www.jianshu.com/p/c6ca540861d9 关于Block内部要不要使用weakSelf的几种情况 我们知道当对block使用不当时会造成循环引用导致内存泄露 ...
- openlayers5-webpack 入门开发系列一初探篇(附源码下载)
前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...
- Local Model Poisoning Attacks to Byzantine-Robust Federated Learning
In federated learning, multiple client devices jointly learn a machine learning model: each client d ...
- Spring Boot 外部化配置(一)- Environment、ConfigFileApplicationListener
目录 前言 1.起源 2.外部化配置的资源类型 3.外部化配置的核心 3.1 Environment 3.1.1.ConfigFileApplicationListener 3.1.2.关联 Spri ...
- isensor app kit 之 CF5642V2 OV5642 测试总结
. 总结; 使用官哥的cf5642c-v2时,需要将isensor app kit 上的iic上拉电阻去掉,否则可能导致寄存器初始化不成功,去掉即可,使用柴草电子的模组则不需要.
- 【HTTP】HTTP 的15个常见知识点复习
前言 自从入职新公司到现在,我们前端团队内部一直在做 ?每周一练 的知识复习计划,我之前整理了一个 每周一练 之 数据结构与算法 学习内容,大家也快去看看~~ 最近三周,主要复习 网络基础 相关的知识 ...
- 【Html JS】使用问题记录
[Html JS]使用问题记录 ================================================================ 1.td 文字换行 2.正则表达式 = ...