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) 服務化。