(本教程的原地址發佈在本人的簡書上: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
一體化應用架構有不少弊端,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(分佈式配置)等。負載均衡
https://gitee.com/rain7564/spring_microservices_study框架
注: