• 今日66折
  • 天天BUY
簡體年中感謝季
架構修煉之道:億級網關、平台開放、分散式、微服務、容錯等核心技術修煉實踐

架構修煉之道:億級網關、平台開放、分散式、微服務、容錯等核心技術修煉實踐

  • 定價:474
  • 優惠價:79374
  • 優惠期限:2019年06月30日止
  • 再折扣6/17-6/18加碼|全館結帳滿千再9折(部分除外)
  • 【分級買就送】樂購日:分級VIP會員OPENPOINT點數最高5倍送,也可改選1%購物金(部份除外) 詳情
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
 

內容簡介

本書內容包括分佈式、開放網關、消息推送、RPC、MQ、容錯、微服務本身之外的思考、開放平台、互聯網場景問題定位與分析等內容。描述每個知識點的各種使用或者適用場景。以及每個場景下可能遇到的問題,以及這種技術我們為什麼要使用它及它背後的一些道理。本書還會講述一些在京東內部已經良好實踐的技術應用。
 

作者介紹

王新棟,現就職於京東,“程序架道”公眾號作者。平時熱愛總結與分享,對高性能API網關、線程調優、NIO、微服務架構、容錯等技術有較深的研究和實戰經驗。目前致力於帶領團隊在平台開放技術領域實現突破。
 

目錄

第1章 網關之道
 
1.1 認識API網關
 
1.1.1 API網關是什麼
 
1.1.2 API網關涵蓋的基本功能
 
1.1.3 API網關架構示例
 
1.2 一個API的生命週期
 
1.2.1 什麼是API
 
1.2.2 生命週期
 
1.2.3 生命週期的過程
 
1.3 API網關的基石—泛化調用
 
1.4 如何發布API到網關係統
 
1.5 管道技術
 
1.5.1 管道實現
 
1.5.2 如何獲取管道
 
1.5.3 管道信息傳遞
 
1.5.4 管道的優點
 
1.5.5 責任鏈模式
 
1.6 一個傳統網關係統有幾種“死”法
 
1.6.1 關注CPU
 
1.6.2 關注磁盤
 
1.6.3 關注網絡
 
1.7 Servlet 3異步原理與實踐
 
1.7.1 什麼是Servlet
 
1.7.2 什麼是Servlet規範
 
1.7.3 同步、異步、阻塞、非阻塞
 
1.7.4 Servlet 3的異步流程
 
1.7.5 Servlet 3的異步使用步驟
 
1.7.6 Servlet 3的異步使用示例
 
1.7.7 Tomcat NIO Connector、Servlet 3.0 Async和Spring MVC Async的關係
 
1.7.8 Servlet 3非阻塞I/O
 
1.8 全異步網關
 
1.9 脫庫與多級緩存
 
1.9.1 脫庫
 
1.9.2 多級緩存
 
1.10 熱更新
 
1.11 網關係統的七種武器
 
1.12 本章小結
 
第2章 開放之道
 
2.1 認識OAuth 2.0
 
2.1.1 什麼是OAuth 2.0
 
2.1.2 角色
 
2.1.3 OAuth 2.0協議流程
 
2.1.4 採用OAuth 2.0協議的開放平台
 
2.1.5 京東宙斯開放(授權碼方式場景)
 
2.2 開放平台
 
2.2.1 一名開發者的基本需求
 
2.2.2 完整性
 
2.2.3 穩定性
 
2.2.4 安全性
 
2.2.5 整體技術架構
 
2.2.6 意義
 
2.3 如何設計一套SPI應用架構
 
2.3.1 API和SPI區別
 
2.3.2 術語約定
 
2.3.3 業務場景
 
2.3.4 架構實現
 
2.3.5 測試
 
2.3.6 SPI是一種思想
 
2.4 講一講越權
 
2.4.1 什麼是越權訪問
 
2.4.2 越權訪問的種類
 
2.4.3 發生越權訪問的根本原因
 
2.4.4 如何避免與解決
 
2.4.5 開放平台環境下的越權訪問
 
2.5 從Facebook數據洩漏談開放安全
 
