财报上新不久的Mobvista,还内藏何种“惊艳”?

本文为CSDN博主「L-JingJing」的原创文章

原文链接:https://blog.csdn.net/sch881226/article/details/105362679

就在不久前,Mobvista刚刚发布了2019年的财报数据。我们观察到其程序化广告收入已高达22.3亿元,同比增长40.8%;经调整后EBITDA达3.6亿元,同比增长高达19.5%……试想仅仅上市一年,Mobvista在增长放缓的大环境下依然能够取得如此“高光时刻”,可见其发展势头不容小觑。

在收入方面大举“开源”的同时,Mobvista还运用技术手段有效“节流”。财报中提到,过去一年汇量科技的程序化业务收入显著增長的同時,程序化业务的服务器成本下降了10.8%,服务器成本占程序化广告业务收入的比例,从2018年的6.6%降至2019年的4.2%。

这归功于汇量科技独立研发的技术中台——尤其是其中的弹性集群管理平台SpotMax,在过去一年中的深度应用。在程序化广告业务的长期实践中,Mobvista已经将大数据计算引擎(EnginePlus)、大规模机器学习算法平台(MindAlpha)、数据管理平台(Datatory)和云服务器弹性集群管理平台(SpotMax)沉淀为可复用、共享和迭代的技术中台。技术中台提供的大数据实时计算的能力,为支持广告精准定向和展示向安装的转化率持续提升,推动程序化业务的规模化增长提供了技术基础。而技术中台更为直观的作用是实现云服务器成本的集约。

SpotMax背后的云服务成本之观

记得初识SpotMax还是在去年云栖大会与阿里云联合发布之时,据悉在联手打磨此款服务的过程中,阿里云弹性计算团队会根据Mobvista的反馈对自身弹性集群作相应的改进提升;而Mobvista方面则是将自身的产品与解决方案更好融入阿里云的解决方案库中,并定期向阿里云方面的架构师与销售团队同步,便于一同将价值传递给用户。

盘点服务始末,我们发现,SpotMax始于Mobvista在利用Spot Instance优化云端成本上积累的一定经验,为的就是帮助其他云的使用者找到成本可控的大规模云端系统实践的可行之路。“我们更适合将SpotMax定义为一种体系,即利用弹性计算资源进行云端系统成本优化的工具,它包含产品和解决方案等诸多层面,甚至可以被理解为一种生态,可做到因需求不同来选择具体的组成部分并完成既定目标。”Mobvista技术副总裁兼首席架构师蔡超对此总结道。

如今SpotMax解决方案和服务主要包含MaxArch、MaxChaos和MaxGroup三部分。其中MaxArch是一种基于架构的咨询服务,主要是Mobvista为用户提供针对现有架构的评估以及向云上迁移的实践建议与有关云原生的架构设计等;而MaxChaos则是基于开源软件与Mobvista自研的诸多服务框架之上,提供可以帮助用户持续提升自身系统高可用性的混沌工程服务;最后MaxGroup则可被简单定义为Spot Instance集群管理服务,主要通过集群防退化、集群推荐以及基于强化学习的混合机群负载均衡等助力用户进一步降低云上系统的成本。总结一句,SpotMax寄希望于云计算平台得天独厚的弹性计算基础能力,以此搭建一套实时竞价和调度管理系统,达成按需购买与抢占实例低价的双重优势。

读到此处,想必各位看官对刚才提出的“双重优势”一头雾水,所以在细聊之前,晶少还是先针对性介绍下目前用户购买使用云服务的几种方式以及与之产生的成本关联吧!如今用户购买使用云服务会有这样几种形式,最常使用的当属按需实例,即随买随用、按需获取模式,这种方式虽然省去了提前规划的复杂性,但也是最昂贵的使用方式之一,如果不是财大气粗的企业用起来恐怕还是吃不消的。

另外一种则是预留实例,即用户通过预定用量和时长来享受一定折扣的服务,但缺陷比较明显,那就是不够灵活弹性,在这个“天下武功为快不破“的时代显然也是使用起来寸步难行。而以SpotMax服务为代表的则是第三种方式,也是目前Mobvista业务中在线系统正在大规模使用的,一度被阿里云称之为抢占实例,顾名思义就是“想用就要抢”的理念,这也是目前提出的一种最大化购买碎片计算力资源来优化云上系统成本的做法。

如果从技术角度考量这几种形式,可以这样被理解:常用的按需获取其实主要利用了云计算的弹性拓展特性,因为此过程中云服务提供商需要具备让用户可以随时随地获取被释放计算资源的能力,所以就不得不预留大量的计算资源,竞价实例可以被认为是云服务提供商利用闲置计算资源推出的实例,其价格会根据供需情况实时变化,但与按量实例相比较其价格优势就非常明显了。

可尽管竞价实例的价格通常是按需实例的10-20%,但遇到出价低于市场价或是资源紧张的情况就会出现被回收,也就是关于竞价实例中存在的中断机制。基于此为了保持系统服务的可持续性和服务水平,用户就需要在竞价实例被回收时及时作出应对系统集群容量变化的有效举措 ,通常情况下此过程中需要结合一些Spot集群管理软件,帮助维持集群容量的动态稳定,这样就可做到在不影响可用性的前提下实现系统成本的大幅度节省。

基于此蔡超表示,SpotMax就是源于该理念所达成的设计实践,目前已经在Mobvista内部同时支持了三条主要业务线的运维工作,主要侧重大量抢占实例支撑的在线系统,辅以其他优化措施实现了单位请求成本节约70%。

关于未来的技术创新迭代,他表示其实最初设计SpotMax时就已经考虑到要积极有效应对用户不同场景中千差万别的需要以及以后层出不穷的刚性需求,所以在架构上着力采用了插件的模式,即可根据用户场景不同来选择相应的插件使用。“目前Mobvista针对容器化场景的插件已经被提供,另外某些定制化创新性质的插件正在被研发中。尽管目前SpotMax依然处于早期的推广使用阶段,但从反馈的数据中我们发现针对目前试用用户的系统计算资源成本至少可降低一半左右。”

云原生架构实践促Mobvista“云端俭省之道”

如此说来,SpotMax是云上系统成本降低的刚需产物不假,但我们目前所经历的云上系统成本居高不下又根源于何呢?其实很重要的一方面是计算资源的成本使然。所谓计算资源成本,简单来说就是我们熟悉的云端虚拟机、数据存储、流量使用以及云端资源所涉及的诸如消息队列服务、机器学习等功能性服务之类;如今随着企业上云的规模化与产业化差异性越发鲜明,需求的碎片化趋势也逐渐加剧,如何有效降低运成本就顺理成章变成用户关注的大问题,所以也就不难理解SpotMax的应运而生了。

对此晶少觉得,其实降低成本最直观有效的办法就是系统可以做到对需求量完成自动伸缩以及合理使用服务平台的收费模式,在此过程中无论是最基本的CPU利用率还是数据存储选择的范围等都会被纳入考察范围之内,进一步来说如果想要达成此种弹性的系统要求,架构的合理性绝对是关键所在。“在利用云特点的基础之上采用更加细腻有效的伸缩方式,比方说微服务架构让系统伸缩力度更颗粒性。毕竟复杂单体系统伸缩会需要更大而昂贵的计算资源,繁杂的人力支持更是不可缺少。”蔡超补充道。

具体来说,通过架构调整来完成系统伸缩力度更细化,其实本质上是促成架构更高效适用云平台的契机之一,即利用云平台特性让服务集群更好地应对竞价实例,减少中断对服务集群自身容量的影响并稳定容量,例如采取最基本的机器保障支持利用率、根据数据属性选择合适的存储方式以及线上集群自动伸缩等。

说到此处不得不提及一点,其实Mobvista在投身SpotMax研发之前自身也经历过促成云成本降低的艰难探索,无论是尝试低CPU利用率机器的合并淘汰,还是对数据存储的优化以及购买Reserved Instance预留实例等,同时也是蔡超在加入Mobvista之后秉承all in cloud的前提不断跟进的重要任务之一。

众所周知,Mobvista旗下拥有程序化广告平台,移动程序化广告的具有请求量巨大的特性,峰值达到单日近千亿次,同时对于响应时间也有着非常苛刻的要求。晶少了解到通常程序化一般对于响应时间的要求是50-100ms,在这种苛刻的条件下要采用竞价实例的话势必要充分提高系统的弹性,一来二去,展开Mobvista架构向微服务为代表的云原生构架迁移就被提上了蔡超的日程。

通过介绍,晶少知晓早年间Mobvista的几大业务系统都是部署在云端较为庞大的单体系统,其中最大的瓶颈则是需要横向扩展时不免要整体复制,过程中必然需要更多的计算资源。基于此Mobvista方面首先开始了从云单体系统向云原生架构的改造,构建微服务成为第一步,该实践需要考量的是面向容错、恢复和混沌工程,以此建立一个高可用的微服务架构使云上系统更具弹性,以便更好利用资源。

深入提及架构改造,蔡超明确,云原生实质是帮助企业高效运用云平台,以便更快速开发和发布应用的一些技术方法及理念。但在此尝试中由于基础设施的改变需要相应架构调整去适配,所以本地系统直接向云上迁移是完全不可行的,不但使用艰难还会造成巨大的成本浪费。“另外更容易被忽视的一点,企业尝试云原生时往往停留在系统建设层面,而忽视了与其配套的开发团队甚至是工作方式的相关调整,这方面确实需要很长一段时间来解决,不能一蹴而就,这也算是Mobvista的一些宝贵的实践心得。”

如今Mobvista已经在架构方面完成了微服务的改造,未来还将紧跟技术趋势加大对容器化、服务网格等技术的引入。“我们希望能够提升基础设施的抽象层次,做到从虚拟网络到容器网络,再到服务网络,如此就可以大大提升大规模与复杂系统的可维护性。更深入来讲,无论是目前的推广、变现还是数据洞察业务,抑或是云端架构改造所带来的成本优化,本质上为企业创造价值并构建工具生态的想法是需要持续被坚持的,也是Mobvista的大事儿。”蔡超说。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java-元注解

// 测试 元注解 public class Test02 {MyAnnotationpublic void test(){} } // 定义一个注解 // Target 表示注解可以用在哪些地方 ElementType.METHOD 是方法 ElementType.TYPE是类 Target(value {ElementType.METHOD, ElementType.TYPE})// Retention 表示注解在什么地方有…

容器十年 ——一部软件交付编年史

作者| 张磊,阿里云容器平台高级技术专家,CNCF Ambassador (CNCF 官方大使),Kubernetes 项目资深成员与维护者,曾就职于 Hyper、微软研究院(MSR),现在负责 Kubernetes 技术…

Java-自定义注解

// 自定义注解 public class Test03 {// 注解可以显示赋值, 如果没有默认值,我们就必须给注解赋值MyAnnotation2(name"wang")public void test1(){}// 当只有 一个值 为value 时, 可以不用写 value""MyAnnotation3("…

如何带领团队“攻城略地”?优秀的架构师这样做

阿里妹导读:架构师是一个既能掌控整体又能洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。看似完美的“人格模型”背后,是艰辛的探索。今天,阿里巴巴技术专家九摩将多年经验,进行系统性地总结,帮助更…

资深程序员总结:分析Linux进程的6个方法,我全都告诉你

来源 | 后端技术学堂封图| CSDN下载于视觉中国操作系统「进程」是学计算机都要接触的基本概念,抛开那些纯理论的操作系统底层实现,在Linux下做软件开发这么多年,每次程序运行出现问题,都要一步一步分析进程各种状态,去…

蚂蚁金服胡喜:金融服务将成为开源的下个前沿领域

近日,全球知名开源组织云原生计算基金会 CNCF 宣布,蚂蚁金服正式成为 CNCF 黄金会员。为什么蚂蚁金服会拥抱开源,科技公司和开源社区如何实现双赢且可持续发展?蚂蚁金服副CTO胡喜在TechCrunch上发表专栏阐述了自己的见解。 自诞生…

Java-反射概述

// 什么叫反射 public class Test02 {public static void main(String[] args) throws ClassNotFoundException {// 通过反射获取类的 Class 对象Class c1 Class.forName("reflection.User");Class c2 Class.forName("reflection.User");Class c3 Class…

PLSQL 设置日期格式为年月日不显示时分秒

在这里插入代码片nls_date_format YYYY-MM-DDnls_timestamp_format YYYY-MM-DD

