Spring Boot 是 Spring 全家桶的上層封裝,并不是什么嶄新的技術(shù),也不是什么值得成為自己殺手锏的技術(shù)。
Spring Cloud 中 Spring Cloud Netflix 的組件是經(jīng)過(guò)生產(chǎn)環(huán)境驗(yàn)證的,其他的則建議慎重選擇。
微服務(wù)是什么微服務(wù)起源于 2005 年 Peter Rodgers 博士在云端運(yùn)算博覽會(huì)提出的微 Web 服務(wù)(Micro-Web-Service),根本思想類(lèi)似于 Unix 的管道設(shè)計(jì)理念。 2014 年,由 Martin Fowler 與 James Lewis 共同提出了微服務(wù)的概念,定義了微服務(wù)架構(gòu)風(fēng)格是一種通過(guò)一套小型服務(wù)來(lái)開(kāi)發(fā)單個(gè)應(yīng)用的方法,每個(gè)服務(wù)運(yùn)行在自己的進(jìn)程中,并通過(guò)輕量級(jí)的機(jī)制進(jìn)行通訊(HTTP API)。 關(guān)鍵的三點(diǎn)是:
small
automated
lightweight
對(duì)比 SOA,微服務(wù)可以看做是 SOA 的子集,是輕量級(jí)的 SOA,粒度更細(xì)的服務(wù),獨(dú)立進(jìn)程、數(shù)據(jù)分離,更注重敏捷、持續(xù)交付、DevOps 以及去中心化實(shí)踐。 其共同的架構(gòu)原理:
微服務(wù)框架上面講述了微服務(wù)架構(gòu)的眾多基礎(chǔ)設(shè)施,如果每一個(gè)基礎(chǔ)設(shè)施都需要自己開(kāi)發(fā)的話(huà)是非常巨大的開(kāi)發(fā)工作。目前市面上已經(jīng)有不少開(kāi)源的微服務(wù)框架可以選擇。 Spring Boot Spring Boot 是用來(lái)簡(jiǎn)化新 Spring 應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程的。其雖然不是微服務(wù)框架,但其設(shè)計(jì)的初衷本質(zhì)就是微應(yīng)用的底層框架,因此非常適合用于微服務(wù)基礎(chǔ)設(shè)施的開(kāi)發(fā)以及微服務(wù)的應(yīng)用開(kāi)發(fā)。 尤其對(duì)于 Spring 技術(shù)棧的團(tuán)隊(duì)來(lái)說(shuō),基于 Spring Boot 開(kāi)發(fā)微服務(wù)框架和應(yīng)用是自然而然的一個(gè)選擇。 Dubbo & Motan Dubbo 是阿里開(kāi)源的服務(wù)治理框架。其出現(xiàn)在微服務(wù)理念興起之前,可以看做是 SOA 框架的集大成之作。 但其僅僅包含了微服務(wù)基礎(chǔ)設(shè)施的部分功能,諸如熔斷、服務(wù)跟蹤、網(wǎng)關(guān)等都沒(méi)有實(shí)現(xiàn):
Motan 則是微博開(kāi)源的類(lèi)似 Dubbo 的 RPC 框架,與 Dubbo 相比更輕量級(jí)。 Spring Cloud Spring Cloud 是基于 Spring Boot 實(shí)現(xiàn)的微服務(wù)框架,也可以看做一套微服務(wù)實(shí)現(xiàn)規(guī)范。 基本涵蓋了微服務(wù)基礎(chǔ)設(shè)施的方方面面,包括配置管理、服務(wù)發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線(xiàn)、全局鎖、決策競(jìng)選、分布式會(huì)話(huà)和集群狀態(tài)管理等。 其基于 Spring 生態(tài),社區(qū)支持非常好。但其很多組件都沒(méi)有經(jīng)過(guò)生產(chǎn)環(huán)境驗(yàn)證,需要慎重選擇。 Spring Cloud Netflix 是 Spring Cloud 的一個(gè)子項(xiàng)目,是 Spring 對(duì) Netflix OSS 的集成實(shí)現(xiàn)。 基于 Netflix 的大規(guī)模使用,其中的已經(jīng)被廣泛使用的組件包括: