出家如初,成佛有余

类Instagram服务的技术架构思考

Posted in 技术相关 by chuanliang on 2011/05/22

    当下移动互联网照片分享及轻博客类服务极度红火。类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封锁的账户,客户端需要翻墙才能够同步       
        结论:不采用客户端同步方式。客户端将相关请求传递给服务器,由服务器端来完成同步操作。
   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协议。

 

移动问答服务思考

Posted in 移动互联网 by chuanliang on 2011/05/14

    社会化问答服务现在很火,国外的Quora、Stackexchange系列站点,以及国内Quora山寨版本的知乎都受到了大家的追捧。以 StackOverflow为例,在Google搜索技术相关的问题,StackOverflow上的回答经常处于Google搜索结果的第一位,回答的质量颇高。

    如果说Yahoo Answer、百度知道这类早期的问答服务为问答服务的1.0版本的话,Quora、StackOverflow这样的问答服务可以称之为问答服务的2.0版本,相对于1.0版本的问答服务的最大区别为其社会化属性。

    在移动互联网时代,由于移动互联网移动性、实时性等特点,以及像位置服务、照相等基础应用的流行,用户问答服务的需求更加旺盛。想象一个简单的场景:和朋友到某个陌生的地方旅游,大家的第一需求就是:这附近有什么好吃的、好玩的,当地的文化是怎样的。

   相对于互联网,移动互联网的SOLOMO=Social+Location+Mobile特点,决定了移动问答服务必将与Quora这样的社会化问答服务在业务模式上有很多独特的地方。个人对移动问答服务的未来也很看好。

1、关于移动问答服务的初步思考

移动互联网,无线互联网,移动问答服务,社会化问答服务,Quora,问答服务

2、国外一些移动问答服务

http://www.opinionaided.com/

http://www.crowdbeacon.com/

http://loqly.me/

http://someoneask.com/

http://www.mahalo.com/

http://www.chacha.com/

产品的取舍之道

Posted in 管理杂思, 产品管理 by chuanliang on 2011/05/07

    经常有人给我说或是我自己给别人说:

  • 某某现在极其火爆的产品所做的东西我xx年前就想到了,只不过因为xx原因未做成;
  • 某某现在极其火爆的产品所做的东西我xx年前就已经做过了,只不过因为xx原因未成功;

   再穿越时空回退到曾经的那个时刻,一些场景如下:

  • 我的确的xx年前想到过或曾经实现过某个产品的某个核心功能,但后来因为有更好的创意,于是乎放弃了这个创意,没有再去持续完善那功能;
  • 我的确的xx年前想到过或曾经实现过某个产品的某个核心功能,但这个功能只是作为我当时要做的产品的所有功能中的一个功能而已,并非核心的业务功能;
  • 我的确的xx年前想到过或曾经实现过某个产品的某个核心功能,这个功能也是我要做产品的核心功能之一,只不过我们要“下一盘更大的棋”,这功能只是我们伟大布局中的一个环节而已;

    当然还有其他一些场景,与主题关系不大,暂且不表。

   再穿越时空回到当下,以上的场景仍然在不断地重复发生,于是乎别人的成功故事不停流传于江湖,但我们始终在成功边缘徘徊。

    除了常见的战略问题、管理问题、执行力问题、运气问题等原因外,对于产品的取舍之道很大程度上影响了我们产品的成功。我们经常只是看见了机会和创意,而忘记了我们的抉择、我们的抉择后的努力以及我们抉择所影响的结局。

    其实回顾一个成功产品的历程,从产品战略->产品规划->产品设计->产品开发->产品运营的每一个阶段,每一个阶段都有无穷的诱惑、无穷的机会、无穷的抉择,可以说每一个成功产品的故事无不是关于取舍的故事。没有一个伟大产品是命中注定的, 没有哪一个伟大产品不是经过无数次的调整后才最终奔向成功,即使是同样伟大的创意,在产品生命周期任何一个阶段不同的取舍最终也会导致了不同的结果。从这一点来说,创意并不重要,重要的是在创意执行过程中的取舍和对取舍的坚持。

    通往成功的产品的道路正如去往印度的朝圣之路,可能有千百条道路可以通向成功,也可以走向失败。不管选择哪一条路,在这过程中有千百个岔路口需要抉择,有千百种诱惑让我们驻足,有千百种苦难让我们放弃。但当到达成功的终点后再次回眸观看来时的路,我们每一次选择结果形成了一条属于我们自己通往成功的道路,这条成功道路是独一无二的,只属于我们自己。因为每一次取舍都只是基于我们当时的智慧,所谓的成功只是后来的传记中的传说而已。

    对于取舍之道的道理:“所谓舍得,有舍才有得”,基本上地球人都知道。在别人面临重大抉择时候,作为局外人的我们都像哲人一样劝别人说:要学会做减法;要学会取舍。但轮到我们自己时候,我们始终无法超然于简单的取舍之间。

   我们怕没有盈利模式做了无用、赚不了大钱,我们怕没有想清楚于是始终在规划、始终在设想而没有付诸行动,我们相信“简单是美,简单是力量”但又怕产品功能太单一无人使用,我们怕产品功能不够完善于是不断打磨而没有快速发布、在运营中完善。。。

    影响我们进行取舍的因素有很多,最核心的原因莫过于:我们缺少取舍的智慧。这里的智慧不只是指我们对所做产品必须具备的知识和能力,也不只是指基于对行业趋势了如指掌、对当下用户需求深刻了解下对全局游刃有余的把控,更主要的是指我们对于各种外在诱惑、各种怕及我们内心无穷欲望的把控、对人性深刻的洞察。如果要更加准确的方式来描述取舍的智慧,可以用佛法的“智慧”来阐释。一直觉得乔布斯之所为与众不同,与其1974年去印度朝圣及对禅的参透有莫大关系。

   对佛法和禅了解越多,越觉得每一个产品经理都应当学习一下禅,这样我们才能够学会把控我们内心无穷的欲望,学会面对生命中未知,更加深刻了解人性的本质。我们经常遗忘了对自己欲望的控制,经常从一个欲望奔向另外一个新的欲望,最终因为我们布局的棋太大了,大到超出了我们能力范围,大到最终我们迷失了方向。

 

Technorati 标签: ,,