微服務領域是否是要變天了?Spring Cloud Alibaba正式入駐Spring Cloud官方孵化器!

引言程序員

  微服務這個詞的熱度自它出現之後,就一直是高燒不退,而微服務之因此這麼火,其實和近幾年互聯網的創業氛圍是分不開的。spring

  與傳統行業不一樣,互聯網企業有一個特色,那就是市場擴張速度很是之快,可能也就是幾天的時間,一家本來名不經傳的互聯網公司就會人盡皆知,一家獨角獸公司也就誕生了。sql

  而伴隨着這些,接踵而來的,通常是業務的急速變化與規模的擴張,這就對應用應對變化的能力提出了更高的要求。bootstrap

  微服務,就是專門治療這種狀況的良藥。後端

  也所以,如今的絕大多數互聯網公司,都逐漸引入了微服務架構,以便於應對發展愈來愈快的公司業務。緩存

  現在程序員聊天,尤爲是Java後端猿,你要不懟上幾句微服務,你都很差意思說話。架構

而就在今天,2018年10月31日的凌晨,這個偉大的日子裏,Spring Cloud Alibaba正式入駐了Spring Cloud官方孵化器,並在maven中央庫發佈了第一個版本。併發

  可能有的同窗會問,爲啥要選在凌晨發佈?難道是由於更有儀式感嗎?app

  筆者很負責的告訴你,非也,是由於美國特麼的和我們有時差,-_-。負載均衡

聊聊Spring Cloud

  提及微服務這個話題,就不得不提到Spring Cloud以及Spring這個神奇的團隊。

  筆者我的一直是Spring團隊的腦殘粉,這不只僅是由於Spring團隊開源的情懷,更是由於,Spring團隊的代碼,是惟一讓筆者以爲挑不出什麼毛病的代碼。

  這在程序員身上是很難發生的,尤爲是筆者這種有點代碼潔癖的人,由於程序員有個特色,那就是看誰的代碼都是垃圾,包括從前的本身都不例外。

  這也從側面說明了Spring團隊的強大,以及他們的工匠精神。

  好了,這一波馬屁拍完,該來談談Spring Cloud了。

  Spring Cloud是什麼?

  不少人雖然在用Spring Cloud,但其實並不瞭解Spring Cloud究竟是什麼,只知道開發微服務,能夠選擇使用Spring Cloud。

  我們首先來看看Spring Cloud官方的介紹,其實這一句話基本說出了Spring Cloud的本質。

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems.Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer's own laptop, bare metal data centres, and managed platforms such as Cloud Foundry.

筆者翻譯:Spring Cloud提供了一些工具,可讓開發者快速構建基於一些通用模式的分佈式應用。分佈式應用的協調都遵循「鍋爐板模式」(boiler plate patterns),使用Spring Cloud之後,開發者能夠更快的構建實現了這些模式的服務和應用。而這些服務和應用,也能夠很好的工做在任何分佈式環境,包括開發者本身的筆記本,裸金屬數據中心以及像Cloud Foundry這樣的託管平臺。

  和Spring團隊以往的作法類似,不論是以前的Spring Framework,仍是後來的Spring Boot,Spring團隊一直在致力於讓開發者能夠「更快更好」的作開發。

  這也是爲什麼Spring團隊在開發者圈子裏口碑一直很好,是由於Spring團隊一直在爲開發者服務,並且都是開源項目,能夠說,Java之因此能這麼火,Spring團隊功不可沒。

  一波隱晦的商業互捧以後,我們來具體談一談,Spring Cloud到底都提供了哪些工具。

  從Spring Cloud官方文檔裏,咱們能夠摘取到Spring的核心功能。

Distributed/versioned configuration【分佈式以及版本化的配置】

Service registration and discovery【服務註冊與發現】

Routing【路由】

Service-to-service calls【服務調用】

Load balancing【負載均衡】

Circuit Breakers【斷路器】

Distributed messaging【分佈式消息】

  不難發現,其實上面這些功能,就是開發微服務架構下的分佈式應用,會常常用到的。

  不過,Spring團隊厲害的地方就在於,他們不多會重複造輪子,而是讓別人幫他們來造輪子。

  好比最先的Spring framework,Spring只是提供了IOC和AOP的核心功能,而具體的MVC框架、ORM框架、緩存等等,Spring都只是提供了很好的支持和兼容,並不會去本身實現一個。

  固然,除非是對方作的不夠好,好比Spring MVC,就是由於當初的Struts2有着諸多的缺陷,才應運而生,而且很快就替代掉了Struts2,成爲了主流的MVC框架。

  一樣,Spring Cloud也是如此,Spring Cloud的核心並無實現任何上述功能,讓咱們來看看Spring Cloud官方文檔的一段介紹。