2.5.1 OAuth 2.0授權
 
2.5.2 數據加/解密
 
2.5.3 IP地址白名單
 
2.5.4 平台內環境
 
2.6 API治理
 
2.6.1 性能
 
2.6.2 可用率
 
2.6.3 文檔可讀性
 
2.7 API經濟
 
2.7.1 API盈利模式
 
2.7.2 API市場
 
2.7.3 API經濟價值鏈
 
2.8 沙箱環境
 
2.8.1 協同
 
2.8.2 維護
 
2.9 本章小結
 
第3章 分佈式之道
 
3.1 認識分佈式
 
3.2 分佈式事務
 
3.2.1 什麼是分佈式事務
 
3.2.2 CAP和BASE理論
 
3.3 分佈式鎖
 
3.3.1 為什麼需要分佈式鎖
 
3.3.2 分佈式鎖的實現方式
 
3.4 分佈式限流
 
3.4.1 計數器
 
3.4.2 限速器
 
3.4.3 限流的維度
 
3.4.4 流量包
 
3.4.5 再來談令牌桶
 
3.5 衡量性能的指標QPS、TPS等
 
3.5.1 什麼是QPS
 
3.5.2 什麼是TPS
 
3.5.3 什麼是RT
 
3.5.4 什麼是並發數
 
3.6 本章小結
 
第4章 MQ之道
 
4.1 認識JMS
 
4.1.1 JMS的組成
 
4.1.2 JMS編程模型
 
4.1.3 JMS消息結構
 
4.1.4 JMS消息模型
 
4.2 帶著思考理解MQ下的基本概念
 
4.2.1 生產者—消費者(Producer-Consumer)
 
4.2.2 空間解耦
 
4.2.3 時間解耦
 
4.2.4 觀察者模式與發布/訂閱
 
4.3 消費冪等
 
4.3.1 什麼是冪等操作
 
4.3.2 是什麼引起我們關註消費冪等
 
4.3.3 如何處理消費冪等
 
4.4 詳述MQ各種功能場景
 
4.4.1 解耦
 
4.4.2 削峰填谷
 
4.4.3 最終一致性
 
4.4.4 廣播消費
 
4.4.5 使用集群消費模擬廣播
 
4.4.6 重試之坑
 
4.5 數據異構的武器—MQ+canal
 
4.5.1 定義
 
4.5.2 常見應用場景
 
4.5.3 數據異構方向
 
4.5.4 數據異構的常用方法
 
4.5.5 binlog和MQ方式
 
4.6 關於MQ再問自己幾個問題
 
4.6.1 我想自己控制開始消費如何做
 
4.6.2 為什麼需要消息過濾
 
4.6.3 過期消息是怎麼處理的
 
4.6.4 消息重試的注意點
 
4.6.5 為什麼需要事務消息
 
4.6.6 消息為什麼沒有了順序
 
4.7 本章小結
 
第5章 消息推送之道
 
5.1 認識消息推送
 
5.2 構建長連接推送系統之HTTP實踐
 
5.2.1 Web網絡結構及配置
 
5.2.2 基本配置
 
5.2.3 Transfer-Encoding: chunked
 
5.2.4 HTTP長連接系統組成結構
 
5.2.5 Session管理
 
5.2.6 心跳
 
5.2.7 消息接收的概念
 
5.2.8 消息推送的概念
 
5.2.9 消息追踪
 
5.2.10 HTTP長連接系統時序調用
 
5.2.11 創建會話(連接)
 
5.2.12 心跳邏輯
 
5.2.13 消息接收實例
 
5.2.14 消息推送實例
 
5.2.15 半推半拉
 
5.2.16 系統優化
 
5.2.17 測試
 
5.3 構建消息推送系統之Netty實踐
 
5.3.1 啟動
 
5.3.2 創建會話
 
5.3.3 心跳
 
5.3.4 發送消息
 
5.3.5 註銷會話
 
5.3.6 黏包
 
5.4 一台服務器可以“跑”多少個連接
 
5.5 一台服務器可以“跑”多少個線程
 
5.6 弱網絡環境
 
