类INSTAGRAM服务的技术架构思考

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

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

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

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

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

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

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

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

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

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

5、翻墙问题

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

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

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

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

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

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

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

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

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

来源:http://www.yeeach.com

时间: 2024-09-10 02:13:18

类INSTAGRAM服务的技术架构思考的相关文章

医疗健康大数据服务平台技术架构

医疗健康大数据服务平台是一个包含多个业务系统.多个自身管理软件.是一系列软.硬件和人员.政策支持的综合系统体系,统一建设医疗健康云计算服务中心,集中存储居民医疗卫生信息和居民电子健康档案等数据,满足社会大众.医务工作者.各级卫生主管部门.第三方机构的应用需求. 医疗健康大数据服务平台总体架构如下图所示. 图 医疗健康大数据服务平台总体架构 如上图所示,医疗健康大数据服务平台分为资源层.服务层和展现层.其中层功能如下: 1.展现层 负责对用户提供医疗健康信息.以及分析与挖掘信息服务,支持4大类用户

浅析阿里数据技术架构(下)大规模分布式知识图谱

阿里数据要做的是:把数据真正打通,深度挖掘数据的价值,为业务创新应用提供数据决策基础和依据. 下面具体介绍我们在大规模分布式知识图谱上的技术实践. 为什么需要知识图谱? 大规模知识图谱抽象也是一种图计算.基于大规模分布式知识图谱做了哪些工作?我们为什么要做这样一件事情? 阿里巴巴的生态非常丰富,而丰富的业态背后给我们数据工作者带来的困难就是,我们常常需要接入各种数据,并将他们有效地管理和整合起来,传统的方法,我们可能需要花几个月,投入几十个人做这样一件事情,对数据进行打标. 但是,假设我们已经知

阿里沈询:阿里技术架构演变,及基于EDAS的敏捷服务开发与架构实践

8月30-31日20:00-21:30,一场别开生面的技术大会-- "蚂蚁金服&阿里云在线金融技术峰会"将在线举办.本次将聚焦数据库.应用架构.移动开发.机器学习等热门领域,帮助金融业技术开发者深入解析互联网应用的前沿应用与技术实践. 蚂蚁金服&阿里云在线金融技术峰会专题:https://yq.aliyun.com/activity/109 峰会统一报名链接:http://yq.aliyun.com/webinar/join/38 来自阿里巴巴的资深专家王晶昱(花名:沈

从小站到大站的技术架构优化之路-网站架构与前端服务性能优化

一.课程目的 2015年,5月的某天,正在上班,突然看线公司群里开始发出携程网访问500的信息,于是乎,大家小扯的一下,大家并没有想到后来发生的事情的事情会如此震惊,开始官方的微博确认问题为,正遭受攻击,但后来内部的技术人员泄漏出"数据库被物理删除!" 这个对于技术的人员来说,可以说是非常惊讶的消息,大家开始了各种疑问,怎么确定是数据库引起,作为一个大公司怎么会有这种问题产生,数据库作为底层核心,为什么恢复机制是那么薄弱. 陆续消息中,最后传出,由于运维人员的类似于自动化系统操作不当,

关于领域模型与技术架构的关系的思考

人类社会的一切事物都是来源于对造物主智慧的学习,人类本身是不会创造任何东西的. 外国新技术并不能作为软件架构的终极准则,因为老外也是人.我认为客观世界的架构应该是软件架构的唯一准则,换而言之,上帝也是一个架构师,而这个客观世界就是他的作品. 有这么完美的学习对象,为什么要舍本逐末呢? 就拿领域对象的设计来说,在客观世界中,人如果要做某件事情,比如扫地这个动作,扫地难道是人自己完成的吗?其实扫地是人借助扫帚这个工具完成的. 换而言之,领域对象的一些动作,也根本不属于他自己,如果你把这些动作硬要强加

请问,Java用何种技术架构编写服务端,能让VB客户端访问?

问题描述 各位大哥大姐,小弟菜鸟一只,只会点JAVA和VB.今日心血来潮,想向各位请教个问题.Java用何种技术架构编写服务端,能让VB客户端高效安全的访问?Webservice,COM+,CORBA?这些名词都听说过,可惜小弟才疏学浅,闻其名,却不知其意.请各位指教.非常谢谢. 解决方案 本帖最后由 skill_job 于 2011-07-16 01:22:45 编辑

基于微服务API级权限的技术架构

一般而言,企业内部一套成熟的权限系统,都是基于角色(Role)的 访问控制方法(RBAC – Role Based Access Control),即权限 (Permission)与角色相关联,用户(User)通过成为适当角色的成员而得到这 些角色的权限,权限包含资源(或者与操作组合方式相结合),最终实现权限控制 的目的. 背景 权限系统是根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源. 一般而言,企业内部一套成熟的权限系统,都是基于角色(Role)的访问控制方法(

解读数据传输DTS技术架构及最佳实践

摘要:8月24日,阿里云数据库技术峰会到来,本次技术峰会邀请到了阿里集团和阿里云数据库老司机们,为大家分享了一线数据库实践经验和技术干货.在本次峰会上,阿里巴巴高级技术专家付大超(千震)针对于云计算时代最好的数据传输产品阿里云DTS的架构设计.基本原理以及相关的应用场景进行了精彩分享.帮助大家了解了阿里是如何实现异地多活和异构多活的,以及通过DTS轻松实现迁移.双同同步.容灾.订阅的真实案例. 以下内容根据演讲嘉宾现场视频以及PPT整理而成. 本次分享的内容主要围绕以下四个部分: 一.DTS技术

OceanBase 1.0 分布式技术架构

OceanBase 1.0项目从2013年初开始做总体设计,2014年开始编码.测试,2015年底正式上线并无缝迁移部分集团MySQL业务,直到2016年中才正式上线蚂蚁核心业务,包括会员视图.花呗.账务,等等,最后"丝般柔顺"地通过了2016年双十一大考. 从技术架构的角度看,一个分布式数据库主要就是两个部分:一个部分是怎么做存储,怎么做事务:另外一个部分是怎么做查询.首先我们看第一个部分,主要是三个关键点:可扩展.高可用以及低成本,它们代表了OceanBase的核心技术优势. 分布