Many of those features are covered bySpring Boot, on which Spring Cloud builds. Some more features are delivered by Spring Cloud as two libraries: Spring Cloud Context and Spring Cloud Commons. Spring Cloud Context provides utilities and special services for theApplicationContextof a Spring Cloud application (bootstrap context, encryption, refresh scope, and environment endpoints). Spring Cloud Commons is a set of abstractions and common classes used in different Spring Cloud implementations (such as Spring Cloud Netflix and Spring Cloud Consul).

  筆者翻譯:

  這些功能(就是上面列舉的功能)大部分是由Spring Boot覆蓋的,而Spring Cloud基於Spring Boot構建。Spring Cloud做爲兩個libraries提供了更多的功能。這兩個libraries分別是,Spring Cloud Context和Spring Cloud Commons。

  其中Spring Cloud Context提供了一些工具,以及一個Spring Cloud應用的ApplicationContext的特殊服務,好比bootstrap上下文(關於這個傢伙,後面有機會筆者會詳細介紹)、加密、刷新、環境端點這些功能。

  而Spring Cloud Commons則是一組抽象和在不一樣Spring Cloud實現(好比Spring Cloud Netflix和Spring Cloud Consul)中使用的通用類。

  能夠看出,Spring Cloud實際上是一套規範,而不是一個能夠拿來即用的框架,而Spring Cloud Netflix以及Spring Cloud Consul,纔是Spring Cloud規範的實現。

固然了,從今天開始,Spring Cloud的實現又多了一種,Spring Cloud Alibaba,-_-。

  那麼,接下來,我們就來談談Spring Cloud Alibaba。

讓微服務領域變天的Spring Cloud Alibaba

  文章的標題起的有點欠抽,不過筆者本人始終信奉一句話,管它三七二十一,先吹了再說,-_-。

  看過前面內容的同窗,應該已經很是清楚的知道,Spring Cloud Alibaba和Spring Cloud的關係,Spring Cloud Alibaba(如下簡稱SCA)和Spring Cloud Netflix(如下簡稱SCN)同樣,都是Spring Cloud規範的一套實現。

  爲何筆者要扯上SCN?

  由於所謂的「變天」,其實就和SCN有關。

  雖然這句話說出來可能火藥味有點濃,但筆者仍是要說,SCA的宗旨,就是要替代SCN,成爲Spring Cloud規範的默認實現方案,有種宮廷劇嬪妃爭寵的既視感,-_-。

  爲何筆者會有如此信心?這其實並非盲目的自信,而是有據可依的。

  首先,不得不認可的是,目前絕大多數的Spring Cloud開發者,使用的都是SCN,但這些開發者大部分都有一個特色,那就是規模和流量都較小,通常能有20個微服務左右的規模,已經算是比較大的了。

  可是SCA中的組件,基本都是由阿里內部中間件轉化而來,經歷過屢次雙十一的考驗,這也就意味着,SCA有着充足的場景,驗證了它對於高併發的抗壓能力。

  固然了,SCN或許也有這樣的客戶,只是筆者不知道而已,但這並不妨礙SCA的強大,由於十幾億人口的大國,全世界都沒有幾個,而中國是其中一個,所以,雙十一所面對的流量高峯,足以讓全世界顫抖。

  此外,僅從國內來講,SCA在地域和語言上也有着絕對的優點,畢竟,SCA有中文文檔,而相信絕大多數沒有自虐傾向的程序員,仍是更傾向於看中文文檔,而不是英文吧,-_-。

  最後,從各個組件上來講,SCA也有不少優點,不過由於內容太多,此處再也不詳表,後續筆者會專門寫文章去逐個組件對比介紹。

  所以,筆者對SCA的將來仍是很是看好的。

  不過說了這麼多,有的同窗可能要抱怨了,「我信你個鬼,你這個死做者壞得很,只顧吹牛,SCA到底都有啥啊?到如今都沒說。」

  咳咳,接下來,筆者就簡單羅列下,當前SCA版本所支持的功能列表。

開源組件(spring-cloud-alibaba開頭):

  服務發現(Service Discovery)

  配置管理(Configuration Management)

  高可用防禦(Safeguarding for High Availability)

商業服務(spring-cloud-alicloud開頭):

  服務發現(ANS——Application Naming Service)

  配置管理(ACM——Application Configuration Management)

  對象存儲服務(OSS——Object Storage Service)

  同時,接下來的時間裏,SCA還會以最快的速度支持如下功能。

開源組件(spring-cloud-alibaba開頭):

  消息隊列(RocketMQ)

商業服務(spring-cloud-alicloud開頭):

  任務調度(SchedulerX)

  日誌服務(SLS)

結語

  寫到這裏,筆者該吹的基本上都吹完了。

其實寫了這麼多,歸根結底筆者就是想說一句話,Spring Cloud Alibaba正式發佈初版到maven中央庫,已經能夠正式開始使用了哦

  筆者大概能猜到,大家此時的心裏獨白,或許是這樣的。

  「我信你個鬼,你個死做者壞得很,害我看了這麼多廢話。」

  筆者只想告訴你,若干年之後,你必定會慶幸你看了這篇文章,讓你知道了Spring Cloud Alibaba。

歡迎工做一到五年的Java工程師朋友們加入Java架構開發: 854393687

羣內提供免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用本身每一分每一秒的時間來學習提高本身,不要再用"沒有時間「來掩飾本身思想上的懶惰!趁年輕,使勁拼,給將來的本身一個交代!

相關文章
相關標籤/搜索