阅读更多

如果你的移动应用程序只能在某个地区(比如US)运行良好,那么该如何改善?在@scale conference上,Facebook多次谈及了这个问题。那么如何才能设计出一个更适合用户需求的应用,这里我们看向Facebook项目经理Chris Marra的 Developing Android Apps for Emerging Market演讲视频综述。

 
视频请访问上文链接(YouTube) 

在移动网络上,Chris表示,因为地区差异,用户在网络连通性上存在着巨大的差异。USA的3G覆盖率是70%,平均延时为280毫秒。而在印度,3G覆盖率是6.9%,延时达500毫秒。在巴西,3G覆盖率是38.6%,延时则超过850毫秒。

 

同时,Facebook还在用户使用的设备上做过综合调研:不是所有用户的设备都很快,不是所有设备的屏幕都很大,同样不是所有人都在一个很快的网络下。结果显示,大部分用户使用的设备都是2011年左右生产,双核心及拥有1GB以上的内存。开始时,Facebook应用只针对高端用户设计,因此那些低端设备拥有者的使用体验非常差。

 

为了满足这些用户的体验需求,Facebook专门建立了独立的应用——使用针对低端设备的轻量级动画等策略。而针对那些小屏幕手机的拥有者,Facebook更设计了匹配不同屏幕大小的应用程序。

 

当下,Facebook已经衍变为以产品为中心的架构:垂直团队负责对应的产品,而不是统一而论,比如,一个Android团队负责所有Andriod产品。当然,同样存在一个垂直团队,他们致力提升整个Android平台上的产品体验,深入研究这个平台的技术细节。

 

每个团队都负责终端到终端的性能,及所负责产品的可靠性。这里同样存在一个核心团队,负责关注、分析和帮助解决性能问题。

 

不管是核心团队还是产品团队都是必不可少的。核心团队善于检测和识别问题,并与产品团队一切合作来解决这些问题。对于移动开发来说,端到端的控制整个产品至关重要,包括核心参与指标(core engagement metrics)、核心可靠性(core reliability)及核心性能指标(core performance metrics ),而核心性能指标又包括日常使用情况、冷启动时间及可靠性。

 

在如何解决网络性能瓶颈上,Facebook Engineering Manager发表了题为 Tuning Facebook for Constrained Networks的讲话。Andrew表示,解决这个问题主要从以下3个方面着手:Image Download Sizes,Network Quality Detection,Prefetching Content。

 
视频请访问上文链接(YouTube) 
 

总体来说,在Facebook规模,面面俱到并不是一件容易的事情。用户设备不只是覆盖Andriod和iOS两个领域,工程师必须针对各种手机进行对应的设计。

 

减少图片大小——JPEG降低30%,PNG降低80% 

 

大部分从Facebook应用程序下载的数据都是图像:占Android设备下载总数据的85%,占Facebook Messenger下载总数据的65%。因此,缩减图像的体积可以减少客户端的下载量,从而减少下载时间,特别有益于高延时网络。

 

为显示层返回一个适当大小的图片

 

  1. 在服务器上压缩大小。杜绝给客户端发送大的图片,然后让客户端去压缩。这将浪费大量的带宽,并且占用更多时间。
  2. 发送一个缩略图(用于描述图片)以及一个预览图片(比如newsfeed),在用户要求访问后再发送完全体积的图片。同时在大部分情况下,用户的需求也只是一个缩略图或者一个小图片。 
  3. 随着屏幕的变大,图片缩放并不如以往那么效率,但是仍然可为,区别只是回报不同而已。

改变图片的格式  

  • 90%发送到安卓的Facebook和Messenger图片都会被转换成WebP格式。
  • WebP格式2010年由谷歌发布。
  • 同等质量下WebP节省JPEG格式7%的下载体积。
  • 质量和参数调优后,在无明显差异下节省JPEG格式30%的下载体积。
  • WebP同样支持透明度和动画,这个特性被用于Stickers产品。
  • 在相对旧的安卓设备上,图片会通过WebP传输,而在客户端上会被转码成JPEG用于渲染。

