摘要:在服務(wù)治理方面,相較于而言,并不成熟。遺憾的是,往往被部分開發(fā)者片面地視作服務(wù)治理的框架,而非微服務(wù)基礎(chǔ)設(shè)施。因此,建議開發(fā)人員將或者遷移為服務(wù)。因此,下一步需要將其配置服務(wù)遠(yuǎn)程。當(dāng)服務(wù)提供方啟動(dòng)后,下一步實(shí)現(xiàn)一個(gè)服務(wù)消費(fèi)方。
原文鏈接:Dubbo Spring Cloud 重塑微服務(wù)治理,來(lái)自于微信公眾號(hào):次靈均閣摘要
在 Java 微服務(wù)生態(tài)中,Spring Cloud1 成為了開發(fā)人員的首選技術(shù)棧,然而隨著實(shí)踐的深入和運(yùn)用規(guī)模的擴(kuò)大,大家逐漸意識(shí)到 Spring Cloud 的局限性。在服務(wù)治理方面,相較于 Dubbo2 而言,Spring Cloud 并不成熟。遺憾的是,Dubbo 往往被部分開發(fā)者片面地視作服務(wù)治理的 RPC 框架,而非微服務(wù)基礎(chǔ)設(shè)施。即使是那些有意將 Spring Cloud 遷移至 Dubbo 的小伙伴,當(dāng)面對(duì)其中遷移和改造的成本時(shí),難免望而卻步。慶幸的是,Dubbo 生態(tài)體系已發(fā)生巨大變化,Dubbo Spring Cloud 作為 Spring Cloud Alibaba3 的最核心組件,完全地?fù)肀?Spring Cloud 技術(shù)棧,不但無(wú)縫地整合 Spring Cloud 注冊(cè)中心,包括 Nacos4、Eureka5、Zookeeper6 以及 Consul7,而且完全地兼容 Spring Cloud Open Feign8 以及 @LoadBalanced RestTemplate,本文將討論 Dubbo Spring Cloud 對(duì) Spring Cloud 技術(shù)棧所帶來(lái)的革命性變化。
注:由于 Spring Cloud 技術(shù)棧涵蓋的特性眾多,因此本文討論的范圍僅限于服務(wù)治理部分。簡(jiǎn)介
Dubbo Spring Cloud 基于 Dubbo Spring Boot 2.7.19 和 Spring Cloud 2.x 開發(fā),無(wú)論開發(fā)人員是 Dubbo 用戶還是 Spring Cloud 用戶,都能輕松地駕馭,并以接近“零”成本的代價(jià)使應(yīng)用向上遷移。Dubbo Spring Cloud 致力于簡(jiǎn)化 Cloud Native 開發(fā)成本,提高研發(fā)效能以及提升應(yīng)用性能等目的。
2019年4月19日,Dubbo Spring Cloud 首個(gè) Preview Release,隨同 Spring Cloud Alibaba 0.2.2.RELEASE 和 0.9.0.RELEASE 一同發(fā)布10,分別對(duì)應(yīng) Spring Cloud Finchley11 與 Greenwich12 (下文分別簡(jiǎn)稱為 “F” 版 和 “G” 版) 。
版本支持由于 Spring 官方宣布 Spring Cloud Edgware(下文簡(jiǎn)稱為 “E” 版) 將在 2019 年 8 月 1 號(hào)后停止維護(hù)13,因此,目前 Dubbo Spring Cloud 發(fā)布版本并未對(duì) “E” 版提供支持,僅為 “F” 版 和 “G” 版開發(fā),同時(shí)也建議和鼓勵(lì) Spring Cloud 用戶更新至 “F” 版 或 “G” 版。
同時(shí),Dubbo Spring Cloud 基于 Apache Dubbo Spring Boot 2.7.1 開發(fā)(最低 Java 版本為 1.8),提供完整的 Dubbo 注解驅(qū)動(dòng)、外部化配置以及 Production-Ready 的特性,詳情請(qǐng)參考:https://github.com/apache/inc...
以下表格將說(shuō)明 Dubbo Spring Cloud 版本關(guān)系映射關(guān)系:
Spring Cloud | Spring Cloud Alibaba | Spring Boot | Dubbo Spring Boot |
---|---|---|---|
Finchley | 0.2.2.RELEASE | 2.0.x | 2.7.1 |
Greenwich | 0.9.0.RELEASE | 2.1.x | 2.7.1 |
Edgware | 0.1.2.RELEASE | 1.5.x | Dubbo Spring Cloud 不支持該版本 |
由于 Dubbo Spring Cloud 構(gòu)建在原生的 Spring Cloud 之上,其服務(wù)治理方面的能力可認(rèn)為是 Spring Cloud Plus,不僅完全覆蓋 Spring Cloud 原生特性13,而且提供更為穩(wěn)定和成熟的實(shí)現(xiàn),特性比對(duì)如下表所示:
功能組件 | Spring Cloud | Dubbo Spring Cloud |
---|---|---|
分布式配置(Distributed configuration) | Git、Zookeeper、Consul、JDBC | Spring Cloud 分布式配置 + Dubbo 配置中心14 |
服務(wù)注冊(cè)與發(fā)現(xiàn)(Service registration and discovery) | Eureka、Zookeeper、Consul | Spring Cloud 原生注冊(cè)中心15 + Dubbo 原生注冊(cè)中心16 |
負(fù)載均衡(Load balancing) | Ribbon(隨機(jī)、輪詢等算法) | Dubbo 內(nèi)建實(shí)現(xiàn)(隨機(jī)、輪詢等算法 + 權(quán)重等特性) |
服務(wù)熔斷(Circuit Breakers) | Spring Cloud Hystrix | Spring Cloud Hystrix + Alibaba Sentinel17 等 |
服務(wù)調(diào)用(Service-to-service calls) | Open Feign、RestTemplate | Spring Cloud 服務(wù)調(diào)用 + Dubbo @Reference |
鏈路跟蹤(Tracing) | Spring Cloud Sleuth18 + Zipkin19 | Zipkin、opentracing 等 |
Dubbo Spring Cloud 基于 Spring Cloud Commons 抽象實(shí)現(xiàn) Dubbo 服務(wù)注冊(cè)與發(fā)現(xiàn),應(yīng)用只需增添外部化配置屬性 “dubbo.registry.address = spring-cloud://localhost”,就能輕松地橋接到所有原生 Spring Cloud 注冊(cè)中心,包括:
Nacos
Eureka
Zookeeper
Consul
Dubbo Spring Cloud 將在下個(gè)版本支持 Spring Cloud 注冊(cè)中心與 Dubbo 注冊(cè)中心并存,提供雙注冊(cè)機(jī)制,實(shí)現(xiàn)無(wú)縫遷移。2. Dubbo 作為 Spring Cloud 服務(wù)調(diào)用
默認(rèn)情況,Spring Cloud Open Feign 以及 @LoadBalanced RestTemplate 作為 Spring Cloud 的兩種服務(wù)調(diào)用方式。Dubbo Spring Cloud 為其提供了第三種選擇,即 Dubbo 服務(wù)將作為 Spring Cloud 服務(wù)調(diào)用的同等公民出現(xiàn),應(yīng)用可通過(guò) Apache Dubbo 注解 @Service和 @Reference 暴露和引用 Dubbo 服務(wù),實(shí)現(xiàn)服務(wù)間多種協(xié)議的通訊。同時(shí),也可以利用 Dubbo 泛化接口輕松實(shí)現(xiàn)服務(wù)網(wǎng)關(guān)。
3. Dubbo 服務(wù)自省Dubbo Spring Cloud 引入了全新的服務(wù)治理特性 - 服務(wù)自?。⊿ervice Introspection),其設(shè)計(jì)目的在于最大化減輕注冊(cè)中心負(fù)載,去 Dubbo 注冊(cè)元信息中心化。假設(shè)一個(gè) Spring Cloud 應(yīng)用引入 Dubbo Spring Boot Starter,并暴露 N 個(gè) Dubbo 服務(wù),以 Dubbo Nacos 注冊(cè)中心 為例,當(dāng)前應(yīng)用將注冊(cè) N+1 個(gè) Nacos 應(yīng)用,除 Spring Cloud 應(yīng)用本身之前,其余 N 個(gè)應(yīng)用均來(lái)自于 Dubbo 服務(wù),當(dāng) N 越大時(shí),注冊(cè)中心負(fù)載越重。因此,Dubbo Spring Cloud 應(yīng)用對(duì)注冊(cè)中心的負(fù)載相當(dāng)于傳統(tǒng) Dubbo 的 N 分之一,在不增加基礎(chǔ)設(shè)施投入的前提下,理論上,使其集群規(guī)模擴(kuò)大 N 倍。當(dāng)然,未來(lái)的 Dubbo 也將提供服務(wù)自省的能力。
4. Dubbo 遷移 Spring Cloud 服務(wù)調(diào)用盡管 Dubbo Spring Cloud 完全地保留了原生 Spring Cloud 服務(wù)調(diào)用特性,不過(guò) Dubbo 服務(wù)治理的能力是 Spring Cloud Open Feign 所不及的,如高性能、高可用以及負(fù)載均衡穩(wěn)定性等方面。因此,建議開發(fā)人員將 Spring Cloud Open Feign 或者 @LoadBalanced RestTemplate 遷移為 Dubbo 服務(wù)。考慮到遷移過(guò)程并非一蹴而就,因此,Dubbo Spring Cloud 提供了方案,即 @DubboTransported 注解。該注解能夠幫助服務(wù)消費(fèi)端的 Spring Cloud Open Feign 接口以及 @LoadBalanced RestTemplate Bean 底層走 Dubbo 調(diào)用(可切換 Dubbo 支持的協(xié)議),而服務(wù)提供方則只需在原有 @RestController 類上追加 Dubbo @Servce 注解(需要抽取接口)即可,換言之,在不調(diào)整 Feign 接口以及 RestTemplate URL 的前提下,實(shí)現(xiàn)無(wú)縫遷移。如果遷移時(shí)間充分的話,建議使用 Dubbo 服務(wù)重構(gòu)系統(tǒng)中的原生 Spring Cloud 服務(wù)的定義。
簡(jiǎn)單示例開發(fā) Dubbo Spring Cloud 應(yīng)用的方法與傳統(tǒng) Dubbo 或 Spring Cloud 應(yīng)用類似,按照以下步驟就能完整地實(shí)現(xiàn)Dubbo 服務(wù)提供方和消費(fèi)方的應(yīng)用,完整的示例代碼請(qǐng)?jiān)L問(wèn)一下資源:
Dubbo 服務(wù)提供方應(yīng)用 - https://github.com/spring-clo...
Dubbo 服務(wù)消費(fèi)方應(yīng)用 - https://github.com/spring-clo...
定義 Dubbo 服務(wù)接口Dubbo 服務(wù)接口是服務(wù)提供方與消費(fèi)方的遠(yuǎn)程通訊契約,通常由普通的 Java 接口(interface)來(lái)聲明,如 EchoService 接口:
public interface EchoService { String echo(String message); }
為了確保契約的一致性,推薦的做法是將 Dubbo 服務(wù)接口打包在第二方或者第三方的 artifact(jar)中,如以上接口就存放在 artifact spring-cloud-dubbo-sample-api 之中。
對(duì)于服務(wù)提供方而言,不僅通過(guò)依賴 artifact 的形式引入 Dubbo 服務(wù)接口,而且需要將其實(shí)現(xiàn)。對(duì)應(yīng)的服務(wù)消費(fèi)端,同樣地需要依賴該 artifact,并以接口調(diào)用的方式執(zhí)行遠(yuǎn)程方法。接下來(lái)進(jìn)一步討論怎樣實(shí)現(xiàn) Dubbo 服務(wù)提供方和消費(fèi)方。
實(shí)現(xiàn) Dubbo 服務(wù)提供方 初始化 spring-cloud-dubbo-server-sample Maven 工程首先,創(chuàng)建 artifactId 名為 spring-cloud-dubbo-server-sample 的 Maven 工程,并在其 pom.xml 文件中增添
Dubbo Spring Cloud 必要的依賴:
org.springframework.cloud spring-cloud-dubbo-sample-api ${project.version} org.springframework.boot spring-boot-actuator org.springframework.cloud spring-cloud-starter-dubbo org.springframework.cloud spring-cloud-starter-alibaba-nacos-discovery
以上依賴 artifact 說(shuō)明如下:
spring-cloud-dubbo-sample-api : 提供 EchoService 接口的 artifact
spring-boot-actuator : Spring Boot Production-Ready artifact,間接引入 spring-boot artifact
spring-cloud-starter-dubbo : Dubbo Spring Cloud Starter artifact,間接引入 dubbo-spring-boot-starter 等 artifact
spring-cloud-starter-alibaba-nacos-discovery : Nacos Spring Cloud 服務(wù)注冊(cè)與發(fā)現(xiàn) artifact
值得注意的是,以上 artifact 未指定版本(version),因此,還需顯示地聲明
org.springframework.cloud spring-cloud-alibaba-dependencies 0.9.0.RELEASE pom import
以上完整的 Maven 依賴配置,請(qǐng)參考 spring-cloud-dubbo-server-sample pom.xml 文件
完成以上步驟之后,下一步則是實(shí)現(xiàn) Dubbo 服務(wù)
實(shí)現(xiàn) Dubbo 服務(wù)EchoService 作為暴露的 Dubbo 服務(wù)接口,服務(wù)提供方 spring-cloud-dubbo-server-sample 需要將其實(shí)現(xiàn):
@org.apache.dubbo.config.annotation.Service class EchoServiceImpl implements EchoService { @Override public String echo(String message) { return "[echo] Hello, " + message; } }
其中,@org.apache.dubbo.config.annotation.Service 是 Dubbo 服務(wù)注解,僅聲明該 Java 服務(wù)(本地)實(shí)現(xiàn)為 Dubbo 服務(wù)。
因此,下一步需要將其配置 Dubbo 服務(wù)(遠(yuǎn)程)。
在暴露 Dubbo 服務(wù)方面,推薦開發(fā)人員外部化配置的方式,即指定 Java 服務(wù)實(shí)現(xiàn)類的掃描基準(zhǔn)包。
Dubbo Spring Cloud 繼承了 Dubbo Spring Boot 的外部化配置特性,也可以通過(guò)標(biāo)注 @DubboComponentScan 來(lái)實(shí)現(xiàn)基準(zhǔn)包掃描。
同時(shí),Dubbo 遠(yuǎn)程服務(wù)需要暴露網(wǎng)絡(luò)端口,并設(shè)定通訊協(xié)議,完整的 YAML 配置如下所示:
dubbo: scan: # dubbo 服務(wù)掃描基準(zhǔn)包 base-packages: org.springframework.cloud.alibaba.dubbo.bootstrap protocol: # dubbo 協(xié)議 name: dubbo # dubbo 協(xié)議端口( -1 表示自增端口,從 20880 開始) port: -1 registry: # 掛載到 Spring Cloud 注冊(cè)中心 address: spring-cloud://localhost spring: application: # Dubbo 應(yīng)用名稱 name: spring-cloud-alibaba-dubbo-server main: # Spring Boot 2.1 需要設(shè)定 allow-bean-definition-overriding: true cloud: nacos: # Nacos 服務(wù)發(fā)現(xiàn)與注冊(cè)配置 discovery: server-addr: 127.0.0.1:8848
以上 YAML 內(nèi)容,上半部分為 Dubbo 的配置:
dubbo.scan.base-packages : 指定 Dubbo 服務(wù)實(shí)現(xiàn)類的掃描基準(zhǔn)包
dubbo.protocol : Dubbo 服務(wù)暴露的協(xié)議配置,其中子屬性 name 為協(xié)議名稱,port 為協(xié)議端口( -1 表示自增端口,從 20880 開始)
dubbo.registry : Dubbo 服務(wù)注冊(cè)中心配置,其中子屬性 address 的值 "spring-cloud://localhost",說(shuō)明掛載到 Spring Cloud 注冊(cè)中心
當(dāng)前 Dubbo Spring Cloud 實(shí)現(xiàn)必須配置 dubbo.registry.address = spring-cloud://localhost,下一個(gè)版本將其配置變?yōu)榭蛇x
(參考 issue #592),
并且支持傳統(tǒng) Dubbo 協(xié)議的支持(參考 issue #588)
下半部分則是 Spring Cloud 相關(guān)配置:
spring.application.name : Spring 應(yīng)用名稱,用于 Spring Cloud 服務(wù)注冊(cè)和發(fā)現(xiàn)。
該值在 Dubbo Spring Cloud 加持下被視作 dubbo.application.name,因此,無(wú)需再顯示地配置 dubbo.application.name
spring.main.allow-bean-definition-overriding : 在 Spring Boot 2.1 以及更高的版本增加該設(shè)定,
因?yàn)?Spring Boot 默認(rèn)調(diào)整了 Bean 定義覆蓋行為。(推薦一個(gè)好的 Dubbo 討論 issue #3193)
spring.cloud.nacos.discovery : Nacos 服務(wù)發(fā)現(xiàn)與注冊(cè)配置,其中子屬性 server-addr 指定 Nacos 服務(wù)器主機(jī)和端口
以上完整的 YAML 配置文件,請(qǐng)參考 spring-cloud-dubbo-server-sample bootstrap.yaml 文件
完成以上步驟后,還需編寫一個(gè) Dubbo Spring Cloud 引導(dǎo)類。
引導(dǎo) Dubbo Spring Cloud 服務(wù)提供方應(yīng)用Dubbo Spring Cloud 引導(dǎo)類與普通 Spring Cloud 應(yīng)用并無(wú)差別,如下所示:
@EnableDiscoveryClient @EnableAutoConfiguration public class DubboSpringCloudServerBootstrap { public static void main(String[] args) { SpringApplication.run(DubboSpringCloudServerBootstrap.class); } }
在引導(dǎo) DubboSpringCloudServerBootstrap 之前,請(qǐng)?zhí)崆皢?dòng) Nacos 服務(wù)器。
當(dāng) DubboSpringCloudServerBootstrap 啟動(dòng)后,將應(yīng)用 spring-cloud-dubbo-server-sample 將出現(xiàn)在 Nacos 控制臺(tái)界面。
當(dāng) Dubbo 服務(wù)提供方啟動(dòng)后,下一步實(shí)現(xiàn)一個(gè) Dubbo 服務(wù)消費(fèi)方。
實(shí)現(xiàn) Dubbo 服務(wù)消費(fèi)方由于 Java 服務(wù)就 EchoService、服務(wù)提供方應(yīng)用 spring-cloud-dubbo-server-sample 以及 Nacos 服務(wù)器均已準(zhǔn)備完畢。Dubbo 服務(wù)消費(fèi)方
只需初始化服務(wù)消費(fèi)方 Maven 工程 spring-cloud-dubbo-client-sample 以及消費(fèi) Dubbo 服務(wù)。
與服務(wù)提供方 Maven 工程類,需添加相關(guān) Maven 依賴:
org.springframework.cloud spring-cloud-alibaba-dependencies 0.9.0.RELEASE pom import org.springframework.cloud spring-cloud-dubbo-sample-api ${project.version} org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-actuator org.springframework.cloud spring-cloud-starter-dubbo org.springframework.cloud spring-cloud-starter-alibaba-nacos-discovery
與應(yīng)用 spring-cloud-dubbo-server-sample 不同的是,當(dāng)前應(yīng)用依賴 spring-boot-starter-web,表明它屬于 Web Servlet 應(yīng)用。
以上完整的 Maven 依賴配置,請(qǐng)參考 spring-cloud-dubbo-client-sample pom.xml 文件配置 Dubbo 服務(wù)消費(fèi)方
Dubbo 服務(wù)消費(fèi)方配置與服務(wù)提供方類似,當(dāng)前應(yīng)用 spring-cloud-dubbo-client-sample 屬于純服務(wù)消費(fèi)方,因此,所需的外部化配置更精簡(jiǎn):
dubbo: registry: # 掛載到 Spring Cloud 注冊(cè)中心 address: spring-cloud://localhost cloud: subscribed-services: spring-cloud-alibaba-dubbo-server spring: application: # Dubbo 應(yīng)用名稱 name: spring-cloud-alibaba-dubbo-client main: # Spring Boot 2.1 需要設(shè)定 allow-bean-definition-overriding: true cloud: nacos: # Nacos 服務(wù)發(fā)現(xiàn)與注冊(cè)配置 discovery: server-addr: 127.0.0.1:8848
對(duì)比應(yīng)用 spring-cloud-dubbo-server-sample,除應(yīng)用名稱 spring.application.name 存在差異外,spring-cloud-dubbo-client-sample
新增了屬性 dubbo.cloud.subscribed-services 的設(shè)置。并且該值為服務(wù)提供方應(yīng)用 "spring-cloud-dubbo-server-sample"。
dubbo.cloud.subscribed-services : 用于服務(wù)消費(fèi)方訂閱服務(wù)提供方的應(yīng)用名稱的列表,若需訂閱多應(yīng)用,使用 "," 分割。
不推薦使用默認(rèn)值為 "*",它將訂閱所有應(yīng)用。
當(dāng)應(yīng)用使用屬性 dubbo.cloud.subscribed-services 默認(rèn)值時(shí),日志中將會(huì)輸出一行警告:
Current application will subscribe all services(size:x) in registry, a lot of memory and CPU cycles may be used,
thus it"s strongly recommend you using the externalized property "dubbo.cloud.subscribed-services" to specify the services
由于當(dāng)前應(yīng)用屬于 Web 應(yīng)用,它會(huì)默認(rèn)地使用 8080 作為 Web 服務(wù)端口,如果需要自定義,可通過(guò)屬性 server.port 調(diào)整。
以上完整的 YAML 配置文件,請(qǐng)參考 spring-cloud-dubbo-client-sample bootstrap.yaml 文件引導(dǎo) Dubbo Spring Cloud 服務(wù)消費(fèi)方應(yīng)用
為了減少實(shí)現(xiàn)步驟,以下引導(dǎo)類將 Dubbo 服務(wù)消費(fèi)以及引導(dǎo)功能合二為一:
@EnableDiscoveryClient @EnableAutoConfiguration @RestController public class DubboSpringCloudClientBootstrap { @Reference private EchoService echoService; @GetMapping("/echo") public String echo(String message) { return echoService.echo(message); } public static void main(String[] args) { SpringApplication.run(DubboSpringCloudClientBootstrap.class); } }
不僅如此,DubboSpringCloudClientBootstrap 也作為 REST Endpoint,通過(guò)暴露 /echo Web 服務(wù),消費(fèi) Dubbo EchoService 服務(wù)。因此,
可通過(guò) curl 命令執(zhí)行 HTTP GET 方法:
$ curl http://127.0.0.1:8080/echo?message=%E5%B0%8F%E9%A9%AC%E5%93%A5%EF%BC%88mercyblitz%EF%BC%89
HTTP 響應(yīng)為:
[echo] Hello, 小馬哥(mercyblitz)
以上結(jié)果說(shuō)明應(yīng)用 spring-cloud-dubbo-client-sample 通過(guò)消費(fèi) Dubbo 服務(wù),返回服務(wù)提供方 spring-cloud-dubbo-server-sample 運(yùn)算后的內(nèi)容。
高階示例如果您需要進(jìn)一步了解 Dubbo Spring Cloud 使用細(xì)節(jié),可參考官方 Samples:https://github.com/spring-clo...
其子模塊說(shuō)明如下:
spring-cloud-dubbo-sample-api:API 模塊,存放 Dubbo 服務(wù)接口和模型定義
spring-cloud-dubbo-provider-web-sample:Dubbo Spring Cloud 服務(wù)提供方示例(Web 應(yīng)用)
spring-cloud-dubbo-provider-sample:Dubbo Spring Cloud 服務(wù)提供方示例(非 Web 應(yīng)用)
spring-cloud-dubbo-consumer-sample:Dubbo Spring Cloud 服務(wù)消費(fèi)方示例
spring-cloud-dubbo-servlet-gateway-sample:Dubbo Spring Cloud Servlet 網(wǎng)關(guān)簡(jiǎn)易實(shí)現(xiàn)示例
問(wèn)題反饋如果您在使用 Dubbo Spring Cloud 的過(guò)程中遇到任何問(wèn)題,請(qǐng)內(nèi)容反饋至 https://github.com/spring-clo...
進(jìn)階閱讀關(guān)于更多的 Dubbo Spring Cloud 特性以及設(shè)計(jì)細(xì)節(jié),請(qǐng)關(guān)注
Spring Cloud Alibaba wiki - https://github.com/spring-clo...
Dubbo 的博客:http://dubbo.apache.org/zh-cn...
下篇預(yù)告接下的文章將會(huì)介紹 Dubbo Spring Cloud 高階示例的運(yùn)用和實(shí)現(xiàn),敬請(qǐng)關(guān)注小馬哥微信公眾號(hào):次靈均閣
獲得最新 Dubbo Spring Cloud 相關(guān)資訊。
新書推薦本書全名為《Spring Boot 編程思想》,是以 Spring Boot 2.0 為討論的主線,討論的范圍將涵蓋 Spring Boot 1.x 的所有版本,以及所關(guān)聯(lián)的 Spring Framework 版本,致力于:
場(chǎng)景分析:掌握技術(shù)選型
系統(tǒng)學(xué)習(xí):拒絕淺嘗輒止
重視規(guī)范:了解發(fā)展趨勢(shì)
源碼解讀:理解設(shè)計(jì)思想
實(shí)戰(zhàn)演練:鞏固學(xué)習(xí)成果
歡迎小伙伴在京東或當(dāng)當(dāng)訂購(gòu)分享推薦 免費(fèi)分享
京東存有少量現(xiàn)貨(隨機(jī)發(fā)送簽名版),可先睹為快:http://t.cn/ExjBU2M
當(dāng)當(dāng)價(jià)格優(yōu)惠,需要五月初發(fā)貨:http://t.cn/EX0QteF
「小馬哥技術(shù)周報(bào)」
斗魚直播
B 站錄播
「慕課網(wǎng)」
Spring Boot 2.0深度實(shí)踐-初遇Spring Boot
Spring Boot 2.0深度實(shí)踐之系列總覽
「SegmentFault」
「小馬哥 2019 跨年直播」一入 Java 深似海,從此“勸退”成必然
收費(fèi)分享「小馬哥 Java 知識(shí)星球」
深入探討 Java 相關(guān)技術(shù),包括行業(yè)動(dòng)態(tài),架構(gòu)設(shè)計(jì),設(shè)計(jì)模式,框架使用,源碼分析等。
SegmentFault 直播
《Java 微服務(wù)實(shí)踐 - Spring Boot / Spring Cloud》
《一入 Java 深似?!?/p>
慕課視頻
《Spring Boot 2.0深度實(shí)踐之核心技術(shù)篇》
慕課網(wǎng)
Spring Boot 2.0深度實(shí)踐之核心技術(shù)篇
Spring Boot 2.0深度實(shí)踐之生態(tài)整合篇(即將上線...)
關(guān)于作者小馬哥,Java 勸退師,Apache 和 Spring Cloud 等知名開源架構(gòu)成員,點(diǎn)擊查看詳情。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74319.html
摘要:原文鏈接時(shí)代,架構(gòu)該怎么跟進(jìn),來(lái)自于微信公眾號(hào)次靈均閣作為核心開發(fā)者,請(qǐng)先簡(jiǎn)單介紹下自己答大家好,我是小馬哥,一名學(xué)習(xí)當(dāng)爸爸的父親,勸退師,項(xiàng)目架構(gòu)師,編程思想的作者。因此,需求的來(lái)源不再已阿里為絕對(duì)主導(dǎo),社區(qū)共建和共制的發(fā)展模式已成事實(shí)。 原文鏈接:Service Mesh 時(shí)代,Dubbo 架構(gòu)該怎么跟進(jìn)?,來(lái)自于微信公眾號(hào):次靈均閣 作為 Duboo 核心開發(fā)者,請(qǐng)先簡(jiǎn)單介紹下...
摘要:原文鏈接時(shí)代,架構(gòu)該怎么跟進(jìn),來(lái)自于微信公眾號(hào)次靈均閣作為核心開發(fā)者,請(qǐng)先簡(jiǎn)單介紹下自己答大家好,我是小馬哥,一名學(xué)習(xí)當(dāng)爸爸的父親,勸退師,項(xiàng)目架構(gòu)師,編程思想的作者。因此,需求的來(lái)源不再已阿里為絕對(duì)主導(dǎo),社區(qū)共建和共制的發(fā)展模式已成事實(shí)。 原文鏈接:Service Mesh 時(shí)代,Dubbo 架構(gòu)該怎么跟進(jìn)?,來(lái)自于微信公眾號(hào):次靈均閣 作為 Duboo 核心開發(fā)者,請(qǐng)先簡(jiǎn)單介紹下...
摘要:目前首個(gè)測(cè)試版是針對(duì)環(huán)境的,社區(qū)宣稱在未來(lái)幾個(gè)月內(nèi)會(huì)為虛擬機(jī)和等其他環(huán)境增加支持。查看下在上的更新時(shí)間,截止年月日所有項(xiàng)目均更新于小時(shí)內(nèi)。核心項(xiàng)目最近更新于一個(gè)月乃至數(shù)月前。所有項(xiàng)目均更新于分鐘內(nèi)。目前對(duì)比來(lái)看,則顯得稍遜下來(lái)。 showImg(https://segmentfault.com/img/remote/1460000010953149); 在 Kubernetes 容器云...
摘要:分布式架構(gòu)五大核心套件服務(wù)發(fā)現(xiàn)云端服務(wù)發(fā)現(xiàn),一個(gè)基于的服務(wù),用于定位服務(wù),以實(shí)現(xiàn)云端中間層服務(wù)發(fā)現(xiàn)和故障轉(zhuǎn)移。 1 后端技術(shù)框架我們選擇Spring Cloud作為微服務(wù)的分布式架構(gòu):Spring Cloud vs Dubbo? 背景 Dubbo,是阿里巴巴服務(wù)化治理的核心框架,并被廣泛應(yīng)用于阿里巴巴集團(tuán)的各成員站點(diǎn)。Spring Cloud,是Spring Source的產(chǎn)物...
閱讀 3027·2023-04-26 00:32
閱讀 510·2019-08-30 15:52
閱讀 2117·2019-08-30 15:52
閱讀 3362·2019-08-30 15:44
閱讀 3290·2019-08-30 14:09
閱讀 1424·2019-08-29 15:15
閱讀 3403·2019-08-28 18:12
閱讀 1087·2019-08-26 13:55