亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

什么是微服務?

微服務的概念最早是在 2014 年由 Martin Fowler 和 James Lewis 共同提出,他們定義了微服務是由單一應用程序構成的小服務,擁有自己的進程與輕量化處理,服務依業務功能設計,以全自動的方式部署,與其他服務使用 HTTP API 通訊。同時,服務會使用最小規模的集中管理 (例如 Docker)技術,服務可以用不同的編程語言與數據庫等。 微服務是SOA架構下的最終產物,該架構的設計目標是為了肢解業務,使得服務能夠獨立運行。 主要有一下幾個特點

服務拆分粒度更細 微服務可以說是更細維度的服務化,小到一個子模塊,只要該模塊依賴的資源與其他模塊都沒有關系,那么就可以拆分為一個微服務。

服務獨立部署 每個微服務都嚴格遵循獨立打包部署的準則,互不影響。比如一臺物理機上可以部署多個 Docker 實例,每個 Docker 實例可以部署一個微服務的代碼。

服務獨立維護 每個微服務都可以交由一個小團隊甚至個人來開發、測試、發布和運維,并對整個生命周期負責。

服務治理能力要求高 因為拆分為微服務之后,服務的數量變多,因此需要有統一的服務治理平臺,來對各個服務進行管理。

微服務架構下,服務調用主要依賴下面幾個基本組件:服務描述 注冊中心 服務框架 服務監控 服務追蹤 服務治理

開源RPC框架介紹

Dubbo

國內最早開源的 RPC 框架,由阿里巴巴公司開發并于 2011 年末對外開源,僅支持 JAVA 語言。中間一度沒人維護坑了不少人,17年重啟維護煥發新春。架構圖如下

微服務怎么選,讀了這篇文章,毫無壓力

 

官網: http://dubbo.io/

通信框架方面,Dubbo 默認采用了 Netty 作為通信框架。

通信協議方面,Dubbo 除了支持私有的 Dubbo 協議外,還支持 RMI 協議、Hession 協議、HTTP 協議、Thrift 協議等。

序列化格式方面,Dubbo 支持多種序列化格式,比如 Dubbo、Hession、JSON、Kryo、FST 等。

性能: http://dubbo.Apache.org/zh-cn/docs/user/perf-test.html

Tars

Tars是基于名字服務使用Tars協議的高性能RPC開發框架,同時配套一體化的服務治理平臺,幫助個人或者企業快速的以微服務的方式構建自己穩定可靠的分布式應用。 Tars是將騰訊內部使用的微服務架構TAF(Total Application Framework)多年的實踐成果總結而成的開源項目。

官網:https://github.com/TarsCloud/Tars

架構圖如下

微服務怎么選,讀了這篇文章,毫無壓力

 

開源協議為:BSD-3-Clause

支持多語言 C++,Java,Nodejs,php,Go

性能:https://github.com/TarsCloud/Tars/blob/master/docs/tars_performce.md

gRPC

一開始由 google 開發,是一款語言中立、平臺中立、開源的遠程過程調用(RPC)系統。 官網:https://grpc.io

微服務怎么選,讀了這篇文章,毫無壓力

 

基于HTTP/2 HTTP/2 提供了連接多路復用、雙向流、服務器推送、請求優先級、首部壓縮等機制。可以節省帶寬、降低TCP鏈接次數、節省CPU,幫助移動設備延長電池壽命等。gRPC 的協議設計上使用了HTTP2 現有的語義,請求和響應的數據使用HTTP Body 發送,其他的控制信息則用Header 表示。

IDL使用ProtoBuf gRPC使用ProtoBuf來定義服務,ProtoBuf是由Google開發的一種數據序列化協議(類似于XML、JSON、hessian)。ProtoBuf能夠將數據進行序列化,并廣泛應用在數據存儲、通信協議等方面。壓縮和傳輸效率高,語法簡單,表達力強。

