
前 言
為什麼寫這本書
忘了是2015年的哪一天,隻記得幾個朋友跟友商的其他幾個做技術的朋友吃飯,并簡單做下技術交流。席間,友商的幾位朋友對springboot架構實施微服務很感興趣,交談甚歡之際,我無意間開玩笑說:“是不是該考慮寫一本springboot的書?”鐘倫甫(原淘寶聚石)同學随口一句,“你倒是寫啊!”,得,以行踐言吧,誰讓你把話說出去了呢?
當然,朋友的“熱切期盼”隻是其一,微服務盛行也是本書寫作的一個契機, 希望本書成為國内第一本微服務相關的原創圖書,借此跟大家分享我對微服務的淺薄了解,并圍繞springboot微架構打造一套微服務體系可能的探索方向,權作抛磚引玉。如果不同的思想可以借此激蕩和碰撞形成更多共鳴,則吾之幸甚。
因工作繁忙,隻能抽取零碎時間躬耕于晨曦和月光之下,經點滴積累,才終成此書,希望大家閱讀愉快。
本書的主要内容和特色
本書以介紹微服務的基本概念開篇,逐漸引出java平台下打造微服務的利器—springboot微架構。書中從springboot微架構的“出身”開始,循序漸進,一步步為大家剖析springboot微架構的設計理念和原理,并對架構的重點功能和子產品進行了逐一講解。
當然,這還隻是“前戲”,本書最精彩的部分在于,在大家對springboot微架構已經有了基本的認識之後,我們将一起探索如何基于springboot微架構打造一套完備的微服務體系。因為如果沒有平台化體系化的基礎支撐,空談微服務将無太大意義。
springboot微架構依托java平台和spring架構,擁有良好的可擴充性和可定制性,為了說明這一點,我們單獨開辟了一章内容,為大家介紹如何使用scala和springboot微架構來開發和傳遞相應的微服務,并且圍繞scala和springboot如何打造相應的工具,技術産品等支援來提高相應微服務的傳遞效率。
最後我會與大家一起對springboot微架構的相關内容進行回顧和展望,以期溫故而知新。
本書總體上可以總結為三個關鍵詞,“架構、體系、生态”,三者循序漸進,相輔相成,在使用springboot微架構打造自己特色的微服務體系和技術生态之時,希望大家記住這三個關鍵詞。
本書面向的讀者
本書希望面向的讀者當然是那些對springboot微架構感興趣的同學,如果你想了解springboot微架構,并且嘗試進一步深入定制該架構以滿足自己團隊和公司的需要,也希望會對你有所啟發。
除此之外還包括:
java平台上的廣大研發同學,可以借此書了解業界微服務相關的最新動态。
其他平台上的廣大研發同學,可借此書“管中窺豹”,了解微服務的一般體系和生态建設,對比并引入自身的技術和微服務體系建設之中。
脫離技術一線已久的技術負責人。
如何閱讀本書
本書采用循序漸進的形式編寫,是以順序閱讀是推薦的閱讀方式。
勘誤和資源
鑒于一家之言且編撰倉促,難免會有所纰漏,觀點有失偏頗,是以,我在github網站上專門建立了一個issue項目,如果大家在閱讀此書之後發現有哪些錯誤和疑問,或者改進建議,可以在此項目上建立issue來表達自己的觀點和建議。如果時間不充裕,我會适時地選擇性給予答複,當然,更希望大家可以通過issue展開讨論,互相切磋和解答疑問 。
緻謝
除了最初的一句戲言,鐘倫甫同學也是本書的第一位讀者,幫助審稿并提出很多建議,是以,本書得以出版,第一需要感謝的就是鐘倫甫同學。
其次,我要感謝華章出版社的楊福川和李藝,福川兄在接到我的出版意向之後,快速地跟進和落實,在本書初稿編寫完成時馬上着手出版,諸位得以在2016年上半年就手捧此書,皆需感謝福川兄的重點關注和推進。
最後要感謝我的父母,感謝他們把我帶到這個世界上并讓我做自己想做和要做的事情。
目 錄
前言
<a href="https://yq.aliyun.com/articles/90112">第1章 了解微服務</a>
<a href="https://yq.aliyun.com/articles/90112">1.1 什麼是微服務</a>
<a href="https://yq.aliyun.com/articles/90113">1.2 微服務因何而生</a>
<a href="https://yq.aliyun.com/articles/90115">1.3 微服務會帶來哪些好處</a>
1.3.1 獨立,獨立,還是獨立
1.3.2 多語言生态
<a href="https://yq.aliyun.com/articles/90117">1.4 微服務會帶來哪些挑戰</a>
<a href="https://yq.aliyun.com/articles/90119">1.5 本章小結</a>
<a href="https://yq.aliyun.com/articles/90122">第2章 飲水思源:回顧與探索spring架構的本質</a>
<a href="https://yq.aliyun.com/articles/90122">2.1 spring架構的起源</a>
<a href="https://yq.aliyun.com/articles/90127">2.2 spring ioc其實很簡單</a>
<a href="https://yq.aliyun.com/articles/90137">2.3 了解一點兒javaconfig</a>
2.3.1 那些高曝光率的annotation
<a href="https://yq.aliyun.com/articles/90139">2.4 本章小結</a>
<a href="https://yq.aliyun.com/articles/90144">第3章 springboot的工作機制</a>
<a href="https://yq.aliyun.com/articles/90144">3.1 springboot初體驗</a>
<a href="https://yq.aliyun.com/articles/90148">3.2 @springbootapplication背後的秘密</a>
3.2.1 @configuration創世紀
3.2.2 @enableautoconfiguration的功效
3.2.3 可有可無的@componentscan
<a href="https://yq.aliyun.com/articles/90200">3.3 springapplication:springboot程式啟動的一站式解決方案</a>
3.3.1 深入探索springapplication執行流程
3.3.2 springapplicationrunlistener
3.3.3 applicationlistener
3.3.4 applicationcontextinitializer
3.3.5 commandlinerunner
<a href="https://yq.aliyun.com/articles/90206">3.4 再談自動配置</a>
3.4.1 基于條件的自動配置
3.4.2 調整自動配置的順序
<a href="https://yq.aliyun.com/articles/90214">3.5 本章小結</a>
第4章 了解紛雜的spring-boot-starter
4.1 應用日志和spring-boot-starter-logging
4.2 快速web應用開發與spring-boot-starter-web
4.2.1 項目結構層面的約定
4.2.2 springmvc架構層面的約定和定制
4.2.3 嵌入式web容器層面的約定和定制
4.3 資料通路與spring-boot-starter-jdbc
4.3.1 springboot應用的資料庫版本化管理
4.4 spring-boot-starter-aop及其使用場景說明
4.4.1 spring-boot-starter-aop在建構spring-boot-starter-metrics自定義子產品中的應用
4.5 應用安全與spring-boot-starter-security
4.5.1 了解springsecurity基本設計
4.5.2 進一步定制spring-boot-starter-security
4.6 應用監控與spring-boot-starter-actuator
4.6.1 自定義應用的健康狀态檢查
4.6.2 開放的endpoints才真正“有用”
4.6.3 用還是不用,這是個問題
4.7 本章小結
第5章 springboot微服務實踐探索
5.1 使用springboot建構微服務
5.1.1 建立基于dubbo架構的springboot微服務
5.1.2 使用springboot快速建構web api
5.1.3 使用springboot建構其他形式的微服務
5.2 springboot微服務的釋出與部署
5.2.1 spring-boot-starter的釋出與部署方式
5.2.2 基于rpm的釋出與部署方式
5.2.3 基于docker的釋出與部署方式
5.3 springboot微服務的注冊與發現
5.4 springboot微服務的監控與運維
5.4.1 推還是拉,這一直是個問題
5.4.2 從局部性觸發式報警到系統性智能化報警
5.5 springboot微服務的安全與防護
5.6 springboot微服務體系的脊梁:釋出與部署平台
5.7 本章小結
第6章 springboot與scala
6.1 使用maven建構和釋出基于springboot的scala應用
6.1.1 進一步簡化基于maven的scala項目建立
6.1.2 進一步簡化基于scala的web api開發
6.2 使用sbt建構和釋出基于springboot的scala應用
6.2.1 探索基于sbt的springboot應用開發模式
6.2.2 探索基于sbt的springboot應用釋出政策
6.3 本章小結
第7章 springboot總結與展望