网络质量检测——特定网络相对的调整

  1. 同等网络制式下(2G、3G、LTE、WiFi等),US的网络速度会是印度和巴西的两到三倍。
  2. LTE通常情况下会快于WIFI,因此你不能只基于传输技术的速度做调整。
  3. 为客户端添加以下功能
  • 测量所有大型传输的吞吐量
  • Facebook服务器在每个响应的HTTP header中提供了一个Round Trip Time(RTT)估算。
  • 客户端会测量传输的平均吞吐量和RTT时间,从而确定对应网络的质量。
  • 连接质量被分为以下几组:150kbps以下的“Poor”、150-600kbps的“Moderate”、600-2000kbps的“Good”以及大于2000kbps的“Excellent”。
  • 功能开发人员可以根据网络的质量来调整行为。
  • 基于质量问题存在的一些调整:
  • 增加/减少压缩。
  • 调整并行网络请求数量,不会占用全部带宽。
  • 禁用/允许自动播放视频,不要在慢的网络下造成更多的数据传输。
  • 预取更多的内容。
  • Facebook开发了Air Traffic Control工具以支持不同流量的配置文件模拟,每个配置文件可设置的参数包括bandwidth、packet loss、packet loss-correlation、delay、delay correlation、delay jitter。

预取内容

  • 在内容被真正需要之前建立请求并传输。
  • 在高延时下,预取内容非常重要,因为用户在漫长的等待中能得到的只是一个空白屏幕。
  • 在应用程序启动的过程中为feeds建立请求,因此在feed展示时所有数据都会就绪,数据下载的过程可以与其他初始化任务并行发生。
  • 为网路请求保存一个优先级队列,不要因为后台网络请求阻塞前台的网络请求,或者因为用户看不到的数据而影响用户当前感兴趣的数据。
  • 监视过度获取以及设备资源的过度消耗。过度获取可能耗尽磁盘空间,或者耗费大量的用户流量。

前台参数

  • 客户端上传到服务器。这里的思想是尽量上传更少的数据到服务器,这就意味着在发送到服务器之前调整图片的大小。如果上传重试失败的很快,通常是因为网络问题。
  • Facebook App大概有20个不同的APK(Andriod应用程序包),主要基于API等级、屏幕大小和处理器架构。
  • 大小: 24.2 KB
  • 大小: 17.7 KB
