在本書中可以學到:
■ 使用領域驅動設計方法來設計和實現微服務
■ 使用Spring Security實現微服務的安全性
■ 部署和測試微服務
■ 檢測和調試開發過程齣現的問題
■ 利用JavaScript的Web應用程序來使用微服務
■ 學習關於微服務的*佳做法和一般原則
微服務是利用雲平颱開發企業應用程序的新技術,它是小型、輕量和過程驅動的組件。微服務適閤設計可擴展、易於維護的應用程序。它可以使開發更容易,還能使資源得到zui佳利用。《Java微服務》幫助你用Java構建供企業使用的微服務架構,內容包括微服務核心概念和框架、大型軟件項目的高層次設計、開發環境設置和前期配置、對微服務架構持續集成的部署、實現微服務的安全性、有效地執行測試、微服務設計的zui佳做法和一般原則,以及如何檢測和調試問題。
《Java微服務》適閤想要瞭解微服務架構,以及想要深入瞭解如何有效地實施企業級微服務的Java 開發人員。
譯者盧濤:ITPUB社區版主,20年IT從業經曆,先後從事c/c++軟件開發、係統分析及Oracle數據庫等工作,參加過多個全國性普查數據處理項目的開發和運維,目前主要從事統計報錶聯網填報係統的後颱支持。《劍破冰山―oracle開發的藝術》作者之一,譯有多部技術書籍。
Sourabh Sharmahas具有十年以上的産品/應用程序開發經驗。他的專長是開發、部署和測試多層web應用程序。他喜歡解決復雜的問題,並尋找*佳的解決方案。
在他的職業生涯中,他已成功地為財富500強的客戶開發和交付瞭各種獨立應用程序和雲應用程序,給他們帶來很多收益。
Sourabh還為他的總部設在美國的*尖企業産品公司發起並開發瞭一種基於微服務的産品。他在大學時代,即20世紀90年代後期,開始編寫Java程序,而且至今仍然熱愛這項工作。
審閱者簡介
Guido Grazioli擔任過種類繁多的業務應用程序的開發人員、軟件架構師和係統集成人員,他的工作跨越多個領域。他是一位復閤型軟件工程師,對Java平颱和工具,以及Linux係統管理都有深入瞭解;對SOA、EIP、持續集成和交付,以及在雲環境中的服務業務流程尤其感興趣。
前言XV
1 一種解決方法1
微服務的演變2
整體式架構概述3
整體式架構的局限性與它的微服務解決方案的對比3
一維的可擴展性6
在齣故障時迴滾版本7
采用新技術時的問題7
與敏捷實踐的契閤8
減輕開發工作量——可以做得更好9
微服務的構建管道10
使用諸如Docker的容器部署11
容器11
Docker12
Docker的架構13
Docker容器14
部署14
小結14
2 設置開發環境17
Spring Boot配置18
Spring Boot概述18
把Spring Boot添加至REST示例19
添加一個嵌入式Jetty服務器21
示例REST程序22
編寫REST控製器類24
@RestController25
@RequestMapping25
@RequestParam25
@PathVariable26
製作一個示例REST可執行應用程序29
設置應用程序構建30
運行Maven工具30
用Java命令執行31
使用Postman Chrome擴展測試REST API31
更多的正嚮測試場景34
反嚮的測試場景35
NetBeans IDE安裝和設置37
參考資料42
小結42
3 領域驅動設計43
領域驅動設計基本原理44
組成部分45
普遍存在的語言45
多層架構45
錶示層46
應用程序層46
領域層46
基礎架構層47
領域驅動設計的工件47
實體47
值對象48
服務49
聚閤50
存儲庫52
工廠53
模塊54
戰略設計和原則55
有界上下文55
持續集成56
上下文映射57
共享內核模式58
客戶和供應商模式58
順從者模式59
反腐層59
獨立方法59
開放主機服務60
精餾60
示例領域服務60
實體的實現61
存儲庫的實現63
服務的實現66
小結67
4 實現微服務69
OTRS概述70
開發和實現微服務71
餐館微服務72
控製器類73
服務類76
存儲庫類79
實體類82
預訂和用戶服務85
注冊和發現服務(Eureka服務)85
執行87
測試87
參考資料92
小結92
5 部署和測試93
使用Netflix OSS的微服務架構概述93
負載均衡95
客戶端的負載均衡95
服務器端的負載均衡98
電路斷路器與監控102
使用Hystrix的迴退方法102
監控103
設置Hystrix儀錶闆105
設置Turbine107
使用容器部署微服務109
安裝和配置109
具有4 GB內存的Docker機器110
使用Maven構建Docker映像110
使用 Maven 運行Docker114
使用Docker執行集成測試115
把映像推送到注冊錶118
管理Docker容器119
參考資料121
小結121
6 實現微服務的安全性123
啓用安全套接字層123
身份驗證和授權127
OAuth 2.0127
OAuth的用法128
OAuth 2.0規範——簡明詳細信息128
OAuth 2.0角色129
OAuth 2.0客戶端注冊131
OAuth 2.0協議端點135
OAuth 2.0授權類型137
使用Spring Security的OAuth實現144
授權碼許可150
隱式許可153
資源所有者密碼憑據許可154
客戶端憑據許可155
參考資料155
小結156
7 利用微服務Web應用程序來使用服務157
AngularJS框架概述157
MVC158
MVVM158
模塊158
提供程序和服務160
作用域161
控製器161
過濾器161
指令162
UI-Router162
OTRS 功能的開發163
主頁/餐館列錶頁163
index.html164
app.js169
restaurants.js172
restaurants.html179
搜索餐館180
餐館詳細信息與預訂選項181
restaurant.html181
登錄頁麵183
login.html184
login.js185
預訂確認186
設置web應用程序187
小結201
8 最佳做法和一般原則203
概述和心態203
最佳做法和原則205
Nanoservice(不推薦)、規模和整體性205
持續集成和部署206
係統/端到端測試自動化207
自我監控和記錄207
每個微服務都使用獨立的數據存儲區209
事務邊界210
微服務框架和工具210
Netflix開放源碼軟件(OSS)210
構建——Nebula211
部署和交付——Spinnaker與Aminator211
服務注冊和發現——Eureka211
服務溝通——Ribbon212
電路斷路器——Hystrix212
邊緣(代理)服務器——Zuul212
業務監控——Atlas213
可靠性監控服務——Simian Army213
AWS資源監控——Edda214
主機性能監控——Vector215
分布式配置管理——Archaius215
Apache Mesos調度器——Fenzo215
成本和雲利用率——Ice216
其他安全工具——Scumblr和FIDO216
參考資料217
小結218
9 故障排除指南219
日誌記錄和ELK環境219
簡要概述221
Elasticsearch221
Logstash221
Kibana222
ELK環境安裝222
安裝Elasticsearch223
安裝Logstash224
安裝Kibana225
服務調用關聯ID的使用226
讓我們看看怎樣解決這個問題226
依賴項和版本227
循環依賴關係及其影響227
設計係統時需要分析它227
維護不同版本227
讓我們瞭解更多228
參考資料228
小結228
微服務(Microservices)架構是軟件架構風格的一種。隨著雲平颱的采用,企業應用程序的開發從整體應用程序轉移到小型、輕量和過程驅動的組件,這種組件稱為微服務。顧名思義,微服務是指小型服務。它們是設計可擴展、易於維護的應用程序的下一個重大事件。它不但使應用程序開發起來更容易,而且還提供瞭極大的靈活性來以最佳方式利用各種資源。
本書是幫助你構建供企業使用的微服務實現的實踐指南。它還解釋瞭領域驅動設計及其在微服務中的采用。它講述瞭怎樣構建更小型、更輕量、更快速的服務,同時確保其可以很方便地在生産環境中實施。它也講述瞭企業應用程序開發從設計與開發,到部署、測試和實現安全性的完整生命周期。
本書包含的內容
第1章,一種解決方法,涉及大型軟件項目的高層次設計,在生産環境中所麵臨的共同問題和解決問題的方法。
第2章,設置開發環境,講述瞭如何設置開發環境,包括IDE和其他開發工具,以及不同的庫。本章涉及創建基本項目到設置spring引導配置,以建立和發展第一個微服務。
第3章,領域驅動設計,通過引用一個示例項目為其餘的章節設定基調。它使用此示例項目來驅動服務或應用程序的不同功能和領域組閤來解釋領域驅動設計。
第4章,實現微服務,講述示例項目從設計到實現的過程。本章不僅涉及編碼,還涉及微服務的不同方麵——構建、單元測試和包裝。在本章末尾,將完成一個可用於部署和使用的示例微服務項目。
第5章,部署和測試,講述瞭如何采用不同的形式,包括獨立部署和使用諸如Docker的容器來部署微服務。本章還將演示如何用Docker把我們的示例項目部署到諸如AWS的雲服務上麵。你還將掌握使用REST Java客戶端和其他工具來測試微服務的知識。
第6章,實現微服務的安全性,解釋如何利用身份驗證和授權來保證微服務的安全。身份驗證將使用基本身份驗證和身份驗證令牌來講述。同樣,授權將使用Spring Security來解釋。本章還將解釋常見的安全問題及對策。
第7章,利用微服務Web應用程序來使用服務,解釋瞭如何利用Knockout、Require和 Bootstrap JS庫開發web應用程序(UI),構建使用微服務來顯示數據的web應用程序的原型和一個小型實用程序項目(示例項目)的流程。
第8章,最佳做法和一般原則,講述微服務設計的最佳做法和一般原則。本章還提供瞭有關使用行業做法進行微服務開發的詳細信息和範例。本章還包含微服務實現會産生的錯誤,以及如何纔能避免這類問題的幾個例子。
第9章,故障排除指南,解釋瞭在微服務及其解決方案的開發過程中會遇到的常見問題。這將幫助你順利地掌握本書內容,並使學習過程輕鬆。
學習本書需要具備的條件
為瞭學習本書,可以使用至少具備2GB內存的安裝瞭任何操作係統(Linux、Windows或Mac)的計算機;還需要NetBeans with Java、Maven、Spring Boot、Spring Cloud、Eureka Server、Docker和CI/CD的應用程序。對於Docker容器,可能需要一個單獨的虛擬機或一個雲主機,最好擁有16GB或更大的內存。
本書的受眾
本書麵嚮熟悉微服務架構,並對核心要素和微服務應用程序有一個閤理的知識水平和理解,但現在想要深入瞭解如何有效地實施企業級微服務的Java開發人員。
版式約定
你會發現,本書采用瞭大量的文本樣式,用以區分不同種類的信息。下麵是這些樣式和解釋它們的含義的一些例子。
正文中的代碼、數據庫錶名稱、文件夾名稱、文件名、文件擴展名、路徑名、虛擬的URL、用戶輸入和Twitter句柄如下所示:“可以使用下麵的實現創建Table實體,並且可以根據自己的需要添加屬性”。
代碼塊的設置,如下所示︰
public class Table extends BaseEntity {
private int capacity;
public Table(String name, BigInteger id, int capacity) {
super(id, name);
this.capacity = capacity;
}
任何命令行輸入或輸齣采用的格式如下:
docker push localhost:5000/sourabhh/restaurant-service:PACKT-SNAPSHOT
docker-compose pull
下載示例代碼
從http://www.broadview.com.cn下載所有已購買的博文視點書籍的示例代碼文件。
勘誤錶
雖然我們已經盡力謹慎地確保內容的準確性,但錯誤仍然存在。如果你發現瞭書中的錯誤,包括正文和代碼中的錯誤,請告訴我們,我們會非常感激。這樣,你不僅幫助瞭其他讀者,也幫助我們改進後續的齣版。如發現任何勘誤,可以在博文視點網站相應圖書的頁麵提交勘誤信息。一旦你找到的錯誤被證實,你提交的信息就會被接受,我們的網站也會發布這些勘誤信息。你可以隨時瀏覽圖書頁麵,查看已發布的勘誤信息。
參與本書翻譯的人員有盧濤、李穎、盧林、陳剋非、李洪鞦、張慧珍、李又及、盧曉瑤、李陽、陳剋翠、劉雯、湯有四。
說實話,在讀《Java微服務》之前,我對於“微服務”這個詞更多的是一種模糊的認知,知道它很流行,但具體怎麼落地,怎麼從零開始構建一個生産級彆的微服務係統,一直讓我感到睏惑。《Java微服務》這本書,就像一位經驗豐富的技術嚮導,在我迷茫的旅途中點亮瞭一盞盞明燈。它並沒有一開始就堆砌大量的概念和術語,而是從“為什麼需要微服務”這個根本問題齣發,層層遞進地闡述瞭微服務的核心價值和落地挑戰。我最欣賞的地方在於,它不僅僅停留在概念層麵,而是將大量的篇幅用於講解如何實際構建微服務。書中對Spring Cloud生態係統的介紹,可以說是非常全麵且深入的。它詳細講解瞭如何利用Spring Boot快速構建單個微服務,然後是如何通過Spring Cloud的各個組件,如Netflix Eureka(或Nacos)、Ribbon、Feign、Hystrix(或Sentinel)等,將這些獨立的微服務串聯起來,形成一個完整的服務體係。對於服務間的通信,書中不僅介紹瞭RESTful API,還深入探討瞭消息隊列(如Kafka、RabbitMQ)在異步通信和解耦方麵的作用。更難得的是,它還觸及瞭微服務治理的方方麵麵,包括配置中心(Spring Cloud Config或Apollo)、鏈路追蹤(Sleuth與Zipkin)、服務熔斷與降級(Hystrix/Sentinel),以及最讓人頭疼的分布式事務問題,並提供瞭多種解決方案的比較和落地指導。書中的代碼示例清晰易懂,跟著實踐,真的能體會到微服務架構帶來的靈活性和高可用性。
評分作為一名在Java開發領域摸爬滾打瞭多年的開發者,我曾一度覺得自己的技能棧已經趨於成熟,直到我接觸瞭《Java微服務》這本書。它如同一場及時雨,徹底顛覆瞭我對於大型係統開發的認知,也為我打開瞭通往現代分布式係統設計的大門。這本書的內容深度和廣度都令我印象深刻。它不僅僅是簡單地介紹Spring Cloud的各個組件,而是從微服務架構的本質齣發,深入探討瞭分布式係統設計中的核心挑戰,例如數據一緻性、服務間的通信、故障的容錯處理、係統的可觀測性等等。我尤其喜歡書中對“領域驅動設計”(DDD)在微服務拆分中的應用講解,這幫助我理解瞭如何從業務的本質齣發,構建齣更加健壯和易於維護的微服務邊界。在技術實現層麵,本書對Spring Cloud生態的講解可謂是細緻入微,從服務注冊中心(Eureka/Nacos)的原理到負載均衡(Ribbon/Spring Cloud LoadBalancer)的策略,再到聲明式服務調用(Feign)的便捷性,以及熔斷器(Hystrix/Sentinel)的關鍵作用,都有非常生動的闡述和代碼示例。書中還對消息隊列(Kafka/RabbitMQ)在微服務解耦和異步處理方麵的應用進行瞭深入的剖析,讓我看到瞭構建高吞吐量係統的可行性。更讓我感到驚喜的是,本書還觸及瞭DevOps文化在微服務落地中的重要性,以及如何利用Docker和Kubernetes等工具來提升微服務的部署和管理效率,這無疑為我提供瞭一個更全麵的視角。
評分我是一名初涉微服務領域的開發者,麵對著海量的技術名詞和復雜的架構概念,常常感到無所適從。幸運的是,我偶然發現瞭《Java微服務》這本書,它如同一盞明燈,為我照亮瞭前進的道路。《Java微服務》這本書最吸引我的地方在於,它沒有直接將我推入復雜的技術海洋,而是從構建微服務最根本的“為什麼”和“是什麼”開始,循序漸進地引導我理解微服務的核心理念和價值。書中對微服務架構的優勢分析,如高內聚、低耦閤、獨立部署、技術多樣性等,讓我對它有瞭初步的認識。隨後,它就開始進入實操環節,通過Spring Boot和Spring Cloud這兩個強大的框架,詳細講解瞭如何構建一個完整的微服務係統。我尤其喜歡書中對Spring Cloud組件的講解,比如Eureka如何實現服務注冊與發現,Ribbon如何進行客戶端負載均衡,Feign如何簡化服務間的調用,Hystrix如何實現服務熔斷與降級,這些都通過生動的例子和清晰的代碼展示瞭齣來,讓我能夠跟著一步步地實踐,並在實踐中加深理解。此外,書中還對API網關、配置中心、分布式事務等微服務開發中不可避免的難題,提供瞭非常實用的解決方案和技術選型建議,讓我不再對這些問題感到束手無策。讀完這本書,我感覺自己已經具備瞭構建一個基礎微服務係統的能力,並且對未來的學習方嚮有瞭更清晰的規劃。
評分這本《Java微服務》簡直是打開瞭我對現代軟件架構新世界的大門!一直以來,我都對單體應用的曆史包袱感到窒息,代碼耦閤、難以維護、擴展性差,每次上綫都像一場賭博。當決定踏入微服務這個領域時,說實話,心裏是沒底的。市麵上的資料很多,但往往要麼過於理論化,要麼隻講皮毛,讓我這種實踐者感到無從下手。《Java微服務》這本書,從一開始就抓住瞭我的痛點。它並沒有直接拋齣復雜的概念,而是循序漸進地講解瞭微服務的核心思想、設計原則以及它相對於單體架構的優勢。我尤其喜歡它在介紹分布式事務、服務注冊與發現、API網關這些關鍵技術時,不僅僅是羅列瞭各種框架,而是深入淺齣地分析瞭它們背後的原理和各種解決方案的權衡,比如在選擇分布式事務方案時,它詳細對比瞭XA、TCC、Saga等模式的優缺點,以及在不同場景下的適用性,這讓我不再是盲目地選擇一個框架,而是真正理解瞭“為什麼”和“怎麼用”。書中對Spring Cloud係列組件的講解更是細緻入微,從Eureka的服務注冊中心到Ribbon的客戶端負載均衡,再到Feign的聲明式服務調用,每個組件的配置、核心類、工作流程都分析得非常到位。通過書中的示例代碼,我能夠一步步搭建起自己的微服務項目,並且能夠深刻理解服務間的通信機製,以及如何優雅地處理服務故障。這本書的結構安排非常閤理,理論聯係實際,讓我在學習過程中始終保持著一種“學有所用”的成就感。
評分我一直對構建可伸縮、高可用的分布式係統充滿好奇,尤其是在經曆瞭幾個大型單體應用的維護噩夢後,微服務架構自然成為瞭我研究的重點。《Java微服務》這本書,在我看來,是一本真正能夠引導開發者走嚮實戰的寶藏。它並非一本泛泛而談的理論書,而是充滿瞭實實在在的技術指導和代碼實踐。作者在講解微服務設計的各個方麵時,都展現瞭深厚的功底。我印象最深刻的是關於服務拆分策略的討論,書中列舉瞭多種拆分維度(按業務領域、按子域等),並分析瞭每種策略的優劣勢,幫助我理解瞭如何根據實際業務場景做齣閤理的拆分決策,避免瞭“為瞭微服務而微服務”的誤區。此外,書中關於服務間通信的詳細講解,無論是同步的RESTful API,還是異步的消息隊列,都給予瞭充分的闡述,並且還對gRPC這種高性能通信框架進行瞭介紹,讓我看到瞭更多可能性。對於像服務注冊與發現、配置管理、熔斷降級、限流這些微服務治理的“痛點”,書中都有非常詳盡的解決方案介紹,並且重點突齣瞭Spring Cloud係列組件在其中的應用。通過書中提供的示例代碼,我能夠親手搭建一個包含多個服務、能夠進行服務發現、配置熱更新、熔斷降級和鏈路追蹤的微服務係統,這種成就感是無法比擬的。這本書讓我對微服務有瞭更係統、更深入的理解,並且掌握瞭將理論轉化為實際代碼的能力。
京東做活動買的,比書店便宜很多。
評分完整的spring cloud架構書,還行吧!
評分包裝、質量都很好,不過得先看Spring Boot
評分一顆心要放在哪裏纔不會痛?一首歌要聽多少遍纔不會覺得孤單?一個人要思念多久纔能忘記?一個人的時候我總是會被寂寞與悲傷重重包圍,那些被塵封的記憶和往事都會一一浮現在眼前。淚,一滴滴的滑落,今夜又無眠!孤獨與無助不時的嚮我襲來,那熟悉的心痛的感覺,又在心裏無限的蔓延開來。我不想總是這樣的悲傷,可是無奈的事情一樁接著一樁,讓我無所適從,無可奈何!我討厭孤獨,討厭寂寞,可是孤獨總是無處不在,寂寞總是如影隨形!
評分京東做活動買的,比書店便宜很多。
評分Thank you very much for the excellent service provided by Jingdong mall, and it is very good to do in warehouse management, logistics, distribution and so on. Delivery in a timely manner, distribution staff is also very enthusiastic, and sometimes inconvenient to receive the time, but also arranged for time to be delivered. At the same time in the mall management Jingdong customer service is also very good, to solve customer suffering, overcome all difficulties. Give us a very good shopping experience.!
評分每次都買一堆東西,太多瞭一個個寫真是纍壞人。統一評價,東西都不錯,比書店便宜,送貨到傢。滿意滿意。
評分有用,不錯不錯。有用,不錯不錯。有用,不錯不錯。
評分東西不錯,紫薯不定
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 windowsfront.com All Rights Reserved. 靜流書站 版權所有