5.7 發送APNs
 
5.7.1 認識APNs
 
5.7.2 HTTP/2
 
5.7.3 Pushy的使用
 
5.8 本章小結
 
第6章 RPC之道
 
6.1 認識RPC
 
6.2 RPC是如何實現通信的
 
6.2.1 動態代理
 
6.2.2 反射
 
6.2.3 序列化
 
6.2.4 網絡編程
 
6.3 一次RPC調用時間都去哪兒了
 
6.4 異步RPC
 
6.4.1 異步調用
 
6.4.2 異步監聽
 
6.4.3 callback調用
 
6.5 本章小結
 
第7章 I/O之道
 
7.1 認識I/O
 
7.2 解讀I/O多路復用技術
 
7.2.1 I/O多路復用概述
 
7.2.2 用戶進程和內核
 
7.2.3 select和recvfrom
 
7.2.4 阻塞、非阻塞
 
7.2.5 適用場景
 
7.3 解讀Tomcat中的NIO模型
 
7.3.1 Tomcat對I/O模型的支持
 
7.3.2 Tomcat中NIO的配置與使用
 
7.3.3 NioEndpoint組件關係圖解讀
 
7.3.4 NioEndpoint執行序列圖
 
7.3.5 關於性能
 
7.4 本章小結
 
第8章 微服務之道
 
8.1 認識微服務
 
8.2 微服務後如何做一次系統梳理
 
8.2.1 系統分類與演進
 
8.2.2 梳理目的要搞清楚
 
8.2.3 如何做
 
8.2.4 核心功能的核心流程梳理
 
8.3 朝著微服務的方向去做一次數據庫拆分
 
8.3.1 現狀
 
8.3.2 方法
 
8.3.3 拆庫的步驟(MySQL)
 
8.4 本章小結
 
第9章 容錯之道
 
9.1 認識容錯
 
9.2 降級與限流
 
9.3 線程池隔離
 
9.3.1 為什麼要做線程池隔離
 
9.3.2 實現一個線程池隔離
 
9.3.3 線程池隔離的優點
 
9.3.4 線程池隔離的缺點
 
9.4 快速失敗
 
9.5 熔斷
 
9.5.1 熔斷器介紹
 
9.5.2 熔斷使用注意
 
9.6 Hystrix的使用
 
9.6.1 認識Hystrix
 
9.6.2 線程池隔離
 
9.6.3 信號量隔離
 
9.6.4 熔斷
 
9.6.5 回退降級
 
9.7 大促備戰都“備”什麼
 
9.7.1 分離技術
 
9.7.2 緩存技術
 
9.7.3 SQL優化
 
9.7.4 快速失敗
 
9.7.5 降級限流
 
9.7.6 性能壓測
 
9.8 本章小結
 
第10章 程序之外
 
10.1 程序與健身
 
10.2 程序員的硬件裝備
 
10.3 程序員應該看的四本技術書籍
 
10.4 程序員應該熟悉的常用定律法則
 
10.5 知識、數據、工具
 
參考文獻
 

序言一
 
2019年年初,新棟突然說他要出一本書,找我寫序言,我甚是驚喜,主要讓我驚喜的地方在於新棟同學帶領一個團隊在2018年不斷地做JOS開放平台的迭代升級,平時加班加點壓力很大的情況下,還能抽出時間出來寫書,另一個驚喜的地方就是看到一個持續在技術上追求卓越的架構師身影。
 
做一個好的開放平台有三方面的挑戰,第一是來自穩定性挑戰,每天數十億的請求,有的來自商家、有的來自外部開發者,還有的來自外部合作夥伴平台,API請求的類型除了簡單的Key-Value讀寫,還有多維度的寫數據請求和復雜查詢。怎麼保證部分API服務出現問題不讓整個網關係統受到影響?在流量洪峰到來的時刻怎麼保證核心服務、核心請求的高可用?
 