来自: CSDN
0
0
评论 共 4 条 请登录后发表评论
4 楼 xiaoyanger 2014-09-25 13:53
没有这玩意,哪来延时
3 楼 dogg 2014-09-25 13:00
Facebook是神马东东
2 楼 yunzhu 2014-09-25 09:00
骗人!根本就没有Facebook这个东西!
1 楼 powerrliu 2014-09-25 08:46
骗人!根本就没有Facebook这个东西!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 使用ReactNative构建视频应用程序:流处理、编解码和WebSockets

    作者:禅与计算机程序设计艺术在本文中,我们将会使用React Native框架,结合Websockets协议,实现一个完整的基于WebRTC的视频直播应用。该项目旨在学习如何从零开始构建一个复杂且实用的视频应用程序。文章假定读者...

  • 不要轻易挑战用户的习惯,否则会被用户打脸!

    不要轻易挑战用户的习惯,否则会被用户打脸!除非你的改版、“创新”带来的用户价值足够大。

  • Facebook:AV1比x264和libvpx-VP9提升至少30%

    在AV1刚刚完成定稿后,Facebook公布了AV1的测试结果,测试结果显示AV1至少有30%以上的性能提升,这多少给了AV1的潜在用户一定的信心。Facebook还表示,将在内部继续推广AV1。LiveVideoStack对测试结果进行了翻译。文...

  • 系统设计(五)设计Facebook Messenger

    让我们设计一个像Facebook Messenger这样的即时通讯服务,用户可以通过网络和移动界面相互发送文本信息。 1.什么是Facebook Messenger? Facebook Messenger是一个软件应用程序,它为用户提供基于文本的即时消息服务...

  • 服务于所有手机、所有网络的安卓Facebook Lite是怎样打造出来的

    原文: How we built Facebook Lite for every Android phone and network ...很高兴如今这款应用已经揽收1亿的月活跃用户了。在不到9个月的时间里就发展出了1亿用户量,Facebook Lite当属发展速度最快的F...

  • GUI 应用程序架构的十年变迁:MVC、MVP、MVVM、Unidirectional、Clean

    随着现代浏览器的日渐流行,Web 以及混合开发技术的发展,大前端的概念日渐成为某种共识;而无论 iOS、Android、Web 这样的端开发还是 React Native、Weex 这样的跨端开发,其术不同而道相似。笔者在日前总结的泛...

  • 第七篇:Web架构及其演进

    本文将从计算机网络、网站开发、数据库、缓存、CDN、云计算、安全等方面,详细探讨Web架构的发展历史、基本概念、关键组件、典型应用场景以及其发展趋势与挑战。并结合实际案例,对Web架构进行完整而系统地阐述。张...

  • 物联网:体系结构、协议和应用

    前言:《物联网:体系结构、协议和应用》系列文章分为上中下三篇,文章来源于对印度新德里IIT德里计算机科学系Pallavi Sethi1andSmruti R. Sarangi等人在Journal of Electrical and Computer Engineering发表论文...

  • FACEBOOK的Workplace进军企业视频领域

    Facebook的Workplace进军企业视频领域Facebook的Workplace吸引了3M付费用户,并启动了Portal应用,以更广泛地推广视频(Facebook的流程协作办公工具)Slack的迅速崛起---导致最近使用其服务的企业付款突破了100,000...

  • Delphi 10.3 Web应用开发B/S框架介绍(二):IntraWeb 17

    导言:很多人想当然的认为Delphi不能开发B/S WEB应用,其实Delphi发展到现在10.3,一直在不断的进步,Delphi不但巩固了Windows本机软件开发领域的王者地位,更扩展到了安卓、IOS、Linux跨平台开发领域,成为APP快速...

  • facebook是什么鬼_Facebook Messenger Lite是Facebook Messenger的绝佳替代品

    facebook是什么鬼Facebook Messenger is a really popular communication app. It’s only real downside is that it’s incredibly bloated. On my Moto E4, it weighs in at just under 60MB, which makes sense—...

  • 如何在任何国家/地区的Android上安装Facebook Lite和Messenger Lite

    The standard Facebook app for Android—how can I put this delicately?—sucks. Not only is it probably draining more battery from your phone than most of your other apps, Facebook has gutted the ...

  • Designing Facebook Messenger

    让我们设计一个像Facebook Messenger这样的即时消息服务,用户可以通过web和移动界面相互发送文本消息。 1.什么是Facebook Messenger Facebook Messenger是一个软件应用程序,它为用户提供基于文本的即时消息服务。...

  • 2.凤凰架构:构建可靠的大型分布式系统 --- 访问远程服务

    远程服务将计算机的工作范围从单机扩展至网络,从本地延伸至远程,是构建分布式系统的首要基础。 2.1 远程服务调用 2.1.1 进程间通信 举例,一个正常的本地调用需要完成以下几个工作: 1.传递方法参数 ...

  • 【计算机网络】谢希仁笔记 应用层

    域名系统 DNS 域名系统概述 互联网的域名结构 域名服务器 文件传送协议 FTP 概述 FTP 的基本工作原理 简单文件传送协议 TFTP 远程终端协议 TELNET 万维网 WWW 万维网概述 统一资源定位符 URL 超文本传送...

  • 2012年7大移动策略:移动网站,平板Apps以及混合应用

    Monday: A Year From Now…”中的说法,在今年年初,像YouTube和Facebook这些主流的网站已经纷纷将关注的重点从传统的桌面应用逐渐转移到了移动应用上了! 2012年移动和平板开发将大有作为。这篇文章给出了7条建议...

  • 转:高并发高负载系统架构

    本文作者在Cernet做过拨号接入平台的搭建,而后在Yahoo3721负载搜索引擎前端平台开发... 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个...

  • Facebook和Instagram的经验:面向新兴市场改进Android开发

    在@Scale 2014大会上,来自Facebook和Instagram的工程师做了题为《Scaling Android Apps for Emerging Markets》的演讲,就如何面对不同的Android设备和不同的网络连接速度改进其应用的表现分享了相关经验。...

  • 【java毕业设计】智慧社区教育服务门户.zip

    有java环境就可以运行起来 ,zip里包含源码+论文+PPT, 系统设计与功能: 文档详细描述了系统的后台管理功能,包括系统管理模块、新闻资讯管理模块、公告管理模块、社区影院管理模块、会员上传下载管理模块以及留言管理模块。 系统管理模块:允许管理员重新设置密码,记录登录日志,确保系统安全。 新闻资讯管理模块:实现新闻资讯的添加、删除、修改,确保主页新闻部分始终显示最新的文章。 公告管理模块:类似于新闻资讯管理,但专注于主页公告的后台管理。 社区影院管理模块:管理所有视频的添加、删除、修改,包括影片名、导演、主演、片长等信息。 会员上传下载管理模块:审核与删除会员上传的文件。 留言管理模块:回复与删除所有留言,确保系统内的留言得到及时处理。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上

Global site tag (gtag.js) - Google Analytics