`

类Instagram服务的技术架构思考

阅读更多

    当下移动互联网照片分享及轻博客类服务极度红火。类Instagram的照片分享服务,国外的服务包括Instagram、Color、Path、 Picplz、Foodspotting等;国内的类Instagram包括推图、图钉、随拍、丁仔、乐么乐么、冒泡拍拍等。而国外的轻博客类服务包括 Tumblr、Zpad、Posterous等,国内的轻薄博客服务包括点点、推他等。

    除了对这些服务的产品及业务模式感兴趣外,对后端的技术架构也很感兴趣。只不过即使像highscalability.com这样专注架构的网站对于此类新服务的技术架构似乎没有太多的描述,没有太多可以参考的。

    此类服务在技术上主要涉及海量照片处理、客户端与服务器端通信、与其他服务同步等,简单画个系统部署架构图。

instagram,技术架构,移动互联网

   从技术架构角度来看,这些服务需要处理如下一些典型技术挑战:

  1、与其他SNS社区服务同步是采用客户端同步还是服务器端同步?

       由于现在Basic认证接口逐渐被淘汰掉,像Twitter、新浪微博等大部分服务基本都采用oAuth接口,需要客户端主动发起授权操作,不能由服务器端发起。

      除oAuth接口之外的接口如果采用客户端同步的一些问题:
        1)、如果要同步的SNS社区多,则客户端要针对不同的SNS社区同步,效率不高,尤其是要占用较大的带宽流量
        2)、如果SNS社区的接口稍有变动,需要客户端升级,很麻烦
        3)、对Twitter这样被G.F.W封锁的账户,客户端需要Fangqiang才能够同步       
        结论:不采用客户端同步方式。客户端将相关请求传递给服务器,由服务器端来完成同步操作。
   2、由于类Instagram服务,图片是主要内容形式。因此需要重点考虑图片服务器的架构,尤其是海量图片的情况。比较现实的方案可以参考图片服务器选型方案 ,理想的方案可以参考借鉴Facebook的haystack

    另外由于涉及大量的缩略图处理,可以采用Gearman分布式计算框架+GraphicsMagick来做缩略图的处理。

   3、由于涉及与相关SNS社区接口服务的同步,为保证系统的性能,应当将同步服务与核心服务分离开,核心服务在接收到客户端请求后,将需要同步的数据通过消息队列方式传递给同步服务器,由同步服务器异步完成相关接口服务的同步。

   4、由于是内容导向的服务,因此可以采用Redis等NOSQL来存放oAuth Access Token、微博、用户注册信息等需要持久化的数据

   5、fang qiang问题

       由于这些服务一般都提供与现有各种SNS社区服务同步的功能。在技术上相对容易,只需要一个一个搞定各服务提供商所提供的接口,即使现成的接口不完善,也可以通过抓接口报文模拟搞定。    

       但如果需要将用户上传的图片与Twitter、Facebook等国外服务的账号同步,由于这些服务被墙掉了,如果服务器本身放在国内,可以在国外放一台 同步代理服务器来与国内服务器同步,然后由这台服务器完成与国外服务的同步。如果服务器放在国外,倒是相对省心,但也要考虑在服务有点知名度后,服务本身 被墙掉的可能性。

   6、客户端与服务器端间通信相关技术实现

     客户端与服务器端的通信协议数据压缩传输;

     客户端对诸如照片预处理(例如适当降低分辨率)、多线程并发分片传输、断点续传处理;

     客户端本地存储、缓存,对离线状态下编辑数据与服务器端同步处理问题;

     客户端并发请求图片服务器、业务服务器(不同域名),提高并发处理效率

  7、搜索引擎服务除了要对文本内容搜索外,还涉及地理位置信息的搜索、实时搜索问题,而Lucene和Solr对此支持相对于Sphinx等搜索引擎更好,因此采用Solr或Lucene。

    服务本身如果要对外提供接口服务,倒是可以考虑PubSubHubBub协议。

分享到:
评论

相关推荐

    ios_Instagram客户端

    学习Swift的基础语法,包括变量、常量、函数、控制流、枚举、类和结构体等,是构建Instagram客户端的基石。 在高仿Instagram客户端的过程中,你会接触到UIKit框架,它是iOS应用界面构建的主要工具。UIKit包含了一...

    Instagram图片下载 V1.0 绿色版

    Instagram图片下载V1.0绿色版是一款专为Instagram平台设计的工具,旨在帮助用户方便地获取Instagram上的图片资源。在互联网日益发达的今天,社交媒体平台如Instagram成为了分享和浏览图片的重要场所,但平台通常对...

    Scaling-Instagram.pdf

    ### 分布式系统下的...通过以上知识点的总结,我们可以看到,Instagram的成功不仅仅是产品创新的结果,更是在技术和架构层面不断探索与优化的过程。对于任何正在快速成长的初创企业而言,这些都是宝贵的参考和借鉴。

    Instagram-Helper,.zip

    开发者可以通过研究这些代码来理解如何与Instagram API进行交互,同时也可以直接将这些类集成到他们的项目中。 为了确保在Android Gingerbread及更高版本上运行,`Instagram-Helper`可能采用了兼容库或设计模式,以...

    instagram.apk

    instagram软件 apk

    WEB SERVICE EFFICIENCY AT INSTAGRAM.pdf

    Instagram的架构包括客户端、负载均衡器、Web服务器、后端数据库和服务。Web服务器主要由uWSGI和Python(配合Django框架)构成,处理用户请求并与MySQL、Cassandra、RabbitMQ+Celery(用于异步任务)以及基于Thrift...

    Instagram 6.12.2

    类别 摄影类 语言 中文 (23 更多) 作者 Instagram 大小 10.29MB 描述 Instagram,iPhone上最著名的照片抓拍、编辑工具之一。它与众不同,为用户创建了一个完整的社交网络。现在它终于抵达了安卓平台,让所有...

    高仿Instagram页面效果android特效.rar

    在Android开发中,模仿流行的移动应用,如Instagram,是一种常见的学习和实践技术。"高仿Instagram页面效果android特效.rar"这个资源包含了一组尝试重现Instagram界面和交互效果的代码。以下是一些关键知识点的详细...

    instagram克隆-源码

    Instagram克隆源码项目是一个基于JavaScript的Web应用开发实例,旨在构建一个类似于Instagram的功能平台。这个项目可以帮助开发者深入了解社交媒体应用的构建过程,以及如何利用JavaScript和相关技术来实现这一目标...

    Laravel开发-instagram

    4. **使用Laravel的Instagram门面**:Laravel的门面提供了一种简单的方式来调用服务容器中的服务。通过`use Instagram;`引入门面,然后就可以通过`Instagram::`调用来执行各种API操作,如获取用户信息、发布帖子等。...

    2019年Instagram调查报告(英文)-Instagram

    2019年Instagram调查报告(英文)-Instagram,2019年Instagram调查报告(英文)-Instagram

    Laravel开发-laravel-instagram-api

    接着,在`app/Providers/InstagramApiServiceProvider.php`中创建服务提供者,并在`register`方法中绑定Instagram API类到容器: ```php public function register() { $this->app->singleton('InstagramApi', ...

    549654407452296Instagram.apk

    549654407452296Instagram.apk

    instagram mac版

    Instagram Mac版是一款专为苹果Mac用户设计的应用程序,允许用户在桌面环境中享受Instagram的功能。这款应用将社交媒体体验扩展到了电脑平台,让用户可以更方便地浏览、编辑和分享照片与视频,同时保持与移动设备上...

    Instagram登陆协议.rar

    Instagram 2020.07.03 登录协议,10版本,有任何问题请私聊

    Python爬虫爬取 Instagram 博主照片视频-Instagram_crawler.zip

    在本项目中,我们将探讨如何使用Python爬虫技术来抓取Instagram博主的照片和视频。Instagram_crawler是一个Python脚本集合,旨在帮助用户自动化地从Instagram上下载特定用户的媒体内容,包括图片和视频。这个项目...

    instagram APP ANDROID

    instagram APP ANDROID

    Instagram图片索引InstaIndex.zip

    InstaIndex 是一个简单的管道,结合了 Clarifai 的图像 识别/深度学习 API ,以及 Algolia 的搜索作为服务 API ,可以让你直观地索引你的 Instagram 的图片,随时找到它。前提要求:在 http://www.clarifai.com/api...

    用于下载Instagram故事的漂亮Flutter应用程序

    在这个项目中,开发者可能利用了Flutter的Widget系统来构建用户界面,使用StatefulWidget和State类来管理状态,以及Navigator来处理页面间的导航。 2. **网络请求与API接口**:为了获取Instagram故事,开发者需要...

    类似instagram图片分享社区数据库设计

    综上所述,设计一个类似Instagram的图片分享社区数据库是一项涉及多方面技术和策略的任务,从基础架构到性能优化,再到用户体验,每个环节都需要精心设计和实施。通过“camera-jiegou.sql”和“camera-all.sql”这两...

Global site tag (gtag.js) - Google Analytics