社交App系統架構--自己親手寫的App系統(含github源碼)

社交App系統架構

目前社交類應用有App,小程序,網站,微信公衆號等,其中最普遍有效的客戶端還是App。
本人利用空餘時間開發了一款Android版App–星座空間(英文名star-zone)

源碼在開源到了github上https://github.com/bootsrc/star-zone
Android客戶端https://github.com/bootsrc/star-zone-android

項目地址是星座空間App

星座空間圖標

大家可以下載後用下用用看。

技術選型

下面列舉技術棧,並說明選擇的原因:
軟件分爲以下幾塊:(全部都是我一個人開發的,很辛苦的_,全棧工程師+架構師)
1.Android
採用原生Android開發

很多人以爲用React Native開發App就不需要處理兼容性問題。其實使用React Native開發,也會遇到類似於原生開發裏的gradle jar包依賴的衝突的問題。 而且,比如需要用到一些第三方廠商的硬件驅動程序jni等,或者原生android的庫。 這種情況下React Native來調用這些庫,就異常艱難。以國際大廠Airbnb爲例,該公司曾是比較早採用React Native來在生產環境開發App的公司,極力推進React Native。結果後來還是放棄了。
Airbnb 在 Medium 上發博文宣佈,“由於許多技術上和組織上的問題,我們決定放棄 React Native,將所有精力投入到原生應用上。”
另外一個原因:我是一個Java架構師,對Java語言比較熟悉,也會Android開發,於是就採用了原生開發

2.後臺服務
基於Java,Spring Boot, Spring Cloud
數據庫MySQL
緩存Redis

3.後臺管理網站(純靜態網站)
做了前後端分離,動態和靜態分離,靜態網站放在nginx上,可以應對高併發訪問
前端使用ES6語法,
框架採用vue.js,
插件使用babel,
樣式使用element-ui

4.App的推廣官網(純靜態網站)
做了前後端分離,動態和靜態分離,靜態網站放在nginx上,可以應對高併發訪問

總體架構

  1. 後臺總體架構
    Android通過網絡,到達服務器後,經過nginx反向代理到後臺服務。
    調用後臺接口的時候, 一部分接口是進行了權限驗證的,權限驗證使用userId+token
    參考我的另外一個框架fpassport

    點擊後可以訪問github

    其中使用了Redis存放userId和token的對應關係。提高了系統的響應速度。
    由於app裏後面會加上電商功能,對於下單功能。訂單數量是商品數量的很多倍。
    採用了分表的架構。分表原理採用一致性Hash。

  2. 微服務採用了Spring Cloud
    Spring Cloud是採用HTTP協議, Dubbo採用RPC方案,採用TCP協議通信。
    性能方面Spring Cloud略差一點。 但是影響不大。兩種框架各有利弊。我採用了自己熟悉的Spring Cloud

  3. 數據庫分表操作
    基於一致性hash,見github源碼

  4. 前後端分離,動靜分離
    Java動態網站比較喫內存,操作系統允許的線程數也是一定的。 最多幾千個線程。
    而且一個線程一般就要佔用512KB的內存。 光這些HTTP連接就至少佔用1G內存。
    還有其他的CPU計算,也要佔用1G以上的內存。

動靜分離後。 頁面的每次請求不需要經過後端渲染,減少了Java Http連接數,減小了內存開銷。
nginx部署靜態網站後。不做優化,nginx本身就能承受上萬個併發連接,很適合做靜態資源的服務。

  1. 推送服務,即時通訊
    使用了小米的推送服務,我自己也自主研發了一個推送服務基於netty,項目地址
    ttps://github.com/liushaoming/fpush

5.前端方案
vue,雙向數據綁定,提高編程效率。
element-ui界面簡潔,使用簡單,適合後臺管理系統開發,跟vue結合有天然的便利。
有餓了麼公司強大後盾。
使用es6或者js都行。

上班比較忙。暫時寫這麼多。
本文後面還會繼續編輯更新。把更多內容分享給大家。

項目地址是星座空間App

源碼在開源到了github上https://github.com/bootsrc/star-zone
Android客戶端https://github.com/bootsrc/star-zone-android

個人主頁是appjishu.com

加羣討論源碼
加羣討論源碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章