云原生应用 Kubernetes 监控与弹性实践

前言 云原生应用的设计理念已经被越来越多的开发者接受与认可,而Kubernetes做为云原生的标准接口实现,已经成为了整个stack的中心,云服务的能力可以通过Cloud Provider、CRD Controller、Operator等等的方式从Kubernetes的标准接口向业务层…

零基础小白10分钟用Python搭建小说网站!网友:我可以!

都说Python什么都能做,本来我是不信的!直到我在CSDN站内看到了一件真事儿:一位博主贴出了自己10分钟用Python搭建小说网站的全过程!全程只用了2步操作,简直太秀了!!……第一步:爬取小…

Java-得到 Class 类的几种方式

public class Test03 {public static void main(String[] args) throws ClassNotFoundException {Person person new Student();System.out.println("这个人是:"person.name);// 方式一: 通过对象获取Class c1 person.getClass();System.out…

就是要你懂负载均衡--lvs和转发模式

本文希望阐述清楚LVS的各种转发模式,以及他们的工作流程和优缺点,同时从网络包的流转原理上解释清楚优缺点的来由,并结合阿里云的slb来说明优缺点。 如果对网络包是怎么流转的不太清楚,推荐先看这篇基础:程序员的网络知…

JVM-SANDBOX:从阿里精准测试走出的开源贡献奖

阿里妹导读:稳定性是历年双11的技术质量保障核心。从 2016 年开始淘宝技术质量部潜心修行,创新地研发了一套实时无侵入的字节码增强框架,于是「JVM-SANDBOX」诞生了,并且顺手在 MTSC 大会上拿了开源贡献奖,今天&#x…

EMR Spark Runtime Filter性能优化

背景 Join是一个非常耗费资源耗费时间的操作,特别是数据量很大的情况下。一般流程上会涉及底层表的扫描/shuffle/Join等过程, 如果我们能够尽可能的在靠近源头上减少参与计算的数据,一方面可以提高查询性能,另一方面也可以减少资源的消耗(网…

集齐最后一块拼图,全栈Serverless时代正式开启

近日腾讯云正式发布国内首个Serverless数据库新品——PostgreSQL for Serverless。相比普通云上数据库,该数据库能够最快1秒完成部署,成本降低70%。这款新型数据库将为数百万开发者带来更灵活的业务开发模式、更快捷的上云体验,以及更大空间的…

Java-所有类型的Class对象

public class Test04 {public static void main(String[] args) {Class c1 Object.class; // 类Class c2 Comparable.class; // 接口Class c3 String[].class; // 一位数组Class c4 int[][].class; // 二维数组Class c5 Override.class; // 注解Class c6 ElementType.cla…

分布式服务架构下的混沌工程实践

本文来自阿里巴巴高可用架构团队高级开发工程师肖长军(花名穹谷)在 GIAC(全球互联网架构大会)上的分享,包含三部分内容:(阿里巴巴中间件公众号对话框发送“混沌工程”,获取分享PPT&a…

Java-类加载内存分析

没有听懂 public class Test05 {public static void main(String[] args) {A a new A();System.out.println(A.m);/*1. 加载到内存&#xff0c;会产生一个类对应Class对象2. 链接&#xff0c; 链接结束后 m 03. 初始化<clinit>(){System.out.println("A类静态代码…

小谈CDN回源函数计算的应用场景

CDN团队联合函数计算团队近期推出了一个全新功能&#xff0c;即通过CDN把回源流量指向函数计算进行处理&#xff0c;该功能旨在帮助CDN用户能通过函数计算快速处理和便捷处理回源数据为目的&#xff0c;用户仅仅需要在CDN回源地址填写函数计算的自定义域名即可把请求转发到函数…

只需12 个步骤,就能在AWS中创建自定义VPC,用过都惊了!

作者| Kunal Yadav译者 | 天道酬勤 责编| 徐威龙封图| CSDN下载于视觉中国在本文中&#xff0c;作者将创建一个具有公共子网和私有子网的自定义VPC。每个子网中都有一个EC2实例&#xff08;已安装WordPress&#xff09;。亚马逊VPC图标公共子网中的实例可以通过互联网访问&…