微服務簡介
首先來談一下什么是微服務? 微服務近幾年如此過火,到底是什么優(yōu)勢吸引了無數(shù)開發(fā)人員熱衷于微服務架構.微服務(Microservices)即是一種系統(tǒng)架構風格,將原來的單體應用架構拆分為若干個相互獨立的小型服務,每個服務可以獨立運行,服務與服務之間通過基于HTTP的Restful API完成通信.被拆分的每個服務完成某一項的業(yè)務功能,或是一些耦合度比較高的業(yè)務功能,每個服務都有自身的數(shù)據(jù)存儲,業(yè)務開發(fā)劣坊,測試以及部署方案.可以使用不同的語言進行各個服務的開發(fā).
微服務架構特性
- 服務組件化
- 按照業(yè)務組織團隊
- 做"產品"的態(tài)度
- 智能端點與啞管道
- 去中心化治理
- 去中心化管理數(shù)據(jù)基
- 礎設施自動化
- 容錯設計
- 演進式設計
- 微服務的選擇
近幾年微服務幾乎被絕大多數(shù)開發(fā)人員所談及,也有無數(shù)的架構先驅在實際項目中應用微服務架構理念,為微服務架構的發(fā)展,實踐做出了不可忽視的貢獻,尤以互聯(lián)網(wǎng)大公司共享最為突出,如國內的阿里巴巴更是走在前列.如下有諸多:
服務治理: 阿里巴巴開源的Dubbo(已是Apache旗下頂級項目),Netflix的Eureka和Apache的Consul等.
服務追蹤:SpringCloud的Sleuth,Twitter的Zipkin
分布式配置管理:Netflix的Archaius,SpringCloud的Config,淘寶的Diamond等.
......
實施微服務架構的方案有很多,但是對于不同的公司和組織加之眾多的開源框架,可以說,很難找到兩個完全一致的架構方案.面對如此多的解決方案,對于新手來說,選擇何種解決方案,無疑是一個棘手的問題,如果對每一種進行嘗試,分析,勢必耗時耗力,并不是一個明智的選擇.
而SpringCloud的出現(xiàn),無疑是廣大開發(fā)人員的一大福音,其初衷并非是解決微服務架構中的某一個問題,而是一個解決微服務架構實施的綜合性解決方案.其整合了許多被實踐證明過的框架作為實施方案的基礎部件,并在這個基礎上創(chuàng)建了一批優(yōu)秀的邊緣組件,為開發(fā)人員提供了極大的便利性.下面是SpringCloud簡介
SpringCloud簡介
SpringCloud是一個基于SpringBoot實現(xiàn)的微服務架構開發(fā)利器.為實現(xiàn)微服務架構中涉及到的配置管理涝涤,服務治理蜜葱,斷路器,智能路由梭姓,控制總線忧换,分布式會話,集群狀態(tài)管理等提供了一種簡單的開發(fā)方式.
SpringCloud包含眾多子項目,例如有:
Spring Cloud Config:配置管理工具,支持使用Git存儲配置內容.
Spring Cloud Netflix:核心組件,對多個Netflix OSS開源套件進行整合
Eureka: 服務治理組件,包含服務注冊中心蜻牢,服務注冊與發(fā)現(xiàn)機制的實現(xiàn)
Hystrix: 容錯管理組件,實現(xiàn)斷路器模式,幫助服務依賴中出現(xiàn)的延遲和為故障提供強大的容錯能力.
Ribbon: 客戶端負載均衡的服務調用組件.
Feign: 基于Ribbon和Hystrix的聲明式服務調用組件
Zuul:網(wǎng)關組件烤咧,提供智能路由,訪問過濾等功能.
Archaius: 外部化配置組件.
Spring Cloud Bus:事件孩饼,消息總線,用于傳播集群中的狀態(tài)變化或事件.
Spring Cloud Cluster:針對Zookeeper髓削,Redis,Consul的選舉算法和通用狀態(tài)模式的實現(xiàn)
Spring Cloud Consul:服務發(fā)現(xiàn)與配置管理工具.
Spring Cloud Stream:通過Redis,Rabbit或者Kafka實現(xiàn)的消費微服務,可通過簡單的聲明式模型來發(fā)送和接收消息.
Spring Cloud Security:安全工具包,提供在Zuul代理中對OAuth2客戶端請求的中繼器
Spring Cloud Zookeeper:基于Zookeeper的服務發(fā)現(xiàn)與配置管理組件
Spring Cloud Starters:Spring Cloud的基礎組件,基于Spring Boot風格項目的基礎依賴模塊
Spring Cloud CLI:在Groovy中快速創(chuàng)建Spring Cloud應用的Spring Cloud CLI插件.