基礎概念:
微服務架構的風格,就是將單一程序開發成一個微服務,每個微服務運行在自己的進程中,並使用輕量級機制通信,通常是 HTTP RESTFUL API 。這些服務圍繞業務能力來划分構建的,並通過完全自動化部署機制來
獨立部署 這些服務可以使用不同的編程語言,以及不同數據存儲技術,以保證最低限度的集中式管理。
特點:
1.微服務單元按業務來划分(將一個個小的功能模塊划分成一個個服務,每個服務采用的開發語言、持久層技術都可以不相同)
2.微服務通過 HTTP 來互相通信(restTemplate、微服務中的每個服務都是生產者和消費者、服務和服務之間通過resultful來調用)
3.微服務的數據庫獨立(每個服務對應一個單獨的數據庫,互不關聯)
4.微服務的自動化部署(通過docker技術來部署微服務)
5.服務集中化管理(微服務需要一個服務管理中心來管理服務,通過服務注冊、服務發現、服務調用來實現業務功能)
6.分布式架構
7.熔斷機制(當某個服務失效時,熔斷機制會判斷這個服務是否失效、如果失效,則不處理該服務的業務邏輯功能、直接返回異常json信息,但是在斷開一段時間后會有一個半打開狀態,測試部分接口是否可以走通,如果可以走通 說明服務恢復正常,關閉熔斷器。如果不能走通則繼續開啟熔斷器)
世界上沒有沒有缺點的技術,下面是微服務的一些缺點:
1.微服務的復雜度(微服務跟一般單體服務相比較要復雜的多)
2.微服務中采用分布式事務(兩個服務相關聯,事務的一致性)
3.服務的划分(功能難以划分)
4.服務的部署(部署的難度較高,一般使用docker自動化部署項目)
微服務技術方案:
Spring Cloud Config :服務配置中心,將所有的服務的配置文件放到本地倉庫或者遠程倉庫,配置中心負責讀取倉庫的配置文件,其他服務向配置中心讀取配置。 SpringCloud Config 使得服務的配置統一管理 並可以在不人為重啟服務的情況下進行配置文件的刷新。
Spring Cloud Netflix :它是通過包裝了 Netflix 公司的微服務組件實現的,也是SpringCloud 核心的核心組件,包括 Eureka Hystrix Zuul Archaius 等。
Eureka :服務注冊和發現組件
Hystrix :熔斷器組件 Hystrix 通過控制服務的 API 接口的熔斷來轉移故障,防止微服務系統發生雪崩效應。另外, Hystrix 能夠起到服務限流和服務降級的作用。使用Hystrix Dashboard 組件監控單個服務的熔斷器的狀態,使用 Turbine 組件可以聚合多
個服務的熔斷器的狀態
Zuul 能路由網關組 Netflix Zuul能夠起到智能路由和請求過濾的作用,是服務接口統一暴露 關鍵模塊,也是安全驗證、權限控制的一道門。
Feign 聲明式遠程調度組件
Ribbon 負載均衡組件。
Archaius :配置管理 API 的組件, 一個基於 Java 的配置管理庫主要用於多配置的動態獲取。 Spring Cloud Bus 消息總線組件,常和 Spring Cloud Config 配合使用,用於動態新服務的配置。
Spring Cloud Sleuth :服務鏈路追蹤組件,封裝了 Dapper Zipkin, Kibina 等組件,可以實時監控服務的鏈路調用情況。
Spring Cloud Data Flow :大數據操作組件, Spring Cloud Data Flow SpringXD替代品,也是 個混合計算的模型,可以通過命令行的方式操作數據流
Spring Cloud Security 安全模塊組件,是對 Spring Security 封裝,通常配合 0Auth2使用來保護微服務系統的安全。
Spring Cloud Consule :該組件是 Spring Cloud Consul 的封裝,和 ureka 類似,它是一個服務注冊和發現組件
Spring Cloud Zookeeper 該組件是 Spring Cloud Zookeeper 封裝,和 Eureka Consul相似,用於服務的注冊和發現
Spring Cloud Stream :數據流操作組件,可以封裝 Redis RabbitMQ Kafka 等組件實現發送和接收消息等。
Spring Cloud CLI :該組件是 Spring Cloud Spring Boot CLI 的封裝,可以讓用戶以命令行方式快速運行和搭建容器
Spring Cloud Task 該組件基於 Spring Task ,提供了任務調度和任務管理的功能。
Spring Cloud Connectors 用於 Paas 雲平台連接到后端。