分散式的微服務架構中的核心理念
【1】微服務是什麼
提到微服務,就沒法不提到這位“大神”——馬丁·福勒,他沒有直接給微服務下一個精準的定義,而是給出了微服務特點的描述:根據業務模組劃分服務種類。 每個服務可以獨立部署並且互相隔離。 通過輕量的 API 呼叫服務。 服務需要保證良好的高可用性。
就目前而言,對於微服務業界並沒有一個統一的、標準的定義。
微服務的優缺點
- 優點
每個服務足夠內聚,足夠小,程式碼容器理解這樣能聚焦一個指定的業務功能或業務需求。
開發簡單、開發效率提高,一個服務可能就是專一的只幹一件事。
微服務能夠被小團隊單獨開發,這個小團隊是2-5人的開發人員組成。
微服務是鬆耦合的,是有功能意義的服務,無論是在開發階段或者部署階段都是獨立的。
微服務能使用不同的語言開發。
易於和第三方整合,微服務允許容易且靈活的方式整合自動部署,通過持續整合工具,如Jenkins,Hudson,bamboo。
微服務易於被一個開發人員理解、修改和維護,這樣小團隊能夠更關注自己的工作成果。無需通過合作才能體現價值。
微服務允許你利用、融合最新技術。
微服務只是業務邏輯的程式碼,不會喝HTML、CSS或其他介面元件混合。
每個微服務都有自己的儲存能力,可以有自己的資料庫,也可以使用統一的資料庫。
- 缺點
開發人員要處理分散式系統的複雜性;
多服務運維難度–隨著服務的增加,運維的壓力也在增大;
系統部署依賴;
服務間通訊成本;
資料一致性;
系統整合測試;
效能監控。
【2】微服務與微服務架構
① 微服務
微服務強調的是服務的大小,它關注的是某個點,是具體解決某一個問題/提供落地相對地對應服務的一個服務應用。狹義的看,可以看做eclipse裡面的一個個微服務工程/或者Module。
② 微服務架構
微服務架構是一種架構模式或者說是一種架構風格,它提倡將單一應用程式劃分成一組小的服務,每個服務執行在其獨立的自己的程序中,服務之間相互協調、互相配合,為使用者提供最終價值。
服務之間採用輕量級的通訊機制互相溝通(通常是基於HTTP的RESTful API )。每個服務都圍繞著具體業務進行構建,並且能夠被獨立地部署到生產環境、類生產環境等。
另外,應儘量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建,可以有一個非常輕量級的集中式管理來協調這些服務,可以使用不同的語言來編寫服務,也可以使用不同的資料儲存。
【3】微服務的技術棧
微服務條目 | 落地技術 |
---|---|
服務開發 | SpringBoot、Spring、SpringMVC |
服務配置與管理 | Netflix公司的Archaius、阿里的Diamond等 |
服務註冊與發現 | Eureka、Consul、Zookeeper等 |
服務呼叫 | REST、RPC、gRPC |
服務熔斷器 | Hystrix、Envoy等 |
負載均衡 | Ribbon、Nginx |
服務介面呼叫 | Feign等 |
訊息佇列 | Kafka、RabbitMQ、ActiveMQ |
服務配置中心管理 | SpringCloudConfig、Chef等 |
服務路由(API閘道器) | Zuul等 |
服務監控 | Zabbix、Nagios、Metrics、Spectator |
全鏈路追蹤 | Zipkin、Brave、Dapper等 |
服務部署 | Docker、OperOpenStack、Kubernetes等 |
資料流操作開發包 | SpringCloud Stream(封裝與Redis、Rabbit、Kafka等傳送接收訊息) |
事件訊息匯流排 | SpringCloud Bus |
【4】各個微服務框架對比
功能點/服務框架 | SpringCloud | Motan(新浪) | gRPC(google) | Thrift(FaceBook) | Dubbo(阿里)/DubboX(噹噹) |
---|---|---|---|---|---|
功能定位 | 完整的微服務框架 | RPC框架,但整合了ZK或Consul,實現叢集環境的基本的服務註冊/發現 | RPC框架 | RPC框架 | 服務框架 |
支援REST | 是 Ribbon支援多種可插拔的序列化選擇 | 否 | 否 | 否 | 否 |
支援RPC | 否 | 是(Hession2) | 是 | 是 | 是 |
支援多語言 | 是(REST形式) | 否 | 是 | 是 | 否 |
服務註冊/發現 | 是(Eureka),Eureka服務登錄檔,Karyon服務端框架支援服務自注冊和健康檢查 | 是(zookeeper/consul) | 否 | 否 | 是 |
負載均衡 | 是(服務端zuul+客戶端Ribbon),zuul-服務,動態路由 雲端負載均衡,Eureka針對中間層伺服器 | 是(客戶端) | 否 | 否 | 是(客戶端) |
配置服務 | Netffix Archaius SpringCloud Config Server 集中配置 | 是(zookeeper提供) | 否 | 否 | 否 |
服務呼叫鏈監控 | 是(zuul) zuul提供邊緣服務 API閘道器 | 否 | 否 | 否 | 否 |
高可用/容錯 | 是(服務端Hystrix+客戶端Ribbon) | 是(客戶端) | 否 | 否 | 是(客戶端) |
典型應用案例 | Netflix | Sina | 阿里/噹噹 | ||
社群活躍程度 | 高 | 一般 | 高 | 一般 | 間斷五年,17年阿里重啟維護Dubbo |
學習難度 | 中等 | 低 | 高 | 高 | 低 |
文件豐富度 | 高 | 一般 | 一般 | 一般 | 高 |
其他 | SpringCloudBus為我們的應用程式帶來了更多的管理端點 | 支援降級 | Netflix內部在開發整合gRPC | IDL定義 | 實踐的公司比較多 |
相關推薦
2018最新技術JAVA架構師高併發分散式微服務架構網際網路電商dubbo
借用 Java 併發程式設計實踐中的話:編寫正確的程式並不容易,而編寫正常的併發程式就更難了。相比於順序執行的情況,多執行緒的執行緒安全問題是微妙而且出乎意料的,因為在沒有進行適當同步的情況下多執行緒中各個操作的順序是不可預期的。 併發程式設計相比 Java 中其他知識點學習起來門檻相對較高,學習起來比較費
分散式微服務架構體系詳解
課程介紹微服務架構的技術體系、社群目前已經越來越成熟。在最初系統架構的搭建,或者當現有架構已到達瓶頸需要進行架構演進時,很多架構師、運維工程師會考慮是否需要搭建微服務架構體系。雖然很多文章都說微服務架構是複雜的、會帶來很多分散式的問題,但只要我們瞭解這些問題,並找到解法,就會
分散式微服務架構的技術體系
微服務架構的演變 微服務是一種服務間鬆耦合的、每個服務之間高度自治並且使用輕量級協議進行通訊的可持續整合部署的分散式架構體系。這一句包含了微服務的特點,微服務架構和其他架構有什麼區別?以下對比一些常見的架構。 單體架構 單體架構是最簡單的軟
分散式微服務架構體系詳解 -轉
微服務架構的演變微服務架構的技術體系、社群目前已經越來越成熟。在最初系統架構的搭建,或者當現有架構已到達瓶頸需要進行架構演進時,很多架構師、運維工程師會考慮是否需要搭建微服務架構體系。雖然很多文章都說微服務架構是複雜的、會帶來很多分散式的問題,但只要我們瞭解這些問題,並找到解法,就會有種撥開雲霧的感覺。微服務
《分散式服務架構原理設計與實戰》第一章分散式微服務架構設計原理筆記
J2EE三層 Web層, 業務邏輯層, 資料存取層。對應職能團隊分為UI互動研發團推,後端服務研發團隊,DBA團隊。 應用伺服器提供物件關係對映服務,資料持久服務,事物服務,安全服務和訊息服務等。SOA特點:1. 良好的對外介面,通過網路協議對外提供服務。服務之間鬆耦合。
分散式的微服務架構中的核心理念
【1】微服務是什麼 提到微服務,就沒法不提到這位“大神”——馬丁·福勒,他沒有直接給微服務下一個精準的定義,而是給出了微服務特點的描述:根據業務模組劃分服務種類。 每個服務可以獨立部署並且互相隔離。 通過輕量的 API 呼叫服務。 服務需要保證良好的高可用性。
從經典架構項目中透析微服務架構的核心概念和充血模型
java 架構 微服務 微服務架構和SOA區別 微服務現在辣麽火,業界流行的對比的卻都是所謂的Monolithic單體應用,而大量的系統在十幾年前都是已經是分布式系統了,那麽微服務作為新的理念和原來的分布式系統,或者說SOA(面向服務架構)是什麽區別呢? 我們先看相同點: 需要Registry,實
Java架構-(四)整合spring cloud雲服務架構 - 企業分散式微服務雲架構構建
今天正式給大家介紹了Spring Cloud - 企業分散式微服務雲架構構建,我這邊結合了當前大部分企業的通用需求,包括技術的選型比較嚴格、苛刻,不僅要用業界最流行的技術,還要和國際接軌,在未來的5~10年內不能out。作為公司的架構師,也要有一種放眼世界的眼光,不僅要給公司做好的技術選
SpringCloud核心元件在微服務架構中的作用
Eureka: 各個服務啟動時,Eureka Client都會將服務註冊到Eureka Server,並且Eureka Client還可以反過來從Eureka Server拉取登錄檔,從而知道其他服務在哪裡。 Ribbon:服務間發起請求的時候,基於Ribbon 做負載均衡,從一個服務的多臺機器選擇
SpringCloud微服務雲架構構建B2B2C電子商務平臺之-企業分散式微服務雲架構構建(四)
今天正式給大家介紹了Spring Cloud - 企業分散式微服務雲架構構建,我這邊結合了當前大部分企業的通用需求,包括技術的選型比較嚴格、苛刻,不僅要用業界最流行的技術,還要和國際接軌,在未來的5~10年內不能out。作為公司的架構師,也要有一種放眼世界的眼光,不僅要給公司做好的技術選型,而且還要快速響應企
Spring Cloud--鴻鵠Cloud分散式微服務雲系統—雲架構程式碼結構構建
根據微服務化設計思想,結合springcloud一些優秀的專案,如服務發現、治理、配置化管理、路由負載、安全控制等優秀解決方案,使用Maven技術將框架進行模組化、服務化、原子化封裝並構建,也為後期的灰度釋出、持續整合提前做好準備工作。 另外在搭建環境之前,大家需要熟練掌握
微服務架構 (九): 分散式微服務下的資料一致性
2016.8.21, 深圳, Ken Fang 微服務都擁有各自的資料庫且微服務都是部署在一分散式的環境下的。所以, 微服務間要維持彼此間資料庫中的資料的一致性, 便需採用: BASE – Basic Availability, Soft State, Eventual
Spring Cloud+Spring Boot+Mybatis+shiro +微服務 企業分散式微服務雲架構技術分享
1. 介紹Commonservice-system是一個大型分散式、微服務、面向企業的JavaEE體系快速研發平臺,基於模組化、服務化、原子化、熱插拔的設計思想,使用成熟領先的無商業限制的主流開源技術構建。採用服務化的元件開發模式,可實現複雜的業務功能。提供驅動式開發模式
springcloud Spring Boot mybatis分散式微服務雲架構(六):配置中心
下面針對該Controller編寫測試用例驗證正確性,具體如下。當然也可以通過瀏覽器外掛等進行請求提交驗證。 @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes =
Spring Cloud分散式微服務雲架構原始碼分析 — Eureka
在看具體原始碼前,我們先回顧一下之前我們所實現的內容,從而找一個合適的切入口去分析。首先,服務註冊中心、服務提供者、服務消費者這三個主要元素來說,後兩者(也就是Eureka客戶端)在整個執行機制中是大部分通訊行為的主動發起者,而註冊中心主要是處理請求的接收者。所以,我們可
spring cloud + spring boot + springmvc+mybatis分散式微服務雲架構
做一個微服務架構需要的技術整理:View: H5、Vue.js、Spring Tag、React、angularJsSpring Boot/Spring Cloud:Zuul、Ribbon、Feign、Turbine、Hystrix、Oauthor2、Sleuth、API G
SpringCloud SpringBoot mybatis 分散式微服務(十八)Spring Boot中的事務管理
快速入門在Spring Boot中,當我們使用了spring-boot-starter-jdbc或spring-boot-starter-data-jpa依賴的時候,框架會自動預設分別注入DataSourceTransactionManager或JpaTransactionM
Spring Cloud Spring Boot mybatis分散式微服務雲架構(一)快速入門
快速入門本章主要目標完成Spring Boot基礎專案的構建,並且實現一個簡單的Http請求處理,通過這個例子對Spring Boot有一個初步的瞭解,並體驗其結構簡單、開發快速的特性。系統要求:Java 7及以上Spring Framework 4.1.5及以上本文采用Ja
SpringCloud SpringBoot mybatis 分散式微服務(九)Spring Boot中使用Spring-data-jpa讓資料訪問更簡單
然而,在實際開發過程中,對資料庫的操作無非就“增刪改查”。就最為普遍的單表操作而言,除了表和欄位不同外,語句都是類似的,開發人員需要寫大量類似而枯燥的語句來完成業務邏輯。為了解決這些大量枯燥的資料操作語句,我們第一個想到的是使用ORM框架,比如:Hibernate。通過整合H
分散式微服務雲架構dubbo+zookeeper+springmvc+mybatis+shiro+redis例項
原始碼結構 JEESZ驅動式專案構建 內建高效可靠的程式碼生成器 支援多種資料模型,根據資料庫表生成常規重複性程式碼,使研發工程師更專注於業務邏輯程式碼的實現,大幅提升其工作效率,解放其重複性工作 OPEN CI 開源規範化專案管理解決方案,實現軟體流水線式