多語言支持(C, C++, Python, PHP, Nodejs, C#, Objective-C、Golang、Java) gRPC支持多種語言,并能夠基于語言自動生成客戶端和服務端功能庫。目前已提供了C版本grpc、Java版本grpc-java 和 Go版本grpc-go,其它語言的版本正在積極開發中,其中,grpc支持C、C++、Node.js、Python、Ruby、Objective-C、PHP和C#等語言,grpc-java已經支持Android開發。

Motan

Motan 是國內另外一個比較有名的開源的 RPC 框架,同樣也只支持 Java 語言實現,它的架構可以用下面這張圖描述。

微服務怎么選,讀了這篇文章,毫無壓力

 

Motan 與 Dubbo 的架構類似,都需要在 Client 端(服務消費者)和 Server 端(服務提供者)引入 SDK,其中 Motan 框架主要包含下面幾個功能模塊。

register:用來和注冊中心交互,包括注冊服務、訂閱服務、服務變更通知、服務心跳發送等功能。Server 端會在系統初始化時通過 register 模塊注冊服務,Client 端會在系統初始化時通過 register 模塊訂閱到具體提供服務的 Server 列表,當 Server 列表發生變更時也由 register 模塊通知 Client。

protocol:用來進行 RPC 服務的描述和 RPC 服務的配置管理,這一層還可以添加不同功能的 filter 用來完成統計、并發限制等功能。

serialize:將 RPC 請求中的參數、結果等對象進行序列化與反序列化,即進行對象與字節流的互相轉換,默認使用對 Java 更友好的 Hessian 2 進行序列化。

transport:用來進行遠程通信,默認使用 Netty NIO 的 TCP 長鏈接方式。

cluster:Client 端使用的模塊,cluster 是一組可用的 Server 在邏輯上的封裝,包含若干可以提供 RPC 服務的 Server,實際請求時會根據不同的高可用與負載均衡策略選擇一個可用的 Server 發起遠程調用。

Spring Cloud

Spring Cloud 是為了解決微服務架構中服務治理而提供的一系列功能的開發框架,它是完全基于 Spring Boot 進行開發的,Spring Cloud 利用 Spring Boot 特性整合了開源行業中優秀的組件,整體對外提供了一套在微服務架構中服務治理的解決方案。它的架構圖可以用下面這張圖來描述。

微服務怎么選,讀了這篇文章,毫無壓力

 

以下為Spring Cloud的核心功能:

  • 分布式/版本化配置
  • 服務注冊和發現
  • 路由
  • 服務和服務之間的調用
  • 負載均衡
  • 斷路器
  • 分布式消息傳遞

Spring Cloud對于中小型互聯網公司來說是一種福音,因為這類公司往往沒有實力或者沒有足夠的資金投入去開發自己的分布式系統基礎設施,使用Spring Cloud一站式解決方案能在從容應對業務發展的同時大大減少開發成本。

下圖是RPC框架詳細的比較

微服務怎么選,讀了這篇文章,毫無壓力

 

如何選擇?

一家A輪融資的公司 原來架構是net,想換java架構。 公司沒有強大的研發實力,公司主要是to B業務,對并發要求不高,那可以試試Spring Cloud 架構, Spring Cloud 不僅提供了基本的 RPC 框架功能,還提供了服務注冊組件、配置中心組件、負載均衡組件、斷路器組件、分布式消息追蹤組件等一系列組件,被技術圈的人稱之為“Spring Cloud 全家桶”,而 Dubbo、Motan 基本上只提供了最基礎的 RPC 框架的功能,其他微服務組件都需要自己去實現,對于這類研發能力弱的團隊,SpringCloud 無疑是最合適的,減少了研發成本,社區熱度高,相關的教程文檔很多,減少了入門成本;

再比如這家公司不準備切換Java框架還是繼續使用net架構, 有一定的研發能力,對并發要求很高, 那gRPC無疑是最適合的,跨語言支持,高性能;

沒有完美的解決方案,只有最合適的

分享到:
標簽:微服
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定