??? 當(dāng)下移動互聯(lián)網(wǎng)照片分享及輕博客類服務(wù)極度紅火。類Instagram的照片分享服務(wù),國外的服務(wù)包括Instagram、Color、Path、 Picplz、Foodspotting等;國內(nèi)的類Instagram包括推圖、圖釘、隨拍、丁仔、樂么樂么、冒泡拍拍等。而國外的輕博客類服務(wù)包括 Tumblr、Zpad、Posterous等,國內(nèi)的輕薄博客服務(wù)包括點(diǎn)點(diǎn)、推他等。
??? 除了對這些服務(wù)的產(chǎn)品及業(yè)務(wù)模式感興趣外,對后端的技術(shù)架構(gòu)也很感興趣。只不過即使像highscalability.com這樣專注架構(gòu)的網(wǎng)站對于此類新服務(wù)的技術(shù)架構(gòu)似乎沒有太多的描述,沒有太多可以參考的。
??? 此類服務(wù)在技術(shù)上主要涉及海量照片處理、客戶端與服務(wù)器端通信、與其他服務(wù)同步等,簡單畫個系統(tǒng)部署架構(gòu)圖。
?? 從技術(shù)架構(gòu)角度來看,這些服務(wù)需要處理如下一些典型技術(shù)挑戰(zhàn):
? 1、與其他SNS社區(qū)服務(wù)同步是采用客戶端同步還是服務(wù)器端同步?
?????? 由于現(xiàn)在Basic認(rèn)證接口逐漸被淘汰掉,像Twitter、新浪微博等大部分服務(wù)基本都采用oAuth接口,需要客戶端主動發(fā)起授權(quán)操作,不能由服務(wù)器端發(fā)起。
????? 除oAuth接口之外的接口如果采用客戶端同步的一些問題:
??????? 1)、如果要同步的SNS社區(qū)多,則客戶端要針對不同的SNS社區(qū)同步,效率不高,尤其是要占用較大的帶寬流量
??????? 2)、如果SNS社區(qū)的接口稍有變動,需要客戶端升級,很麻煩
??????? 3)、對Twitter這樣被G.F.W封鎖的賬戶,客戶端需要Fangqiang才能夠同步???????
??????? 結(jié)論:不采用客戶端同步方式。客戶端將相關(guān)請求傳遞給服務(wù)器,由服務(wù)器端來完成同步操作。
?? 2、由于類Instagram服務(wù),圖片是主要內(nèi)容形式。因此需要重點(diǎn)考慮圖片服務(wù)器的架構(gòu),尤其是海量圖片的情況。比較現(xiàn)實的方案可以參考
圖片服務(wù)器選型方案
,理想的方案可以參考借鑒
Facebook的haystack
。
??? 另外由于涉及大量的縮略圖處理,可以采用Gearman分布式計算框架+GraphicsMagick來做縮略圖的處理。
?? 3、由于涉及與相關(guān)SNS社區(qū)接口服務(wù)的同步,為保證系統(tǒng)的性能,應(yīng)當(dāng)將同步服務(wù)與核心服務(wù)分離開,核心服務(wù)在接收到客戶端請求后,將需要同步的數(shù)據(jù)通過消息隊列方式傳遞給同步服務(wù)器,由同步服務(wù)器異步完成相關(guān)接口服務(wù)的同步。
?? 4、由于是內(nèi)容導(dǎo)向的服務(wù),因此可以采用Redis等NOSQL來存放oAuth Access Token、微博、用戶注冊信息等需要持久化的數(shù)據(jù)
?? 5、fang qiang問題
?????? 由于這些服務(wù)一般都提供與現(xiàn)有各種SNS社區(qū)服務(wù)同步的功能。在技術(shù)上相對容易,只需要一個一個搞定各服務(wù)提供商所提供的接口,即使現(xiàn)成的接口不完善,也可以通過抓接口報文模擬搞定。????
?????? 但如果需要將用戶上傳的圖片與Twitter、Facebook等國外服務(wù)的賬號同步,由于這些服務(wù)被墻掉了,如果服務(wù)器本身放在國內(nèi),可以在國外放一臺 同步代理服務(wù)器來與國內(nèi)服務(wù)器同步,然后由這臺服務(wù)器完成與國外服務(wù)的同步。如果服務(wù)器放在國外,倒是相對省心,但也要考慮在服務(wù)有點(diǎn)知名度后,服務(wù)本身 被墻掉的可能性。
?? 6、客戶端與服務(wù)器端間通信相關(guān)技術(shù)實現(xiàn)
???? 客戶端與服務(wù)器端的通信協(xié)議數(shù)據(jù)壓縮傳輸;
???? 客戶端對諸如照片預(yù)處理(例如適當(dāng)降低分辨率)、多線程并發(fā)分片傳輸、斷點(diǎn)續(xù)傳處理;
???? 客戶端本地存儲、緩存,對離線狀態(tài)下編輯數(shù)據(jù)與服務(wù)器端同步處理問題;
???? 客戶端并發(fā)請求圖片服務(wù)器、業(yè)務(wù)服務(wù)器(不同域名),提高并發(fā)處理效率
? 7、搜索引擎服務(wù)除了要對文本內(nèi)容搜索外,還涉及地理位置信息的搜索、實時搜索問題,而Lucene和Solr對此支持相對于Sphinx等搜索引擎更好,因此采用Solr或Lucene。
??? 服務(wù)本身如果要對外提供接口服務(wù),倒是可以考慮PubSubHubBub協(xié)議。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
