基於Spring Cloud的微服務入門教程

(本教程的原地址發佈在本人的簡書上:http://www.jianshu.com/p/947d57d042e7,若各位看官有什麼問題或不一樣見解請在這裏或簡書留言,謝謝!)git

本人也是前段時間纔開始接觸Spring Boot、Spring Cloud,進而經過Spring Cloud才知道「微服務」這一律念。以後單位的一個項目使用了Spring Cloud來實現,如今想把如何使用Spring Cloud搭建一個簡單的微服務框架寫下來,方便之後查閱,同時本人也但願本教程能起到拋磚引玉的做用,歡迎各位大神一塊兒討論學習。web

本入門教程會介紹微服務架構,而後使用Spring Boot、Spring Cloud框架搭建基於微服務架構的應用,這些應用能部署到公司的私有云或者諸如Amazon、Google等公有云。spring

什麼是微服務

在微服務概念出現前,web應用程序大都採用一體化應用架構,即將全部功能模塊都集中在一塊兒,包括UI、業務邏輯、數據庫操做邏輯等,而後打包成一個龐大的可部署的軟件構件,如war包,最後部署到應用服務器上。這種架構有不少弊端。當有新的需求,應用程序就必須作出修改,而後測試、部署;當應用愈來愈龐大,維護成本愈來愈高,維護也愈來愈困難,最後只能重構整個應用,重構後,又是一個惡性循環。數據庫

「微服務」這個概念是2014年才逐漸進入開發者的視野。能夠用一句話來歸納微服務:微服務應用是由多個分佈式的、鬆耦合的小應用聚合在一塊兒,而這些小應用只實現了少許的定義明確的功能。換句話說,就是:搭建一個大型應用時,使用微服務架構能將這個應用分解成多個易於管理的、功能明確的小應用。這些小應用實現的功能都是從大應用中的特定功能抽取出來的,因此它們是徹底獨立的,不依賴於其它小應用,可以獨立運行。而這些小應用之間的「交流」都是經過接口調用(同步)、消息隊列(異步)等完成的。因此雖然大應用被拆分紅小應用,但它們仍是能夠很好的協調合做,實現各類功能。編程

微服務架構有以下特徵:tomcat

  • 應用程序的邏輯被分解成多個功能明確的、具備明確責任邊界的細粒度組件——微服務。
  • 每一個微服務都擁有本身獨立的業務domain(能夠理解爲實體類);徹底獨立,不依賴於其它任何組件;可以被多個應用程序重用。
  • 微服務之間的交流基於一些基本規則。服務提供者和服務消費者之間的數據交換採用輕量級通訊協議,如:HTTP和JSON。
  • 微服務底層的實現具備編程語言、平臺無關性。由於微服務間的交流是基於「技術無關性協議」(technology-neutral protocol),最多見的是JSON。這意味着微服務應用可使用多種語言、技術進行搭建。

爲何使用Spring Cloud搭建微服務應用

一體化應用架構有不少弊端,Spring開發團隊發現有不少開發團隊逐漸摒棄這種架構,轉而向分佈式應用方向研究。爲應付這種轉變,Spring開發團隊啓動了兩個項目:Spring Boot和Spring Cloud。服務器

Spring Boot是一個從新構想的Spring框架。Spring Boot基於Spring,但去掉了不少企業級的特性,並提供了一個基於Java、面向REST風格的微服務框架。使用一些簡單的註解,就能搭建一個RESTful微服務應用,而後打包並部署,並且不須要應用程序容器(微服務中內置一個tomcat容器)。架構

微服務架構已成爲目前搭建基於雲的應用程序最流行的架構。爲方便咱們開發基於雲的微服務應用,Spring開發社區啓動了Spring Cloud項目。Spring Cloud框架使操做和發佈微服務應用到私有或公有云變得更簡便。Spring Cloud包裝了多個主流的雲管理方面的微服務框架,開發團隊經過簡單的註解就能將這些優秀的微服務框架整合到咱們本身應用中來。這些微服務框架包括:Netflix Eureka(服務註冊與發現)、Netflix Ribbon(客戶端負載均衡)、Netflix Hysteria(熔斷器)、Netflix Zuul(服務網關)、Spring Cloud Config(分佈式配置)等。負載均衡

如下爲本教程的目錄

  1. 第一個微服務應用
  2. 服務註冊與發現——Netflix Eureka
  3. 分佈式配置——Spring Cloud Configuration
  4. 未完待續...

教程的源碼

https://gitee.com/rain7564/spring_microservices_study框架

注:

  1. 學習本教程須要必定的Spring Boot基礎,若讀者未接觸或不熟悉,請下載根目錄的「Spring Boot實戰 ,丁雪豐 (譯者).pdf」,而後自行學習。Spring Boot學深一點,搭建基於Spring Cloud的微服務雲應用時不會太吃力。
  2. 本教程使用的IDE是idea,建議你們學習的時候也使用。
  3. 若使用idea,建議先配置好maven、git等。
相關文章
相關標籤/搜索