前言
隨著業務的發展,筆者當時所在公司的專案越來越臃腫。隨著程式的堆砌,專案變得越來越複雜、開發效率越來越低、越來越難以維護,夥伴們苦不堪言,毫無幸福感可言。
我們迫切需要能夠解放生產力、放飛夥伴的「良藥」,於是,微服務進入視野。然而,微服務究竟是什麼,眾說紛紜,沒有人能說清楚什麼是微服務。不僅如此,大家對微服務的態度也是涇渭分明,吹捧者、貶低者比比皆是,在筆者的QQ群、微信群中硝煙四起。筆者參加了不少交流會,感覺許多分享常常停留在理論階段。一場會下來,覺得似乎懂了,卻苦於沒有對應的技術堆疊去實現這些理論。
Docker、Jenkins等工具筆者均有涉獵,然而使用什麼技術堆疊去實作微服務架構,在很長時間內都是筆者心中的疑問。
2015年中,筆者偶然在GitHub上看到一個名為Spring Cloud的架構,它以Spring Boot為基礎,設定簡單、設計優雅,並且大多元件經過了生產環境的考驗。筆者花1個月左右的時間詳細研究了Spring Cloud的相關元件後,體會更深。然而,技術選型必須進行客觀、多維度、全方位的分析,而不應由我個人的主觀意見作為決定因素。文件豐富程度、社區活躍度、技術堆疊生態、開發效率、執行效率、成功案例等,都是我們選型的重要因素。經過研究,其他幾點都很OK,只缺成功案例—在當時,國內幾乎沒什麼成功案例,甚至連中文的部落格、相關資料都沒有。
這讓筆者陷入兩難,在這一過程中,公司一邊繼續使用阿里巴巴開放原始碼的Dubbo(Dubbo雖然非常流行,但畢竟有段時間沒有維護了,開放原始碼生態也不是很好),一邊在筆者的組織下進行一些Spring Cloud相關的技術分享。一方面是希望借此開拓夥伴們的視野,另一方面也希望能將兩者相互印證,看是否可在現有平台上參考Spring Cloud的設計或使用其部分元件。
2016年8月,筆者有幸代表公司參加了全球微服務架構高峰討論區。會上,Josh Long對Spring Cloud的說明在現場引起了不小的轟動,也讓筆者眼前為之一亮。會後筆者諮詢Josh,Spring Cloud是否可用於生產、是否大規模使用、國內是否已有成功案例,對方一一給予肯定的答覆。此一回覆消除了筆者最後的一點疑慮,開始考慮從Dubbo逐步移轉至Spring Cloud的規劃與方案。會後,筆者心想,不妨將Spring Cloud相關知識歸納成一個「系列部落格」,一來是加深自己的了解,二來也算是豐富Spring Cloud的中文資料。於是,筆者建立自己的部落格(http://www.itmuch.com),並開始了系列部落格的撰寫。寫了兩篇後,筆者將部落格連結分享到微信群中,沒成想,剛好被Josh Long看到,並引用至Spring官方部落格中。這讓筆者感到無比榮幸的同時,也讓自己貢獻開放原始碼社區的欲望空前強烈,於是乎,一口氣又寫了兩篇。
再後來,筆者成立了微服務/Spring Cloud/Docker相關的QQ群(157525002),在QQ群夥伴的鼓勵下,筆者決定寫一本Spring Cloud開放原始碼書(github.com/eacdy/spring-cloud-book),沒想到竟然獲得開放原始碼中國的推薦。再然後,筆者在許進的邀請下,聯合創辦了Spring Cloud中國社區。最後,在群管理員馮靖的引薦下,認識了網紅級的高手張開濤,開濤幫忙引薦了電子工業出版社編輯俠少。從此,筆者正式撰寫實體書。
本以為,有了開放原始碼書的撰寫經驗,實體書應該是較為輕鬆的一件事。然而,樣稿發出後,卻被俠少鄙視⋯⋯主要是語文是體育老師教的,病句滿天飛,況且,理論不是我的專長。期間一度想要放棄,多虧了俠少的鼓勵,總算堅持寫了下去⋯⋯。
倉促完稿之際,感慨萬千,激動與感激交織,於是,本段不可免俗,進入老生常談的「鳴謝」環節—感謝我的家人,寫書是件費時費力的功夫,在近半年的時間,我的父母和妻子給予我相當大的支援;感謝電子工業出版社夥伴們的辛苦工作,沒有劉佳禾、孫奇俏、俠少等可愛的朋友們,我的書不可能問世;衷心感謝丁露、馮靖、張英磊、王天青、吳峻申(N本書的作者)在百忙之中幫忙校對;衷心感謝QQ群、微信群的朋友們,你們給了筆者最大的幫助和支援!(註:排名不分先後。)
特別鳴謝:感謝吳峻申對筆者提出很多中肯實用的建議和意見;感謝張英磊幫忙重繪、美化書中絕大部分架構圖。
謹以此書獻給想要學習微服務、Spring Cloud、Docker又不知從何開始的讀者朋友們。希望本書能切切實實地幫助你使用特定技術堆疊實現微服務架構的落地,也希望本書不會令你失望。本書很多理論性的內容並未展開,例如Cloud Native、12-factor APP、DDD等,但筆者都在文中延伸閱讀、Tips或Warning的形式進行註記,這部分內容希望讀者能夠自行延伸閱讀。本書書附程式碼放在Github上,網址為:「github.com/eacdy/spring-cloud-study」。
周立