APP後臺架構開發實踐筆記

1 App後臺入門數據庫

1.1 App後臺的功能緩存

(1)遠程存儲數據;安全

(2)消息中轉。服務器

1.2 App後臺架構網絡

架構設計的流程數據結構

(1) 根據App的設計,梳理出App的業務流程;架構

(2) 把每一個業務流程可能會遇到的問題整理出來;負載均衡

(3) 根據整理出來的問題,探討可行的技術解決方案;運維

(4) 把全部的技術解決方案有機融合,就是一個App後臺的初步架構。分佈式

架構設計的特色

(1) 架構是和業務緊密相關;

(2) 架構的演變是由業務驅動;

(3) 架構不是爲了炫耀技術。

1.3 App和App後臺的通訊

(1) 用HTTP協議仍是私有協議;

(2) 用長鏈接仍是短鏈接;

(3) 通訊數據格式(JSON、XML)

1.4 選擇服務器

(1) 傳統IDC;

(2) 雲服務器。

1.5 選擇開發語言

(1) 不一樣語言有其擅長的業務場景和性能特性;

(2) 考慮開發效率和運行效率;

(3) 同一個項目不一樣業務邏輯能夠用不一樣語言實現。

1.6 敏捷開發

(1) Sprint計劃會議;

(2) 迭代開發;

(3) 每日例會;

(4) 評審會議;

(5) 回顧會議;

(6) 及時反饋。

2 App後臺基礎技術

2.1 從業務邏輯提煉API接口

從業務邏輯到提煉API可分爲下面6個階段:
(1) 業務邏輯思惟導圖;

         根據需求抽象出業務邏輯。

(2) 功能-業務邏輯思惟導圖;

         支撐業務邏輯的功能模塊,

(3) 基本功能模塊關係;

         功能模塊設計;

(4) 功能模塊設計UML;

(5) 設計API;

(6) 編寫API文檔。

         Swagger-UI在線API測試文檔,測試驅動開發(TDD)。

2.2 設計API的要點

(1) 根據對象設計API;

(2) API命名規範;

(3) API安全性;

(4) API返回數據;

(5) 圖片處理方式;

(6) 返回的提示信息;

(7) 在線API測試文檔;

(8) API版本升級。

2.3 選擇合適的數據庫產品

(1) Redis、MongoDB、MySQL

2.4 選擇消息隊列產品

(1) 消息隊列通常都包含3個角色:隊列服務端、隊列生產者、隊列消費者;

(2) 常見消息隊列產品,RabbitMQ、Redis、ZeroMQ、ActiveMQ、RocketMQ。

2.5 分佈式服務

(1) 遠程服務,REST、RPC。

2.6 搜索技術

(1) 開源搜索項目,Lucene、Solr、ElasticSearch、Sphinx、CoreSeek。

2.7 定時任務

(1) Linux定製任務Crontab;

(2) Java Quartz;

(3) Python APScheduler;

3 App後臺核心技術

3.1 用戶驗證方案

(1) 使用HTTPS協議;

(2) 使用密鑰+令牌。

3.2 通訊安全

(1) URL簽名;

(2) AES對稱加密;

3.3 短信服務

(1) 選擇短信平臺;

3.4 高效更新數據

(1) 內容的推拉;

(2) 增量更新。

3.5 圖片處理

(1) APP本地緩存圖片;

(2) 不一樣尺寸圖片動態生成。

3.6 視頻處理

(1) FFmpeg。

3.7 資源文件

(1) Android APK文件,經過Android-APKtool獲取文件的基本信息;

(2) iOS IPA文件。

3.8 文件系統

(1) 雲存儲,CDN;

(2) 分佈式文件系統。

3.9 ELK日誌分析平臺

(1) Logstash、ElasticSearch、Kibana。

3.10 Docker容器

(1) Docker構建一致的開發環境;

4 App後臺運維

4.1 Linux,App後臺應用最普遍的系統

(1) 經常使用命令,top、ps、netstat、lsof、traceroute

4.2 Nginx,App後臺HTTP服務的利器

(1) HTTP服務;

(2) 負載均衡。

4.3 MySQL,App後臺最經常使用的數據庫

(1) 存儲引擎,MyISAM、InnoDB;

(2) 索引;

(3) 分庫分表,MyCat。

4.4 Redis,App後臺高性能的緩存系統

(1) 經常使用數據結構;

(2) 集羣,Twemproxy,Codis;

(3) 持久化。

4.5 MongoDB,App後臺新興的數據庫

(1) 高可用集羣;

(2) LBS。

5 App後臺架構剖析

5.1 聊天App後臺架構

(1) 移動互聯網的網絡特性,弱網絡性、對流量敏感;

(2) 協議,XMPP、MQTT、ActivitySync、TCP自定義;

(3) 總體架構,主要包括鏈接層、業務層、數據層;

(4) 消息推拉模式;

(5) 數據庫架構,單機部署、讀寫分離、分表分庫;

(6) 緩存架構,單臺緩存、分佈式緩存、主從緩存。

5.2 LBS App後臺架構

(1) 地理座標,GPS、基站、AGPS(GPS+基站結合)、WiFi定位;

(2) 基於MongoDB;

(3) 推送服務。

6 App後臺架構的演進

6.1 架構的核心要素

         軟件架構是有關軟件總體結構與組件的抽象描述,用於指導大型軟件系統各個方面的設計。App後臺架構能夠定義爲由App後臺各個組件的功能描述、相互關係構成的總體系統。App後臺架構的核心要素:

(1) 高性能;

(2) 高可用;

(3) 可伸縮;

(4) 可擴展

(5) 安全性。

6.2 架構選型的要點

(1) 用成熟穩定的開源軟件;

(2) 儘量使用雲服務。

6.3 架構的演進

(1) 單機部署;

(2) 分佈式部署;

(3) 服務化。

相關文章
相關標籤/搜索