目 錄 Contents
前言
基礎(chǔ)篇
第1章 搜索客戶端的發(fā)展與價(jià)值2
1.1 從我在百度的工作經(jīng)歷看搜索客戶端架構(gòu)演進(jìn)2
1.1.1 從零構(gòu)建搜索客戶端App2
1.1.2 Ding:優(yōu)化移動(dòng)端搜索的高頻搜索需求4
1.1.3 搜索 瀏覽雙框架:優(yōu)化移動(dòng)端搜索過程的體驗(yàn)4
1.1.4 搜索結(jié)果NA化:優(yōu)化移動(dòng)端搜索結(jié)果瀏覽體驗(yàn)5
1.1.5 搜索異步化:優(yōu)化搜索核心指標(biāo)7
1.1.6 多容器管理:突破單瀏覽內(nèi)核的限制8
1.1.7 變體發(fā)布:多App復(fù)用搜索能力9
1.1.8 小結(jié)10
1.2 移動(dòng)操作系統(tǒng)級(jí)的搜索能力支持12
1.2.1 iOS系統(tǒng)搜索能力12
1.2.2 Android系統(tǒng)搜索能力13
1.2.3 小結(jié)14
1.3 App中的搜索功能建設(shè)15
1.3.1 京東App中的搜索功能15
1.3.2 微信App中的搜索功能16
1.3.3 快手App中的搜索功能17
1.3.4 有道詞典App中的搜索功能17
1.3.5 招商銀行App中的搜索功能18
1.3.6 夸克瀏覽器App中的搜索功能19
1.3.7 小結(jié)20
第2章 搜索客戶端基礎(chǔ)技術(shù)21
2.1 搜索全流程的3個(gè)核心場(chǎng)景21
2.2 需求輸入場(chǎng)景及技術(shù)實(shí)現(xiàn)23
2.2.1 多線程技術(shù)24
2.2.2 網(wǎng)絡(luò)請(qǐng)求24
2.2.3 搜索建議的數(shù)據(jù)處理25
2.3 結(jié)果頁場(chǎng)景及技術(shù)實(shí)現(xiàn)28
2.3.1 數(shù)據(jù)持久化存取29
2.3.2 URL攜帶搜索關(guān)鍵字30
2.3.3 結(jié)果頁的分類及加載31
2.4 落地頁場(chǎng)景及技術(shù)實(shí)現(xiàn)32
2.4.1 落地頁功能擴(kuò)展32
2.4.2 落地頁與結(jié)果頁的切換管理33
2.5 移動(dòng)客戶端研發(fā)注意事項(xiàng)34
2.5.1 移動(dòng)客戶端與PC應(yīng)用研發(fā)的區(qū)別34
2.5.2 移動(dòng)客戶端與云端服務(wù)研發(fā)的區(qū)別35
2.6 設(shè)計(jì)一份可落地的技術(shù)方案36
2.6.1 技術(shù)方案的輔助決策點(diǎn)評(píng)估37
2.6.2 技術(shù)方案優(yōu)先處理原則38
第3章 搜索客戶端基礎(chǔ)服務(wù)40
3.1 搜索客戶端協(xié)同的服務(wù)分類40
3.1.1 客戶端運(yùn)行時(shí)對(duì)接的服務(wù)40
3.1.2 搜索業(yè)務(wù)對(duì)接的服務(wù)42
3.2 從客戶端的角度看搜索服務(wù)端架構(gòu)43
3.2.1 內(nèi)容的產(chǎn)生44
3.2.2 內(nèi)容的去重46
3.2.3 內(nèi)容的存儲(chǔ)48
3.2.4 內(nèi)容的檢索53
3.2.5 搜索結(jié)果的產(chǎn)品化封裝56
3.2.6 搜索過程客戶端與服務(wù)端協(xié)作流程57
3.3 自有搜索客戶端對(duì)搜索服務(wù)優(yōu)化的支持58
高級(jí)篇
第4章 搜索客戶端中并行化響應(yīng)輸入的實(shí)現(xiàn)62
4.1 并行化響應(yīng)用戶輸入的意義62
4.1.1 搜索是強(qiáng)依賴輸入的業(yè)務(wù)62
4.1.2 App可并行化響應(yīng)用戶輸入的價(jià)值64
4.2 輸入過程并行化任務(wù)的分類65
4.3 文本輸入搜索過程的并行化任務(wù)與支持65
4.3.1 接收用戶的文本輸入65
4.3.2 處理用戶的文本輸入66
4.3.3 響應(yīng)用戶的文本輸入68
4.3.4 文本輸入過程并行化模型69
4.4 語音輸入搜索過程的并行化任務(wù)與支持70
4.4.1 接收用戶的語音輸入70
4.4.2 處理用戶的語音輸入72
4.4.3 響應(yīng)用戶的語音輸入73
4.4.4 語音輸入過程并行化模型73
4.5 圖像輸入搜索過程的并行化任務(wù)與支持75
4.5.1 接收用戶的圖像輸入75
4.5.2 處理用戶的圖像輸入76
4.5.3 響應(yīng)用戶的圖像輸入78
4.5.4 圖像輸入的業(yè)務(wù)流程支持80
4.5.5 圖像輸入的服務(wù)依賴保障80
4.5.6 圖像輸入過程并行化模型81
4.6 網(wǎng)頁瀏覽過程的多進(jìn)程模型85
4.6.1 Networking進(jìn)程86
4.6.2 WebContent進(jìn)程86
4.6.3 UI進(jìn)程簡(jiǎn)介87
4.7 并行化實(shí)現(xiàn)的3個(gè)條件87
第5章 設(shè)計(jì)可擴(kuò)展網(wǎng)頁能力的搜索客戶端架構(gòu)89
5.1 搜索客戶端實(shí)現(xiàn)網(wǎng)頁能力擴(kuò)展的意義89
5.1.1 基本概念及互通模型90
5.1.2 搜索客戶端支持網(wǎng)頁擴(kuò)展及互通的價(jià)值91
5.2 使用基礎(chǔ)API支持網(wǎng)頁瀏覽91
5.2.1 請(qǐng)求加載新頁面91
5.2.2 同步網(wǎng)頁加載狀態(tài)93
5.2.3 管理網(wǎng)頁加載狀態(tài)97
5.2.4 切換頁面瀏覽歷史98
5.2.5 響應(yīng)頁面瀏覽滑動(dòng)事件99
5.2.6 定制手勢(shì)響應(yīng)快捷指令100
5.2.7 關(guān)聯(lián)規(guī)則過濾網(wǎng)頁內(nèi)容100
5.3 定義數(shù)據(jù)通路標(biāo)準(zhǔn)擴(kuò)展網(wǎng)頁能力101
5.3.1 關(guān)聯(lián)Custom URL scheme實(shí)現(xiàn)URL調(diào)用101
5.3.2 通過JS實(shí)現(xiàn)NA功能與網(wǎng)頁對(duì)話104
5.3.3 接管網(wǎng)絡(luò)請(qǐng)求實(shí)現(xiàn)數(shù)據(jù)互通105
5.3.4 同步Cookie變化實(shí)現(xiàn)狀態(tài)統(tǒng)一106
5.4 NA與網(wǎng)頁互通的能力總覽108
5.4.1 網(wǎng)頁加載過程互通108
5.4.2 網(wǎng)頁瀏覽交互互通109
5.4.3 網(wǎng)頁數(shù)據(jù)通信互通110
5.5 管理多種瀏覽內(nèi)核共存110
5.5.1 針對(duì)多種瀏覽內(nèi)核的約束111
5.5.2 以系統(tǒng)瀏覽內(nèi)核為基點(diǎn)進(jìn)行擴(kuò)展113
5.6 以插件的形式擴(kuò)展網(wǎng)頁功能114
5.6.1 網(wǎng)頁場(chǎng)景插件化模型115
5.6.2 功能插件管理、調(diào)用及事件響應(yīng)117
5.6.3 網(wǎng)頁場(chǎng)景使用插件管理框架120
第6章 設(shè)計(jì)場(chǎng)景容器化的搜索客戶端架構(gòu)122
6.1 構(gòu)建多容器管理機(jī)制的意義122
6.1.1 單瀏覽內(nèi)核管理框架面臨的挑戰(zhàn)122
6.1.2 構(gòu)建多容器管理機(jī)制的必要性123
6.2 多容器管理框架的核心能力及收益124
6.2.1 多容器管理框架核心能力對(duì)齊124
6.2.2 多容器管理框架核心能力模型126
6.2.3 多容器管理框架的收益預(yù)估126
6.3 框架升級(jí)潛在風(fēng)險(xiǎn)及解決128
6.3.1 并行研發(fā)的影響128
6.3.2 Web生態(tài)標(biāo)準(zhǔn)的兼容130
6.3.3 頁面加載速度指標(biāo)劣化134
6.4 容器生命周期管理能力建設(shè)134
6.4.1 抽象容器的基本生命周期事件134
6.4.2 統(tǒng)一容器生成入口和數(shù)據(jù)結(jié)構(gòu)135
6.4.3 資源消耗和收益的平衡135
6.4.4 小結(jié)138
6.5 容器的展現(xiàn)及事件管理能力建設(shè)139
6.5.1 容器的視圖展現(xiàn)管理139
6.5.2 容器的視圖生命周期事件管理140
6.5.3 容器及框架的手勢(shì)事件管理142
6.5.4 小結(jié)143
6.6 容器的瀏覽歷史管理能力建設(shè)143
6.6.1 容器瀏覽歷史的操作144
6.6.2 容器瀏覽歷史條目的存儲(chǔ)146
6.6.3 小結(jié)147
6.7 多容器管理框架的應(yīng)用148
6.7.1 容器接入多容器管理框架148
6.7.2 打開新頁面時(shí)的框架處理邏輯149
6.7.3 頁面歷史切換及優(yōu)先級(jí)處理邏輯150
6.7.4 容器的銷毀與恢復(fù)邏輯151
6.8 網(wǎng)頁加載性能指標(biāo)優(yōu)化152
6.8.1 通過預(yù)創(chuàng)建容器優(yōu)化容器創(chuàng)建的耗時(shí)152
6.8.2 通過預(yù)加載優(yōu)化靜態(tài)資源加載耗時(shí)153
6.8.3 通過實(shí)現(xiàn)預(yù)渲染優(yōu)化頁面整體耗時(shí)154
6.8.4 小結(jié)155
第7章 設(shè)計(jì)可定制安全策略的搜索客戶端架構(gòu)156
7.1 搜索客戶端可定制安全策略的意義156
7.1.1 移動(dòng)生態(tài)和法律法規(guī)中的安全相關(guān)標(biāo)準(zhǔn)157
7.1.2 客戶端是產(chǎn)品提供服務(wù)的第一層158
7.1.3 客戶端具備實(shí)時(shí)發(fā)現(xiàn)及干預(yù)安全問題的條件159
7.2 網(wǎng)絡(luò)通信安全保障160
7.2.1 域名解析安全問題及解決方法160
7.2.2 數(shù)據(jù)傳輸安全問題及解決方法160
7.2.3 網(wǎng)絡(luò)安全的技術(shù)架構(gòu)支持162
7.3 網(wǎng)頁瀏覽安全防護(hù)162
7.3.1 網(wǎng)頁內(nèi)容安全問題及解決方法163
7.3.2 網(wǎng)頁互通安全問題及解決方法165
7.3.3 網(wǎng)頁瀏覽安全的技術(shù)架構(gòu)支持166
7.4 自有服務(wù)安全共建166
7.4.1 識(shí)別自有客戶端并實(shí)現(xiàn)差異化服務(wù)166
7.4.2 關(guān)鍵請(qǐng)求不可重放167
7.4.3 安全策略要盡早推進(jìn)168
7.5 用戶信息安全保護(hù)168
7.5.1 歷史數(shù)據(jù)的讀取與技術(shù)實(shí)現(xiàn)建議169
7.5.2 實(shí)時(shí)數(shù)據(jù)的讀取與技術(shù)實(shí)現(xiàn)建議170
7.5.3 用戶信息安全的技術(shù)實(shí)現(xiàn)原則171
7.6 技術(shù)復(fù)用安全管理171
7.6.1 第三方技術(shù)引進(jìn)安全評(píng)估172
7.6.2 自研技術(shù)輸出安全定制174
第8章 設(shè)計(jì)可持續(xù)優(yōu)化指標(biāo)的搜索客戶端架構(gòu)176
8.1 客戶端指標(biāo)可持續(xù)優(yōu)化的意義176
8.2 客戶端常見指標(biāo)簡(jiǎn)介177
8.2.1 安裝包體積指標(biāo)及優(yōu)化177
8.2.2 啟動(dòng)速度指標(biāo)及優(yōu)化177
8.2.3 加載速度指標(biāo)及優(yōu)化178
8.2.4 白屏率指標(biāo)及優(yōu)化178
8.2.5 卡頓率指標(biāo)及優(yōu)化179
8.2.6 崩潰率指標(biāo)及優(yōu)化179
8.2.7 磁盤空間指標(biāo)及優(yōu)化179
8.2.8 通用業(yè)務(wù)指標(biāo)及優(yōu)化180
8.3 客戶端指標(biāo)優(yōu)化基礎(chǔ)能力構(gòu)建180
8.3.1 分組樣本設(shè)定能力的構(gòu)建180
8.3.2 數(shù)據(jù)收集能力的構(gòu)建184
8.4 客戶端指標(biāo)優(yōu)化方法及應(yīng)用187
8.4.1 制定標(biāo)準(zhǔn)188
8.4.2 指標(biāo)建設(shè)189
8.4.3 數(shù)據(jù)收集192
8.4.4 數(shù)據(jù)分析193
8.4.5 指標(biāo)優(yōu)化196
8.4.6 指標(biāo)評(píng)估199
8.4.7 指標(biāo)監(jiān)控200
第9章 設(shè)計(jì)可統(tǒng)一管理網(wǎng)絡(luò)通信的搜索客戶端架構(gòu)201
9.1 網(wǎng)絡(luò)通信可統(tǒng)一管理的意義201
9.2 網(wǎng)絡(luò)通信優(yōu)化的實(shí)際應(yīng)用價(jià)值203
9.2.1 語音搜索的網(wǎng)絡(luò)通信管理203
9.2.2 網(wǎng)頁場(chǎng)景功能的網(wǎng)絡(luò)通信管理209
9.3 瀏覽內(nèi)核的網(wǎng)絡(luò)通路實(shí)現(xiàn)與功能擴(kuò)展管理211
9.3.1 瀏覽內(nèi)核的網(wǎng)絡(luò)請(qǐng)求攔截212
9.3.2 網(wǎng)絡(luò)通路的工作流程213
9.3.3 網(wǎng)絡(luò)通路中的功能擴(kuò)展管理214
9.4 統(tǒng)一管理網(wǎng)絡(luò)通信及分層設(shè)計(jì)221
9.4.1 系統(tǒng)層的職責(zé)與邊界221
9.4.2 橋接層的職責(zé)與邊界222
9.4.3 支持層的職責(zé)與邊界222
9.4.4 調(diào)度層的職責(zé)與邊界225
9.4.5 接口層的職責(zé)與邊界227
9.5 業(yè)務(wù)實(shí)現(xiàn)層的網(wǎng)絡(luò)能力隔離227
9.5.1 依賴瀏覽內(nèi)核構(gòu)建的業(yè)務(wù)實(shí)現(xiàn)分層228
9.5.2 不依賴瀏覽內(nèi)核構(gòu)建的業(yè)務(wù)實(shí)現(xiàn)分層228
第10章 設(shè)計(jì)可支持移動(dòng)端AI預(yù)測(cè)的搜索客戶端架構(gòu)230
10.1 客戶端可支持移動(dòng)端AI預(yù)測(cè)的意義230
10.1.1 基本概念及關(guān)系231
10.1.2 編程方式的演進(jìn):從傳統(tǒng)編程到人工智能233
10.1.3 客戶端使用移動(dòng)端AI預(yù)測(cè)與服務(wù)端AI預(yù)測(cè)的對(duì)比234
10.2 客戶端支持移動(dòng)端AI預(yù)測(cè)的挑戰(zhàn)235
10.3 模型管理框架實(shí)現(xiàn)237
10.3.1 模型管理服務(wù)端支持237
10.3.2 模型管理框架客戶端實(shí)現(xiàn)239
10.3.3 模型管理框架的應(yīng)用示例243
10.4 特征管理框架實(shí)現(xiàn)244
10.4.1 特征分類及框架依賴245
10.4.2 特征復(fù)用及框架支持245
10.4.3 特征緩存及框架支持247
10.4.4 特征收集及框架支持248
10.4.5 特征管理框架應(yīng)用示例249
10.5 移動(dòng)端AI預(yù)測(cè)技術(shù)支持框架的應(yīng)用250
10.5.1 構(gòu)建新業(yè)務(wù)時(shí)的支持250
10.5.2 優(yōu)化已有業(yè)務(wù)的支持251
第11章 設(shè)計(jì)可變體發(fā)布的搜索客戶端架構(gòu)253
11.1 App支持可變體發(fā)布的意義253
11.1.1 初識(shí)矩陣App254
11.1.2 App支持變體發(fā)布的價(jià)值255
11.2 App支持變體發(fā)布的前置依賴256
11.2.1 基礎(chǔ)概念及關(guān)系256
11.2.2 模塊級(jí)復(fù)用與App級(jí)復(fù)用258
11.2.3 矩陣App復(fù)用主線App的方式260
11.3 變體發(fā)布的核心技術(shù)問題及解決264
11.3.1 控制反轉(zhuǎn)服務(wù)264
11.3.2 組件的裁剪支持266
11.3.3 組件的修改支持266
11.4 搜索業(yè)務(wù)可變體發(fā)布的技術(shù)框架支持268
11.4.1 典型搜索業(yè)務(wù)特征和技術(shù)架構(gòu)268
11.4.2 服務(wù)動(dòng)態(tài)化269
11.4.3 場(chǎng)景容器化272
11.4.4 功能插件化273
11.4.5 端云一體化輸出275
11.4.6 小結(jié)276
11.5 模塊拆分與變體發(fā)布支持277
11.5.1 模塊的分級(jí)及約束277
11.5.2 模塊拆分的決策依據(jù)279
11.5.3 組件標(biāo)準(zhǔn)化輸出280
11.6 主線App支持變體發(fā)布要遵循的原則281
11.6.1 接口穩(wěn)定原則282
11.6.2 最小接口公開原則282
11.6.3 有序依賴原則283
11.6.4 無無用依賴原則283
11.6.5 無隱式依賴原則284
11.6.6 無傳遞依賴原則285
11.6.7 無循環(huán)依賴原則287
11.6.8 命名唯一原則289
11.6.9 配置項(xiàng)歸屬唯一原則290
11.6.10 資源歸屬唯一原則290
第12章 設(shè)計(jì)可支持質(zhì)效提升的搜索客戶端架構(gòu)291
12.1 架構(gòu)與研發(fā)質(zhì)效的關(guān)系291
12.1.1 我對(duì)研發(fā)質(zhì)效的理解292
12.1.2 我對(duì)架構(gòu)目標(biāo)的理解292
12.1.3 我看到的架構(gòu)對(duì)質(zhì)效的影響292
12.2 提升研發(fā)過程的效率294
12.2.1 子系統(tǒng)獨(dú)立迭代294
12.2.2 業(yè)務(wù)可脫機(jī)調(diào)試297
12.2.3 任務(wù)自動(dòng)化執(zhí)行支持299
12.2.4 流程自動(dòng)化工具建設(shè)302
12.3 降低異常產(chǎn)生的概率304
12.3.1 降低內(nèi)部因素產(chǎn)生的異常304
12.3.2 降低外部因素產(chǎn)生的異常306
12.4 降低異常產(chǎn)生的影響309
12.4.1 發(fā)現(xiàn)異常的能力的構(gòu)建309
12.4.2 解決異常的能力的構(gòu)建311
12.4.3 降低異常概率/影響的設(shè)計(jì)思路312
個(gè)人成長(zhǎng)篇
第13章 設(shè)計(jì)自己的架構(gòu)優(yōu)化之路314
13.1 快速融入團(tuán)隊(duì)的7個(gè)因素314
13.2 實(shí)現(xiàn)有效交付的7個(gè)節(jié)點(diǎn)317
13.3 持續(xù)優(yōu)化技術(shù)架構(gòu)的7個(gè)思維方式321