【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Facebook 如何针对新兴市场设计安卓应用

  • 2016-03-22
  • 本文字数:591 字

    阅读完需:约 2 分钟

事实上,移动技术已经在新兴市场风生水起了,新兴和发达国家之间的移动领域有着巨大的差异。特别是 3G 和 4G 移动网络尚未在新兴国家得到广泛地应用,甚至即使有 3G 的连接,也是时断时续的。此外,3G 网络在很多情况下对于大多数人来说都太昂贵了。另一方面,Gautam Roy 曾写道,全球 96% 的人可以连接到 2G 网络,全球有一半以上的人口在使用它。Facebook 于是在此背景下定义了自己的目标,即:

  • 很小的应用足迹(在 1MB APK 以内);
  • 较低的数据使用率并支持 2G 网络;
  • 支持较老的、 2009 年代的设备

这个主要的架构决定 Facebook 引擎要用一个代理服务器,而安卓应用实现为瘦客户端,如下图所示:

这个架构的设计使得该服务器要承担繁重的工作,Roy 说,通过把来自于 Facebook 后端服务的数据抓取出来并打包给客户端使用。这个客户端应用本身设计成一种虚拟机,提供摄像头、SQL lite 和 UI 引擎之类 OS 资源的访问。此外,这个客户端依赖于本地缓存,以避免针对同一事项发起多次请求。有趣的是,Facebook 的工程师们为了取代 HTTPS 在 TLS 层上设计了它们自定义的信息协议,以便将来减少数据的使用以及削减建立安全连接所需的时间。

由于这些设计选择,Roy 总结说,Facebook 工程师们在登录、启动、摘取刷新和图像加载上实现了一流的性能,并且,即使在低性能和时断时续的网络上也能确保正确性。

查看英文原文: How Facebook Designed its Android App for Emerging Markets

2016-03-22 19:001348

评论

发布
暂无评论
发现更多内容

情报合成研判系统开发,智慧警务解决方案

t13823115967

智慧公安

使用JPA实现DDD持久化-O/R映射元数据-特殊属性映射:ID、Version和Transient

编程道与术

Java hibernate 编程 mybatis jpa

英特尔携手德晟达、游密,发布云会议终端解决方案,打造视听新体验

E科讯

JVM调优不知道怎么回答,阿里总结四大模块,学不会就背过来

小Q

Java 学习 架构 面试 JVM

《css大法》之使用伪元素实现超实用的图标库(附源码)

徐小夕

CSS css3 大前端 CSS小技巧

operator-sdk & kubebuilder

QiLab

k8s operator-sdk kubebuilder crd

甲方日常 65

句子

工作 随笔杂谈 日常

网咯请求中的 connectTimeout 和 soTimeout

不在调上

没有它你的DevOps是玩不转的,你信不?

华为云开发者联盟

容器 DevOps 微服务

如何预防勒索攻击事件?这份安全自查指南请查收

京东科技开发者

数据安全 数据加密 系统安全

原创 | 使用JPA实现DDD持久化-O/R映射元数据:类级映射-实体和值对象

编程道与术

Java hibernate 编程 mybatis jpa

开发实践丨用小熊派STM32开发板模拟自动售货机

华为云开发者联盟

物联网 小熊派 开发板

关于Kubernetes和Docker关系的八个问题

杨明越

Mybatis 中xml和注解映射,这次终于搞明白了

田维常

mybatis

Java架构速成笔记:七大专题,1425页考点,挑战P8岗

Java架构追梦

Java 学习 面试 java架构

话题讨论 | 立一个近期的flag,你会想到什么?

xcbeyond

话题讨论

安装MySQL后,需要调整的10个性能配置项

Simon

MySQL percona server

P8架构挑战:七大专题1425页考点,你能成功吗?

小Q

Java 学习 程序员 架构 面试

话题讨论 | 选择做一个程序员,你后悔过吗?

xcbeyond

话题讨论

《算法导论》.pdf

田维常

不满意社区的轮子,我们自创了一套 React Hooks 风格的数据加载方案

LeanCloud

API React Hooks

时序数据库DolphinDB与Druid的对比测试

DolphinDB

数据分析 时序数据库 Druid 数据库选择 DolphinDB

北京奥森小景

小马哥

摄影 美景 奥森 28天写作

原创 | 使用JPA实现DDD持久化-领域模型:对象的世界

编程道与术

Java hibernate 编程 mybatis jpa

全球熵ETV系统APP软件开发

系统开发

话题讨论 | 30 张图解高并发服务模型你必须这些

程序员柠檬

话题讨论

原创 | 使用JPA实现DDD持久化-O/R映射元数据:映射注解分组

编程道与术

Java hibernate 编程 mybatis jpa

业务中台建设-数据

孝鹏

架构 中台 数据 赋能

一文教你看懂缓存穿透、击穿、雪崩、降级等异常

鄙人薛某

Java 缓存 后端 缓存击穿 缓存雪崩

人脸识别是如何实现的

anyRTC开发者

ios 音视频 WebRTC 人脸识别 安卓

区块链司法存证应用落地应用解决方案

t13823115967

区块链落地开发

Facebook如何针对新兴市场设计安卓应用_移动_Sergio De Simone_InfoQ精选文章