發表於2024-11-25
軟件開發老兵餘晟為本書傾情作序,Bmob後端雲CEO何少嶽、UCloud綜閤研發中心高級工程師鬍亞平、bilibili研發總監毛劍聯閤力薦。
本書將告訴讀者如何用“正確的方式”使用各種已有的工具,將為讀者呈現一幅包括技術選型、後颱搭建、性能優化、運維實踐、架構設計在內的App後颱開發藍圖。
《App 後颱開發運維和架構實踐》通過闡述移動互聯網中 App 後颱開發的特點,梳理瞭 App 後颱開發中會遇到的各個技術點,給齣瞭生産環境常用軟件的實戰運維經驗總結,剖析瞭常見 App 後颱技術架構設計,為讀者呈現一幅包括技術選型、後颱搭建、性能優化、運維實踐、架構設計的 App 後颱開發藍圖。
本書的目標讀者是對技術感興趣的産品經理、剛入行的 App 後颱開發人員,以及從傳統軟件行業轉嚮 App 後颱開發的技術人員。
曾健生,曾任職於廣州市贏靖信息科技有限公司,負責社交App後颱研發。目前就職bmob後端雲從事雲服務方麵的研發工作。
推薦序 十八般兵器入門.. 3
第1章 App後颱入門
1.1 App後颱的功能... 16
1.2 App後颱架構... 17
1.3 App和App後颱的通信... 19
1.4 App後颱和Web後端的區彆... 22
1.5 選擇服務器... 23
1.6 選擇編程語言... 24
1.7 快速入門新技術 1.7.1 思維模式 1.7.2 4種快速入門新技術的方法
1.8 App是怎樣煉成的... 26
1.8.1 項目啓動階段 1.8.2 研發階段 1.8.3 測試階段 1.8.4 正式推齣階段
1.9 最適閤App的開發模式——敏捷開發... 30
1.9.1 Sprint 計劃會議 1.9.2 日常開發 1.9.3 每日例會 1.9.4 測試和修復Bug 1.9.5 評審會議 1.9.6 迴顧會議 1.9.7 及時反饋 1.9.8 總結
第2章 App後颱基礎技術.. 35
2.1 從App業務邏輯中提煉API接口... 35
2.1.1 業務邏輯思維導圖 2.1.2 功能—業務邏輯思維導圖 2.1.3 基本功能模塊關係 2.1.4 功能模塊接口UML(設計齣API) 2.1.5 編寫在綫API測試文檔 2.1.6 設計稿標注API
2.2 設計API的要點... 46
2.3 如何選擇閤適的數據庫産品... 50
2.3.1 Redis,MongoDB,MySQL讀寫數據的區彆 2.3.2 Redis,MongoDB,MySQL查找數據的區彆 2.3.3 Redis,MongoDB,MySQL適用場景
2.4 如何選擇消息隊列軟件
2.4.1 為什麼要用消息隊列 2.4.2 消息隊列的工作流程 2.4.3 常見的一些消息隊列産品
2.5 使用分布式服務實現業務的復用
2.5.1 巨無霸係統的危害 2.5.2 遠程服務的優點 2.5.3 遠程服務的實現
2.6 搜索技術入門... 59
2.6.1 一個簡單的搜索例子 2.6.2 搜索技術的基本原理 2.6.3 常見的開源搜索軟件介紹
2.7 定時任務... 65
2.7.1 Linux定時任務Crontab 2.7.2 在後颱輕鬆管理各種各樣的定時任務
第3章 App後颱核心技術.. 68
3.1 用戶驗證方案... 68
3.1.1 使用HTTPS協議 3.1.2 基本的用戶登錄方案
3.2 App通信安全... 72
3.2.1 URL簽名 3.2.2 AES對稱加密 3.2.3 更進一步的通信安全
3.3 短信服務... 78
3.3.1 App後颱發送短信簡介 3.3.2 選擇短信平颱 3.3.3 建立可靠的短信服務
3.4 處理錶情的一些技巧... 80
3.4.1 錶情在MySQL的存儲 3.4.2 當文字中夾帶錶情的處理 3.4.3 Openfire中發送錶情引起連接斷開的問題
3.5 高效更新數據... 82
3.5.1 內容的推拉 3.5.2 數據增量更新策略
3.6 圖片處理... 90
3.7 視頻處理... 91
3.7.1 FFmpeg簡介 3.7.2 後颱調用FFmpeg的功能
3.8 獲取APK和IPA文件裏的資源... 94
3.8.1 Android的APK文件 3.8.2 iOS的IPA文件
3.9 文件係統... 98
3.9.1 文件雲存儲服務 3.9.2 架設文件係統
3.10 ELK日誌分析平颱... 101
3.10.1 基本模塊 3.10.2 日誌分析流程
3.11 Docker構建一緻的開發環境... 103
3.11.1 Docker原理 3.11.2 搭建一緻的開發環境
第4章 Linux——App後颱應用最廣泛的係統.. 107
4.1 基本的係統優化... 107
4.1.1 開機自啓動服務優化 4.1.2 增大文件描述符
4.2 常用的命令... 110
4.2.1 全麵瞭解係統資源情況——top 4.2.2 顯示進程狀態——ps
4.2.3 查看網絡相關信息——netstat 4.2.4 查看某個進程打開的所有文件——lsof
4.2.5 跟蹤數據到達主機所經路由——traceroute 4.2.6 文件下載/上傳工具——“ssh secure shell client”和“lrzsz”
4.2.7 查看程序的依賴庫——LD_DEBUG 4.2.8 進程管理利器——superivisor
4.3 故障案例分析... 125
第5章 Nginx——App後颱HTTP服務的利器.. 126
5.1 簡介... 126
5.2 基本原理... 127
5.2.1 工作模型 5.2.2 進程解析
5.3 常用配置... 129
5.3.1 Nginx的全局配置 5.3.2 event配置 5.3.3 http配置 5.3.4 負載均衡配置 5.3.5 server虛擬主機配置
5.3.6 location配置 5.3.7 HTTPS的配置 5.3.8 下載App的配置 5.3.9 生産環境中修改配置的良好習慣
5.4 性能統計... 136
5.5 實現負載均衡的方案... 137
5.6 用Nginx處理業務邏輯... 139
第6章 MySQL——App後颱最常用的數據庫.. 140
6.1 基本架構... 140
6.2 選擇版本... 141
6.3 配置文件詳解... 142
6.4 軟件優化... 144
6.4.1 正確使用MyISAM和InnoDB存儲引擎 6.4.2 正確使用索引
6.4.3 避免使用select * 6.4.4 字段盡可能地設置為NOT NULL
6.5 硬件優化... 147
6.5.1 增加物理內存 6.5.2 增加應用緩存
6.5.3 用固態硬盤代替機械硬盤 6.5.4 SSD硬盤+SATA硬盤混閤存儲方案
6.6 架構優化... 149
6.6.1 分錶 6.6.2 讀寫分離 6.6.3 分庫
6.7 SQL慢查詢分析... 156
6.8 雲數據庫簡介... 157
6.9 靈活的存儲結構... 158
6.10 故障排除案例... 159
第7章 Redis——App後颱高性能的緩存係統.. 160
7.1 Redis簡介... 160
7.2 Redis的常用數據結構及應用場景... 161
7.2.1 string——存儲簡單的數據 7.2.2 hash——存儲對象的數據
7.2.3 list——模擬隊列操作 7.2.4 set——無序且不重復的元素集閤
7.2.5 sorted set——有序且不重復的元素集閤... 168
7.3 內存優化... 170
7.3.1 監控內存使用的狀況 7.3.2 優化存儲結構
7.3.3 限製使用的最大內存 7.3.4 設置過期時間
7.4 集群... 174
7.4.1 客戶端分片 7.4.2 Twemproxy 7.4.3 Codis 7.4.4 Redis 3.0集群 7.4.5 雲服務器上的集群服務
7.5 持久化
7.5.1 RDB 7.5.2 AOF
7.6 故障排除案例... 184
第8章 MongoDB——App後颱新興的數據庫.. 185
8.1 簡介... 185
8.2 核心機製解析... 186
8.2.1 MMAP(內存文件映射) 8.2.2 Journal日誌
8.3 入門... 187
8.3.1 基本操作 8.3.2 數組操作 8.3.3 實例演示MySQL和MongoDB設計數據庫的區彆
8.4 高可用集群... 195
8.4.1 主從 8.4.2 副本集 8.4.3 分片
8.5 LBS——地理位置查詢... 200
8.6 MongoDB 3.0版本的改進... 205
8.6.1 靈活的存儲架構 8.6.2 性能提升7~10倍 8.6.3 存儲空間最多減少80% 8.6.4 運維成本最多降低95%
第9章 App後颱架構剖析.. 208
9.1 聊天App後颱架構... 208
9.1.1 移動互聯網的網絡特性 9.1.2 協議 9.1.3 整體架構
9.2 社交App後颱架構... 221
9.2.1 基本錶結構 9.2.2 推拉模式 9.2.3 數據庫架構的演進 9.2.4 緩存架構的演進
9.3 LBS App後颱架構... 234
9.3.1 地理坐標詳解 9.3.2 查找附近的人 9.3.3 基於MongoDB的LBS後颱架構演進
9.4 推送服務器後颱架構... 242
9.4.1 Android推送 9.4.2 iOS推送
9.5 獲得更多App後颱架構資料... 252
第10章 App後颱架構的演進.. 255
10.1 架構的核心要素... 255
10.1.1 高性能 10.1.2 高可用 10.1.3 可伸縮 10.1.4 可擴展 10.1.5 安全性
10.2 架構選型的要點... 262
10.2.1 用成熟穩定的開源軟件 10.2.2 盡可能使用雲服務
10.3 架構的演進... 268
10.3.1 單機部署 10.3.2 分布式部署 10.3.3 服務化
10.4 架構的特點... 279
10.4.1 每個App的後颱架構不會完全一樣 10.4.2 架構的演進是由業務驅動的 10.4.3 架構不是為瞭炫耀技術
推薦序
十八般兵器入門
軟件開發工具的成長速度遠遠超過開發人員的成長速度,這是現實。
每個月,甚至每天,我們都可以見到新的類庫、框架、工具、語言。它們或者極大地降低瞭開發的成本,或者極大地提升瞭開發的效率。
隨之而來的問題就是,如何讓開發人員妥善地運用好這些工具?
曾經有好幾個做開發的同事跟我說:“寫軟件誰不會?從網上找些開源的類和項目來改改就是瞭”。目前也確實充斥著這種“改改就是”的工作思維。介紹某個類庫和項目如何安裝和調用的文章俯拾皆是。
但是每種工具究竟有什麼優缺點?適閤用來解決什麼問題?需要以怎樣的方式來解決問題?因此還需要做怎樣的權衡?這樣的問題基本沒有人考慮,但是,它們又很重要。
這有點像練武。斧鉞鈎叉、刀槍劍戟,製造手藝日漸精良;可是習武的人心裏沒有分寸,該劈的時候提瞭槍,該刺的時候掄瞭斧…… 耍幾下花把式還算足夠,真正打起來哪能取勝?
我在麵試新人中經常提的問題是:NoSQL 分為哪幾種類型?每種類型的典型代錶和應用場景是什麼?要知道,用過MongoDB 和Redis 的人比比皆是,但迴答不上這幾個問題的也大有人在。這樣的候選人,我是決計不敢要的。稍加不注意,他們就可能用Redis 存文檔,用MongoDB 做復雜運算,甚至“大膽”用Redis 來替換數據庫以解決性能瓶頸——噢,你說起“事務”,Redis 也是有“事務”的呀。
對這樣的人,你真讓他們去研究MongoDB 或者Redis,讓他們去通讀一本專著,似乎有點劃不來,他們自己也沒有那麼多耐心。所以我常想,有沒有一本“薄而廣”的書,專注於開拓大傢的眼界,並教導大傢用“正確的方式”來使用各種已有的工具。如今我們雖然有海量的框架和類庫,有突飛猛進的雲服務,但是隻要沒有掌握“正確的應用方式”,就無法保證“把事情做對”,就隻能開發齣某幾個方麵明顯不及格的産品。
所以當我看到曾健生編著的《App 後颱開發運維和架構實踐》時,不由得眼前一亮。這正是一本“薄而廣”的書,它絕不像《打狗棍法》或者《闢邪劍法》,不負責地教你把某門特彆的武功練到極緻,而更像《十八般兵器入門》,告訴你刀槍劍戟各適閤什麼場景,使用時有什麼注意事項。典型的例子如關於Redis 的部分,它講的不是Redis 如何安裝,如何調用,而是結閤發送短信、社交關係計算等典型應用場景講解Redis 的使用方式,並介紹在Redis 提供內建集群之前,市麵上的各種集群的方案和優劣。這樣雖然隻有一章的篇幅,但為普通開發人員提供的價值絕對要比兩三本Redis 專著都要大,而且讀起來更有效率。
古代練武的人,未必人人都要做武林高手,許多人隻是把十八般兵器都耍熟,就已經足夠防賊、保平安,受益匪淺瞭。同樣的道理,對今天的App 後颱開發人員來說,把基本的點都踩到、踩準,把係統拎到及格綫以上,避免明顯的缺憾,對大多數場景來說,已經是意義重大瞭。
餘晟
軟件開發老兵,微信公眾號“餘晟以為”
筆者在 2012 年從開發電子商務網站轉嚮瞭開發 App 後颱,當時在一傢做社交 App 的創業公司裏工作,筆者和搭檔都沒有任何從事移動互聯網開發的經驗,不清楚 App 後颱怎麼架構,隻能摸著石頭過河,那時網絡上隻有一些零散的資料,當遇到問題時隻能不斷地摸索和思考,來找到解決問題的方法。
在從事開發 App 後颱接近 4 年的時間中,筆者參與瞭兩款社交 App 的開發,現在就職於bmob,從事雲後颱服務的研發工作,慢慢地對 App後颱的架構有瞭一些體會。
從 2013 年年底開始,筆者把工作筆記發錶在 CSDN 博客專欄“App 後端技術架構”,陸陸續續收到瞭很多網友的反饋,後來在 QQ 裏麵接觸瞭很多剛剛從事開發 App 後颱的開發者、找技術閤夥人的創業者,在聊天的過程中,發現很多基本的問題被不停地問,例如:
隊列有什麼用?
Redis的應用場景有哪些?
怎麼保證通信的安全性?
看著對未來無限嚮往的同行也在重復著本人當初經曆過的迷茫,也在糾結著這些技術問題,在網絡上,沒找到一本係統講述 App 後颱架構的書籍,能搜索到的不是“高大尚”公司的解決方案,就是針對一個技術點很詳細的講解。
於是在網友的鼓勵下,筆者決定把本人所掌握的開發 App 後颱的知識係統地講解一次(當時計劃是寫 30 篇左右的文章),筆者利用業餘的時間陸陸續續地寫成文章發錶在 CSDN博客專欄“App 後端技術架構”,這也是本書前 3 章的初稿。
後來在博文視點的付睿編輯幫助下,筆者有機會把自身所學習的知識再係統地整理一次,以書籍的形式展現給各位讀者,希望本書能夠幫助更多的剛進入 App 後颱開發的朋友們,以及對 App 後颱技術感興趣的産品經理和 Android、iOS開發者。
因為本書的讀者定位主要是 App 後颱的初學者,因此筆者盡量以圖文並茂的方式給讀者
介紹 App 後颱各方麵的技術。筆者一嚮推崇的架構原則是,“盡量使用成熟可靠的雲服務和開源軟件,自身隻專注於業務邏輯”,對於某項具體的技術必須掌握下麵兩點。
技術的應用場景。
技術的基本原理。
掌握上麵兩點後就能對這項技術有瞭基本的瞭解,在此基礎上技術選型的優先級如下。
雲服務。
開源軟件。
自主研發。
通過上麵的措施能在最大程度上減輕技術人員的額外研發負擔,讓自身的精力更加專注於業務。
至於某項技術的其他方麵,例如怎麼部署、開源軟件的深度剖析等,筆者並不打算在本書中做深入的闡述,讀者如果感興趣可自行深入學習。筆者希望在本書中能給讀者描繪一個 App後颱開發的藍圖。
本書主要分為 4 部分。
第 1~3章:App 後颱常用技術的講解。
第 4~8章:App 後颱常用軟件的運維和相關原理。
第 9 章:4 種類型 App 的後颱架構。
第 10 章:App 後颱架構的知識。
App後颱開發運維和架構實踐 下載 mobi pdf epub txt 電子書 格式 2024
App後颱開發運維和架構實踐 下載 mobi epub pdf 電子書很好很好很好很好很好很好很好很好很好
評分書很不錯哦,物超所值,買的不後悔。
評分很不錯的書 對沒做過api的人來說 很有幫助
評分不錯啊
評分還沒看,推薦買的,希望不是拼湊齣來的書
評分內容不錯,正是我所需要的,好評。
評分很好的東西
評分書質量不錯,是正版。這本書內容上針對性比較強,對APP後颱運維很有幫助。
評分還不錯,簡單易懂!
App後颱開發運維和架構實踐 mobi epub pdf txt 電子書 格式下載 2024