第二來自開發者的體驗挑戰,這裡的開發者包括提供API的開發者及使用API​​的開發者,對於開發者的體驗大家往往會忽略,但他們是開放平台的真實客戶,決定開放平台的發展和未來。怎麼讓提供API的開發者更高效率地管理和發布API?怎麼讓使用API​​的開發者更方便、高效地利用API開發自己的應用,出現問題怎麼調試?怎麼自動化地發布管理應用?
 
第三來自安全的挑戰,可以說這是一個最大的挑戰。電商的數據是多維度的,包括商品管理、訂單生產、售後客服處理、財務結算及各種營銷管理,等等,基本每個場景都會涉及數據處理和授權。如何能在開放的同時保障用戶的隱私信息、平台的商業數據等不被洩漏或濫用?而且還有個矛盾點在於數據越開放,平台就越繁榮,在這裡需要做哪些技術上的安全保障和機制?這些問題直接關係開放平台是否還可以繼續做下去!
 
以上這些技術挑戰的解決方案,只有在工作實踐中持續不斷打磨才能迭代出來,新棟在此書中將這些技術實踐進行思考和總結,由淺入深地講給大家,相信會給你帶來更多的思考和收穫。
 
京東研發總監
 
付彩寶
 
序言二
 
和作者王新棟初次相識是在大學畢業後入職的第一家公司裡,那時他也剛剛畢業入職不久,算來已經過去了十餘年,在此期間我們一起共事了三家公司,一起工作了七八年之久,直到現在我們還會不定期進行線上、線下的溝通。
 
經過了長時間的沉澱,王新棟已經從初入職場的新人逐步成長為負責百億級調用量系統的架構師。作者將此期間的經歷,經過總結和思考,將值得借鑒和分享的內容記錄了下來,匯集成冊,希望能給同樣身處計算機開發領域的同學以幫助和思考。
 
翻看書中的章節經常讓我有似曾相識的感覺。大多的系統,上到復雜的分佈式集群,下到功能簡單一些的微服務,乃至all in one的系統,除了業務邏輯,我們80%以上的精力都在考慮系統的健壯性、擴展性和解決系統中的異常情況。隨著每一個章節的展開,本書為我們列舉出了一個系統穩定、可維護而又健壯的必要條件,以及當災難性故障發生時的應對策略有哪些,為我們設計系統提供了一整套思路。
 
經常看到工作了兩三年的開發同學說,自己除了基本的CURD什麼都不會,對於系統如何去設計和迭代完全沒有概念。如果你有相同的疑惑,那麼這本書應該相當適合你。通過閱讀此書能夠知道:我們如果負責一個系統除了涉及業務基礎的CURD還應該有哪些需要去了解,需要去考慮的地方。相信閱讀完本書,能夠讓那些剛剛踏入開發領域的同學眼前一亮,看到除CURD外更應該關注的系統架構和編程之道。能夠快速從編寫業務代碼進階到更高的階段。
 
當然,已經入門的同學也可以把它作為一本工具書,相較於高談闊論的經典理論,本書闡述的知識點更加貼地氣,書中涉及的知識點大都是經由真實的生產環境抽象提煉而來的。本書的知識點可以給你提供一些借鑒和啟發,能夠讓你找到解決問題的靈感。
 
攜程金融 技術總監
 
李勇
 
前言
 
本書的主書名叫作“架構修煉之道”,當提到“道”的時候,我們通常會想起孔子、孟子,或者想起國外一些“大神”寫的技術書籍,因此使用該書名可謂十分大膽。但實際想來,“實踐是檢驗真理的唯一標準”,本書中的“道”,就是被檢驗過的真理、道理,是最普通、最真實的道理。本書還有一個副標題,“億級網關、平台開放、分佈式、微服務、容錯等核心技術修煉實踐”,書中對於這些技術的描述都是我在工作過程中通過反复實踐得到的總結和感悟。同時,工作中我們敬畏每一行代碼,敬畏每一次線上生產事故,每次大促備戰我們都懷著一顆敬畏之心,這些年來在京東的架構實踐無疑就是一場修煉。這正是本書名字的由來。
 
