文章目錄:
一妒挎、微服務(wù)簡介
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,目前全球超過一半的人口在使用 互聯(lián)網(wǎng),人們的生活隨著互
聯(lián)網(wǎng)的發(fā)展原朝,發(fā)生了翻天覆地的變化喳坠。各行各業(yè)都在應(yīng)用互聯(lián)網(wǎng)剃幌,國家政策也在大力支持互聯(lián)
網(wǎng)的發(fā)展锥忿。隨著越來越多的用戶參與淹朋,業(yè)務(wù)場景越來越復(fù)雜杈抢,傳統(tǒng)的單體架構(gòu)已經(jīng)很難滿足互
聯(lián)網(wǎng)技術(shù)的發(fā)展要求惶楼。這主要體現(xiàn)在兩方面歼捐,- -是隨著業(yè)務(wù)復(fù)雜度的提高豹储,代碼的可維護(hù)性钠怯、
擴(kuò)展性和可讀性在降低:二是維護(hù)系統(tǒng)的成本、修改系統(tǒng)的成本在提高刽锤。所以并思,改變單體應(yīng)用
架構(gòu)已經(jīng)勢在必行弄砍。另外音婶,隨著云計(jì)算、大數(shù)據(jù)檐什、人工智能的飛速發(fā)展,對(duì)系統(tǒng)架構(gòu)也提出了
越來越高的要求住册。
微服務(wù),是著名的00 (面向?qū)ο笥桑琌bject Oriented) 專家Martin Fowler提出來的名党,它
是用來描述將軟件應(yīng)用程序設(shè)計(jì)為獨(dú)立部署的服務(wù)的一種特殊方式叹阔。 最近兩年传睹,微服務(wù)在各
大技術(shù)會(huì)議、文章帅掘、書籍上出現(xiàn)的頻率已經(jīng)讓人們意識(shí)到它對(duì)于軟件領(lǐng)域所帶來的影響力堂油。
微服務(wù)架構(gòu)的系統(tǒng)是一一個(gè)分布式系統(tǒng)府框,按業(yè)務(wù)領(lǐng)域劃分為獨(dú)立的服務(wù)單元吱窝,有自動(dòng)化運(yùn)維、
容錯(cuò)兴使、快速演進(jìn)的特點(diǎn)照激,它能夠解決傳統(tǒng)單體架構(gòu)系統(tǒng)的痛點(diǎn),同時(shí)也能滿足越來越復(fù)雜的
業(yè)務(wù)需求俩垃。
1.1單體架構(gòu)及其存在的不足
1.2微服務(wù)
1.3微服務(wù)的不足
二口柳、Spring Cloud 簡介
Spring Cloud 作為 Java 言的微服務(wù)框架,它依賴于 Spring Boot 跃闹,有快速開發(fā)、持續(xù)交付和
容易部署等特點(diǎn)望艺。 Spring Cloud 的組件非常多,涉及微服務(wù)的方方面面,井在開源社區(qū) Spring
Netflix Pivotal 兩大公司的推動(dòng)下越來越完善场靴。本章主要介紹 Spring Cloud ,將從以下方面來講解
2.1微服務(wù)應(yīng)該具備的功能
微服務(wù)咧欣,可以拆分為“微”和“服務(wù)” 字轨帜。“微”即小的意思蚌父,那到底多小才算“微”
呢?可能不同的團(tuán)隊(duì)有不同的答案苟弛。從參與微服務(wù)的人數(shù)來講,單個(gè)微服務(wù)從架構(gòu)設(shè)計(jì)右遭、代碼
開發(fā)、測試窘哈、運(yùn)維的人數(shù)加起來是 10 人才算“微”。那么何為“服務(wù)”呢滚婉?按照“微服務(wù)”
概念提出者 Martin Fowler 給出的定義:“服務(wù)”是 個(gè)獨(dú)立運(yùn)行的單元組件,每個(gè)單元組件運(yùn)
行在獨(dú)立的進(jìn)程中满哪,組件與組件之間通常使用 HTTP 這種輕量級(jí)的通信機(jī)制進(jìn)行通信。
2.2Spring Cloud
2.3Dubbo 筒介
Dubbo是阿里巴巴開源的一個(gè)分布式服務(wù)框架民宿,致力于提供高性能和透明化的RPC遠(yuǎn)程
服務(wù)調(diào)用方案像鸡,以及SOA服務(wù)冶理方案。Dubbo 廣泛用于阿里巴巴的各大站點(diǎn)志群,有很多互聯(lián)
網(wǎng)公司也在使用這個(gè)框架,它包含如下核心內(nèi)容锌云。
三吁脱、構(gòu)建微服務(wù)的準(zhǔn)備
子曰 :“ 工欲善其事,必先利其器”兼贡。說的是做好 件事,準(zhǔn)備工作是非常重要的等曼。本章和
章主要介紹構(gòu)建微服務(wù)前的準(zhǔn)備工作 ,本章介紹開發(fā)環(huán)境的搭建禁谦,下 章講解開發(fā)框架
Spring Boot 的入門 废封。搭建的環(huán)境包括 JDK 的安裝、開發(fā)工具的安裝虱饿,以及項(xiàng)目的構(gòu)建工具触趴。
常見的開發(fā) Spring Cloud 項(xiàng)目的工具包括 MyEclipse IntellJ Idea (簡稱 IDEA )渴肉,強(qiáng)烈推薦使用
IDEA 作為開發(fā)工具。 IDEA Spring Boot 起使用仇祭,個(gè)人認(rèn)為是開發(fā) Java 程序的最佳體驗(yàn)。
本書的案例代碼都是在 IDEA 上開發(fā)的没讲,所以本章介紹的開發(fā)工具也是 IDEA 礁苗。項(xiàng)目的構(gòu)建工
具包括 Apache Maven Gradle , Gradle 一個(gè)基于 Apache Ant Apache Maven 概念的項(xiàng)目
自動(dòng)化構(gòu)建的工具爬凑。兩個(gè)構(gòu)建工具都非常方便试伙,按個(gè)人習(xí)慣來選擇, Apache Maven 的使用
要高 潘靖,所以選擇介紹的構(gòu)建工具為 Apache Maven
3.1JDK的安裝
3.2IDEA的安裝
對(duì)于習(xí)慣了使用Eclipse或者M(jìn)yEclipse的開發(fā)者來說蚤蔓,可能不愿意換新的IDEA,因?yàn)樾?/p>
要花時(shí)間去學(xué)習(xí),還要去適應(yīng)新的開發(fā)工具秀又。個(gè)人覺得,IDEA 比Eclipse 系列好用很多凄贩,它
帶來了不一一樣的開發(fā)體驗(yàn)袱讹,主要體現(xiàn)在以下5個(gè)方面。
1.有對(duì)用戶更加友好的界面捷雕, 有更加護(hù)眼的黑色主題壹甥,感覺更高端大氣。
2.比Eclipse更加智能句柠,主要體現(xiàn)在代碼的補(bǔ)全方面棒假。
3.更加友好的代碼提 示功能精盅。
4.內(nèi)置 Maven、Gradle 等構(gòu)建工具叹俏,并且下載依賴包非常智能和流暢。
5.更加強(qiáng)大的糾錯(cuò)能 力屡谐。
雖然蝌数,Eclipse 和IDEA都能開發(fā)出Java項(xiàng)目,Eclipse 也非常好用籽前,但兩者的寫代碼體驗(yàn)
不在一個(gè)級(jí)別上。IDEA 具有更友好的界面和更智能的代碼提示枝哄,以及更強(qiáng)大的糾錯(cuò)能力,所
以IDEA寫代碼體驗(yàn)更好众羡、效率更高蓖租。建議讀者用IDEA來開發(fā)Java 項(xiàng)目,本書所有的代碼都
是用IDEA來寫的蓖宦。
四、開發(fā)框架 Sp ig Boot
Spring Boot 是由 Pivotal 團(tuán)隊(duì)開發(fā)的 Spring 框架柠偶,采用了生產(chǎn)就緒的觀點(diǎn) 睬关,旨在簡化配置诱担,
致力于快速開發(fā)电爹。 Spring Boot 框架提供了自動(dòng)裝配和起步依賴攀痊,使開發(fā)人員不需要配置各種
xml 文件峡谊。通過這種方式,極大地提高了程序的開發(fā)速度施籍。因此, Spring Boot 被認(rèn)為是新
Web 開發(fā)框架苔货。
在過去的 Spring 發(fā)中立哑,需要引入大量的 ml 文件 Spring 2.5 引入了包掃描,消除了
式的配置 Beano Spring 3.0 又引入了基于 JavaBean 的配置铛绰,這種方式可以取代 xml 文件。盡
管如此敢会,在實(shí)際的開發(fā)中還是需要配置 xml 文件这嚣,例如配 SpringMVC 事務(wù)管理器鸥昏、過濾
器姐帚、切面等。
在項(xiàng)目的開發(fā)過程中膳汪,會(huì)引入大量的第 方依賴九秀,選擇依賴是 件不容易的事,解決依賴
與依賴之間的沖突也很耗費(fèi)精力鼓蜒。所以,在以前的 Spring 開發(fā)中晴音,依賴管理也是 件棘手的
事情柔纵。
4.1Spring Boot 的特點(diǎn)
對(duì)比之前的 Spring, Spring Boot 三大特點(diǎn) :自動(dòng)配置、起步依賴和 Actuator 運(yùn)行狀
態(tài)的監(jiān)控或详。
4.2用IDEA構(gòu)建 Spring 則工程
五、服務(wù)注冊(cè)和發(fā)現(xiàn) Eureka
“Eureka”來源于古希臘詞匯椒振,意為“發(fā)現(xiàn)了”梧乘。在軟件領(lǐng)域澎迎,Eureka 是Netlix在線影片
公司開源的一個(gè)服務(wù)注冊(cè)與發(fā)現(xiàn)的組件选调,和其他Netflix公司的服務(wù)組件( 例如負(fù)載均衡、熔
斷器哮洽、網(wǎng)關(guān)等) - 起弦聂, 被Spring Cloud社區(qū)整合為Spring Cloud Netlix模塊。
本章將從以下4個(gè)方面來講解服務(wù)注冊(cè)與發(fā)現(xiàn)模塊Eureka莺葫。
口Eureka 簡介。
口編寫一個(gè) Eureka注冊(cè)和發(fā)現(xiàn)的例子捺檬。
口深入理解 Eureka。
口編寫高可用 的Eureka Server树绩。
5.1Eureka簡介