大家好,今天小編來為大家解答微服務架構應該具備的功能這個問題,微服務架構的實現模式很多人還不知道,現在讓我們一起來看看吧!
微服務架構實踐中,服務是如何通信的
微服務之間的通信,一般都是借助于微服務框架完成,一般有REST風格的api通信,和微服務框架結合的RPC.
REST風格的api通信所謂的REST風格的api通常來講就是HTTP結合來使用,但是要遵循REST規范的HTTP有如下特征.
統一接口
無狀態
緩存
客戶端-服務器
分層系統
按需代碼(可選)
RPC通信RPC(RemoteProcedureCall)遠程過程調用是一個計算機通信協議。我們一般的程序調用是本地程序內部的調用,RPC允許你像調用本地函數一樣去調用另一個程序的函數,這中間會涉及網絡通信和進程間通信,但你無需知道實現細節,RPC框架為你屏蔽了底層實現。RPC是一種服務器-客戶端(Client/Server)模式,經典實現是一個通過「發送請求-接受回應」進行信息交互的系統。
RPC通信通常和微服務框架結合,框架會定于消息的序列化格式,比如谷歌的gRPC框架就是利用protobuff序列化,來序列化消息之后通信。
常見的微服務框架有:Dubbo
是阿里巴巴公司開源的一個Java高性能優秀的服務框架,使得應用可通過高性能的RPC實現服務的輸出和輸入功能,可以和Spring框架無縫集成。ApacheDubbo|?d?b??|是一款高性能、輕量級的開源JavaRPC框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動注冊和發現。2011年末對外開源,僅支持Java語言。
官網:http://dubbo.apache.org/zh-cn/
Dubbo架構圖|圖片來源dubbo.apache.org
Tars
騰訊內部使用的微服務架構TAF(TotalApplicationFramework)多年的實踐成果總結而成的開源項目。僅支持C++語言,目前在騰訊內部應用也非常廣泛。2017年對外開源,僅支持C++語言。
源碼:https://github.com/TarsCloud/Tars/
TARS架構圖|來源github.com/TarsCloud
「本命鵝廠TARS框架介紹PPT已下載,不想自己麻煩去找的同學,在我公眾號「后端技術學堂」回復「tars」獲取。」
Motan
是新浪微博開源的一個Java框架。Motan在微博平臺中已經廣泛應用,每天為數百個服務完成近千億次的調用。于2016年對外開源,僅支持Java語言。
官方指南:https://github.com/weibocom/motan/wiki/zh_userguide
Motan框架|圖片來源github.com/weibocom/motan
gRPC
是Google開發的高性能、通用的開源RPC框架,其由Google主要面向移動應用開發并基于HTTP/2協議標準而設計,基于ProtoBuf(ProtocolBuffers)序列化協議開發。本身它不是分布式的,所以要實現上面的框架的功能需要進一步的開發。2015年對外開源的跨語言RPC框架,支持多種語言。
中文教程:https://doc.oschina.net/grpc?t=58008
gRPC架構圖|圖片來源www.grpc.io
thrift
最初是由Facebook開發的內部系統跨語言的高性能RPC框架,2007年貢獻給了Apache基金,成為Apache開源項目之一,跟gRPC一樣,Thrift也有一套自己的接口定義語言IDL,可以通過代碼生成器,生成各種編程語言的Client端和Server端的SDK代碼,支持多種語言。
thrift架構|圖片來源wikimedia
創作不易,看到這里動動手指,點贊「三連」是對我持續創作的最大支持,我們下篇文章再見!
文章每周持續更新,可以微信搜索公眾號「后端技術學堂」提前看,或在公眾號回復「資料」有我給你準備的各種編程學習資料,我們下期見!
微服務請求執行流程
通常遵循以下三個步驟:路由選擇、負載均衡和服務容錯。首先,根據請求的服務名稱進行路由選擇,確定請求應該發往哪個服務實例。然后,通過負載均衡算法確定目標服務實例,分配請求。最后,在服務容錯層面,可以采用斷路器等策略,對異常情況進行處理,確保服務的可用性和穩定性。這個流程是微服務架構中非常重要的一環,可以保證整個服務系統的高效、穩定和可靠。
如何提高微服務架構的可用性
微服務除了開發期框架之外,還有需要一系列的運行期中間件支撐,如API網關、服務注冊中心、統一配置中心等。
為解決微服務應用運行期治理問題,還需要有如服務監控,全鏈路追蹤等相關方案。此外,落地還需要解決一些分布式架構帶來的問題,微服務的分布式特征,如保持一致性的分布式事務、業務冪等性,全局唯一ID生成等。
為實現快速上線(持續部署等目標),還需要DevOps工具鏈,以及運行環境的對服務彈性,優雅上下線,灰度發布等功能的支持。最后,還需要微服務拆分,團隊組織,職責劃分等一系列的方法學支持。比如康威定律,兩個披薩原則。
東軟有個團隊就是研究這個的,他們的網站https://platform.neusoft.com/
如何支撐微服務架構落地
其實微服務的框架在國內通常采用springcloud作為底層的架子,在此之上自己構建一些可以快速應用的組建,當然也可以采用相對成熟一些的基于springcloud上增加了一些組建的框架,這里推薦一個開源的springcloud的集成框架JVS。
開源地址:https://gitee.com/software-minister/jvs
開源項目介紹:
JVS是面向軟件開發團隊可以快速實現應用的基礎開發框架,采用微服務分布式框架,提供豐富的基礎功能,集成眾多業務引擎,它靈活性強,界面化配置對開發者友好,底層容器化構建,集合持續化構建。
JVS是“軟開企服”推出的面向軟件開發團隊可以快速實現應用的基礎開發框架JVS的服務對象:中小型的開發團隊JVS的核心目標:讓中小型開發團隊過得輕松一點,優化開發團隊人力成本高、交付效率低、質量不可控、周期不確定、基礎技術投入不足、高端技術支持不夠等
項目標簽
微服務、支持SaaS、私有化部署、DevOps、
體驗地址
開源協議:詳見license
體驗地址:http://bctools.cn/#/login
登陸可以通過微信掃碼登陸,對于配置數據,請各位技術同學手下留情。
技術棧說明:
系統部分截圖:
微服務之間的可靠性如何考慮
微服務之間的可靠性設計需要考慮多個因素,包括異步IO操作、故障隔離、容錯熔斷、限流降級、調用鏈追蹤等。在微服務系統中,可靠性(Reliability)是指系統在面對異常情況時,如關鍵組件損壞、流量或數據量異常、延遲波動、級聯故障傳導、分布式集群雪崩、系統過載等等,能夠持續保持穩定運行或快速恢復的能力。
END,本文到此結束,如果可以幫助到大家,還望關注本站哦!