在京東轉眼已五年時光,經歷過的系統有的已經發生了從千萬級、十億級到百億級的轉變,我對系統如何“抗量”有深刻的切身體會,這些知識在網關之道、I/O之道章節中都有介紹。當我們抗住億級訪問量的時候,系統的容錯又是怎樣實施的?比如線程池的隔離、快速失敗機制的運用等容錯知識在容錯之道章節中有重點詳解。另外本書也講解了分佈式、微服務的知識,在微服務之道一章中,並沒有過多敘述微服務的概念,而是直接將工作過程中親身經歷的兩個微服務案例給讀者呈現出來。這是一本從實踐中總結出來的書,讀者閱讀的時候會發現,書中介紹概念性的東西只是作為切入點,轉而迅速去講解實踐的感悟,然後深入某個知識領域去做一次深度探索,比如解讀I/O多路復用技術、解讀Tomcat中的NIO模型、解讀一次RPC調用時間都去哪兒了、詳述MQ各種功能場景等,這些內容都是經過實踐得出的真知。
 
本書共10章,第1章網關之道講述網關的前世今生,以及一個成熟的網關應該具備的能力;第2章開放之道主要在網關的基礎上圍繞API展開介紹;第3章分佈式之道重點介紹常見的事務、鎖、限流場景下的知識;第4章MQ之道從基礎一直介紹到MQ的常用功能場景;第5章消息推送之道以HTTP和TCP的方式分別介紹生產系統中消息推送的實踐;第6章RPC之道著重從RPC的底層原理去思考分析;第7章I/O之道深度解析多路復用技術和Tomcat中的NIO模型;第8章微服務之道以我親歷的兩個實踐為案例介紹微服務是如何落地的;第9章容錯之道結合前面章節的知識重點講述系統容錯的常用方法,以及我所在公司在大促備戰中常用的技術;第10章程序之外,我結合自己的真實感受講述健身鍛煉跟程序之間的感悟,以及程序員的硬件裝備等內容。相信本書的知識一定可以幫助到讀者。
 
從自己開始寫博客的那天起,我便喜歡上了寫作,將自己總結的東西發佈到技術社區網站上,隨後又被網站推薦到首頁,再後來又被很多公眾號轉載。能在互聯網這個大環境裡與素未謀面的朋友交流,這些經歷給我帶來了很大的喜悅感與成就感。但寫博客終歸跟寫書不一樣,在寫博客的時候如有讀者留言指正,還可以迅速修改,但寫成的書一旦描述不當卻是“覆水難收”,寫書需要更嚴謹,因此對自己的要求更加嚴格。雖然可以用“人非聖賢,孰能無過”為自己開脫,但還是生怕出錯會誤導讀者,古人云“盡信書不如無書”,希望讀者可以帶著自己的思考閱讀本書。
 
能夠完成本書,首先要感謝博文視點的曉猛,沒有您就沒有這本書。還要感謝京東給我提供了這麼好的平台和機會,沒有在京東的歷練,我也就沒有這麼豐富的技術閱歷來完成本書的寫作。感謝我的領導與同事,也感謝我的團隊,你們給了我很大的幫助。經常看其他作者的前言,看到最後感謝家人環節的時候總是很有感觸,但真正到了自己要寫出這番話的時候,才體會到了這份感謝的重量。非常感謝我的愛人,是你全身心照顧我們的兒子,才讓我有了足夠的業餘時間來完成寫作,在這期間我很少陪伴你和兒子,對此深感愧疚與歉意。最後要感謝我的父母,是你們養育了我,又辛苦勞作供我讀書,點亮了我的生活。
 
王新棟
 
2019年1月於北京
 

詳細資料

  • ISBN:9787121360374
  • 規格:平裝 / 233頁 / 16k / 19 x 26 x 1.17 cm / 普通級 / 單色印刷 / 1-1
  • 出版地:大陸

最近瀏覽商品

 

相關活動

  • 自然語言、文字識別、語音轉換、分析預測、影像辨識全面揭密!《Python機器學習與深度學習特訓班》
 

購物說明

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 文藝相乘
  • 無限大的手作力
  • 新書搶先報

訂閱電子報

想獲得最新商品資訊,請訂閱免費電子報