精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

微服務(wù)架構(gòu)下,企業(yè)該如何技術(shù)選型呢?

開發(fā) 前端
為了實現(xiàn)基于微服務(wù)開發(fā)的產(chǎn)品,或者說為了將單體應(yīng)用重構(gòu)為微服務(wù)架構(gòu)時,將面臨著眾多技術(shù)框架的選擇。大公司往往會有專門的部門或團隊來負(fù)責(zé)自主研發(fā)自己的框架,以滿足產(chǎn)品的需要,但是對于一般的中小型企業(yè),選擇合適的開源框架就顯得更接地氣了。

 一、前言

為了實現(xiàn)基于微服務(wù)開發(fā)的產(chǎn)品,或者說為了將單體應(yīng)用重構(gòu)為微服務(wù)架構(gòu)時,將面臨著眾多技術(shù)框架的選擇。大公司往往會有專門的部門或團隊來負(fù)責(zé)自主研發(fā)自己的框架,以滿足產(chǎn)品的需要,但是對于一般的中小型企業(yè),選擇合適的開源框架就顯得更接地氣了。本章將簡單介紹微服務(wù)中,在技術(shù)選型時需要注意哪些原則,一些常用的開源技術(shù)框架,希望能夠為大家在進(jìn)行技術(shù)選型、調(diào)研時提供一些思路方向。

[[383388]]

筆者面試過很多程序員,一提及微服務(wù),就會具體說到Spring Boot、Spring Cloud,然后就是“背誦”各種具體的用法和配置文件。并不是說這樣不對,但我們更希望知道的是這些技術(shù)框架的原理,為什么選擇它,它與其他類似框架又有何不同呢。

至于一個技術(shù)框架該怎么用,它適用于什么場景,筆者建議可以直接閱讀官方或?qū)?yīng)的github上的文檔,有需要時還可以閱讀下關(guān)注點的源碼,這樣對正確的理解它,是很有必要的,畢竟官方發(fā)布的東西是相對權(quán)威的,其他地方的資料或許存在片面性,對大家的使用、理解存在一定的誤導(dǎo)。(這只是筆者對大家在技術(shù)選型時,查閱資料的一些建議)

二、選型原則

在軟件開發(fā)領(lǐng)域,幾乎每天都有新的技術(shù)框架誕生、更新,一些新的概念更是層出不窮,技術(shù)選型時,難免讓人無從抉擇。對于技術(shù)選型,我個人有以下幾點建議:

1.有需求,再引入

在微服務(wù)架構(gòu)中,各類組件/技術(shù)很多很多,但并不意味著所有的都應(yīng)該引入你的項目,倘若單純?yōu)榱烁采w全技術(shù)棧或組件而全部引入,這將是一種很不明智的選擇。后續(xù)將會成為你項目的累贅,讓你苦不堪言。

只要你記住這六個字:“有需求,再引入”,就OK了。伴隨著項目體系架構(gòu)的完善、功能的健全,當(dāng)有某方面的需求時,在逐步考慮是否引入某些技術(shù)組件。

2.選擇最熟悉、使用最多的技術(shù)

“一個新項目里最好不要使用超過30%的新技術(shù)”,我覺得這句話是有一定道理的。對于你完全不知道、不了解的技術(shù),你是無法預(yù)估、掌控在使用過程中會出現(xiàn)的任何風(fēng)險,一旦出現(xiàn)問題,短時間內(nèi)解決不了,你將會變得很難堪。

在這里不是說拒絕使用、接觸新技術(shù),新技術(shù)是值得大家去追捧、了解、學(xué)習(xí),一些新技術(shù)在很大程度上能給我們帶來前所未有的利處,解決其他技術(shù)框架解決不了的問題。這里所說的“新技術(shù)”,是指沒有經(jīng)過充分的考察、技術(shù)驗證、存在種種疑惑的技術(shù),而是一味的拿來主義,這樣的風(fēng)險可想而知。

確保選擇的技術(shù),是業(yè)界使用最多的、被大家認(rèn)可的技術(shù),即使出現(xiàn)了問題,也能應(yīng)對自如。至少在團隊內(nèi)部小范圍是非常認(rèn)可的。

3.強大社區(qū)支撐的技術(shù)

GitHub上star的數(shù)量是一個重要指標(biāo),同時參考近年來代碼、文檔、issues等更新頻率,各大技術(shù)博客是否有相關(guān)技術(shù)分享記載,這些都是能夠說明該技術(shù)是否活躍、受歡迎程度、使用人群多少等。

擁有強大社區(qū)支持的技術(shù),在選型后,倘若使用出現(xiàn)疑問、問題、bug等,能夠有地方可提、可修復(fù)、可深究探討,畢竟現(xiàn)在的技術(shù)社區(qū)都是足夠開放的。

慎選個人開源的技術(shù)框架、組件等,里面到底有多少坑,沒幾個人能說清楚的,況且說不定哪天就不復(fù)存在了呢。

4.從業(yè)務(wù)、項目規(guī)模出發(fā)

任何技術(shù)的出發(fā)點都是為最終業(yè)務(wù)而服務(wù)的,不同業(yè)務(wù)、不同項目規(guī)模,對技術(shù)的要求指標(biāo)都是不同的。處于初創(chuàng)期的業(yè)務(wù),選型的基準(zhǔn)是相對靈活,畢竟業(yè)務(wù)相對簡單,支撐業(yè)務(wù)不是很大,只要夠用、開發(fā)效率足夠高就好。處于復(fù)雜業(yè)務(wù)而重構(gòu)的項目,選型就需謹(jǐn)慎,往往伴隨著一些復(fù)雜需求誕生、規(guī)模大小的不確定性,不得不考慮選型技術(shù)可能伴隨著一些小修小補或者螺旋式上升的重構(gòu),則需選型便于適配、切換、替換,耦合度低的技術(shù)。

正因為技術(shù)選型和業(yè)務(wù)相關(guān),我們能夠觀察到一些很明顯的現(xiàn)象:新技術(shù)往往被早期創(chuàng)業(yè)團隊或大公司的新興業(yè)務(wù)使用;中大型公司的核心業(yè)務(wù)則更傾向于用一些穩(wěn)定了幾年的技術(shù);一個公司如果長期使用一種技術(shù),就會傾向于一直使用下去,甚至連版本都不更新的使用下去。

學(xué)會從業(yè)務(wù)端思考。首先我們需要充分地理解業(yè)務(wù),理解用戶需求,理解當(dāng)下需要解決的首要問題,以及可能的風(fēng)險有哪些,再將目標(biāo)進(jìn)行分解,進(jìn)行具體的技術(shù)選型、模型設(shè)計、架構(gòu)設(shè)計。

5.先驗證后使用

對于未經(jīng)驗證的新技術(shù)、新理念的引入一定要慎重,一定要在全方位的驗證過后,再大規(guī)模的使用,最終確定選型。新技術(shù)、新理念的出現(xiàn),自然有它的誘惑,慎重并不代表保守,技術(shù)總是在不斷前進(jìn),擁抱變化本身沒有問題,但是引入不成熟的技術(shù)看似能帶來短期的收益,但是它的風(fēng)險或者是后期的成本可能遠(yuǎn)遠(yuǎn)大于收益。驗證后,才有說服力,用著更放心。

三、技術(shù)選型

每種技術(shù)架構(gòu)都有其優(yōu)缺點,存在即合理,不同的業(yè)務(wù)場景使用不同的應(yīng)用架構(gòu),技術(shù)框架,不一定說最新的架構(gòu)、技術(shù)就是最適合你的。

微服務(wù)架構(gòu)中常提及到的主要技術(shù)框架選型如下表所示,本文后面將基于此展開說明對比。

 

四、服務(wù)治理

1.Dubbo

Dubbo是一款高性能、輕量級的開源JAVA RPC框架,以及SOA服務(wù)治理方案。簡單的說,Dubbo就是個服務(wù)框架,說白了就是個遠(yuǎn)程服務(wù)調(diào)用的分布式框架。它提供了三大核心能力:面向接口的遠(yuǎn)程方法調(diào)用、智能容錯和負(fù)載均衡、以及服務(wù)自動注冊和發(fā)現(xiàn),很容易和Spring框架無縫集成。

Dubbo邏輯架構(gòu)如下圖所示:

 

  • Provider:暴露服務(wù)的提供方,可以通過jar或者容器的方式啟動服務(wù)。
  • Consumer:調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費方。
  • Registry:服務(wù)注冊中心和發(fā)現(xiàn)中心。
  • Monitor:統(tǒng)計服務(wù)和調(diào)用次數(shù),調(diào)用時間監(jiān)控中心。(dubbo的控制臺頁面中可以顯示,目前只有一個簡單版本)
  • Container:服務(wù)運行的容器。

Dubbo特點:

  • 遠(yuǎn)程通訊:提供對多種基于長連接的NIO框架抽象封裝(非阻塞I/O的通信方式,Mina/Netty/Grizzly),包括多種線程模型,序列化(Hessian2/ProtoBuf),以及“請求-響應(yīng)”模式的信息交換方式。
  • 集群容錯:提供基于接口方法的透明遠(yuǎn)程過程調(diào)用(RPC),包括多協(xié)議支持(自定義RPC協(xié)議),以及軟負(fù)載均衡(Random/RoundRobin),失敗容錯(Failover/Failback),地址路由,動態(tài)配置等集群支持。
  • 自動發(fā)現(xiàn):基于注冊中心目錄服務(wù),使服務(wù)消費方能動態(tài)的查找服務(wù)提供方,使地址透明,使服務(wù)提供方可以平滑增加或減少機器。

在現(xiàn)有的微服務(wù)架構(gòu)下,Dubbo只能說是一個服務(wù)治理框架,或者說是一個RPC框架,是以接口為粒度,一個接口類就就是一個服務(wù)。如果直接用Dubbo來實現(xiàn)微服務(wù)架構(gòu),還缺少以下幾個功能:

  • 分布式配置:可以使用Spring Cloud Config、Apollo等來實現(xiàn)。
  • 鏈路追蹤:可以使用Zipkin、CAT等來實現(xiàn)。
  • 批量任務(wù):可以使用當(dāng)當(dāng)網(wǎng)開源的Elastic-Job來實現(xiàn)。

2.Spring Cloud

Spring Cloud是目前最主流的微服務(wù)架構(gòu)落地首選方案之一,是基于Spring Boot實現(xiàn)的開源框架,是一個全家桶,是微服務(wù)的整體技術(shù)棧。

Spring Boot是Spring 的一套快速配置腳手架,使用默認(rèn)大于配置的理念,用于快速開發(fā)單個微服務(wù)。

它為服務(wù)注冊發(fā)現(xiàn)、動態(tài)路由、負(fù)載均衡、配置管理、消息總線、熔斷器、分布式鏈路追蹤、大數(shù)據(jù)操作等提供了簡單的實現(xiàn),讓我們可以更簡潔的使用它。

正如我們前面說過的,微服務(wù)是可以獨立部署、水平擴展、獨立訪問的服務(wù)單元,而Spring Cloud就是這些微服務(wù)的“大管家”,采用了微服務(wù)這種架構(gòu)之后,項目的數(shù)量會非常多,調(diào)用鏈路復(fù)雜,從而管理成了很大的問題,而Spring Cloud框架恰恰提供了各種組件用于管理和治理微服務(wù)。理所應(yīng)當(dāng)?shù)模统闪舜蠹沂走x框架了。

Spring Cloud的整體架構(gòu)如下圖所示,提供一站式的微服務(wù)架構(gòu)解決方案。

 

使用Spring Cloud來構(gòu)建微服務(wù)架構(gòu)可以省去你整合各家技術(shù)的成本,Spring Cloud為我們構(gòu)建微服務(wù)架構(gòu)提供了一站式的解決方案,就好比當(dāng)初Spring誕生是為解決EJB企業(yè)應(yīng)用開發(fā)的眾多問題而提供的一站式輕量級企業(yè)應(yīng)用開發(fā)解決方案一樣,隨著使用Spring Cloud的產(chǎn)品數(shù)量增加,Spring Cloud在微服務(wù)架構(gòu)中已一統(tǒng)江湖。

下面是Spring Cloud的完整技術(shù)棧,看完你就知道它為啥會在微服務(wù)架構(gòu)中一統(tǒng)江湖了。

 

3.對比、總結(jié)

 

通過上表對比,很容易發(fā)現(xiàn)Spring Cloud擁有很多的項目模塊,包含了微服務(wù)系統(tǒng)的方方面面。Dubbo是一個非常優(yōu)秀的服務(wù)治理和服務(wù)調(diào)用框架,但缺少很多功能模塊,例如網(wǎng)關(guān)、鏈路追蹤等。在項目模塊上,Spring Cloud占據(jù)著更大的優(yōu)勢。對比并不是否定誰,推崇誰,只是說明在不同場景下,有利優(yōu)劣,需客觀來看。

如果僅關(guān)注于服務(wù)治理的這個層面,Dubbo其實還優(yōu)于Spring Cloud很多:

  • 支持多種序列化協(xié)議,如Hessian、HTTP、WebService。
  • Dobbo Admin后臺管理功能強大,提供了路由規(guī)則、動態(tài)配置、訪問控制、權(quán)重調(diào)節(jié)、均衡負(fù)載等功能。
  • 在國內(nèi)影響力比較大,中文社區(qū)文檔較為全面。
  • 阿里最近重啟維護,成為Apache孵化項目。
  • Dubbo使用RPC協(xié)議效率更高,在極端壓力測試下,Dubbo的效率會高于Spring Cloud效率一倍多。

如果對效率有極高的要求建議使用Dubbo,相對比RPC的效率會比Restful高很多,如果選擇微服務(wù)架構(gòu)去重構(gòu)整個技術(shù)體系,那么 Spring Cloud是當(dāng)仁不讓之選,它可以說是目前最好的微服務(wù)框架沒有之一,并且可以斷言,將來Dubbo可以很好的整合到Spring Cloud中。

五、API網(wǎng)關(guān)

API網(wǎng)關(guān)作為微服務(wù)中所有服務(wù)的唯一入口,免得業(yè)界各類成熟的技術(shù)框架組件,在進(jìn)行技術(shù)選型時,需要特別考慮是否擁有以下特性:

  • 高可用:網(wǎng)關(guān)是對外的唯一關(guān)口,必須保證 7 * 24小時可用,持續(xù)提供穩(wěn)定可靠的服務(wù)。
  • 高性能:所有的請求都會經(jīng)過網(wǎng)關(guān),它承受的壓力是巨大的,所以必須保證它具備良好的性能,以應(yīng)對高并發(fā)請求。
  • 安全性:網(wǎng)關(guān)必須能夠防止外部的惡意訪問,確保內(nèi)部各個微服務(wù)的安全。
  • 擴展性:網(wǎng)關(guān)是一個處理非業(yè)務(wù)功能的絕佳場所,必須能夠提供流量管控、協(xié)議轉(zhuǎn)發(fā)、日志監(jiān)控等服務(wù),同時能夠為以后對非業(yè)務(wù)功能的擴展提供良好的兼容性。

1.Zuul

Zuul作為Spring Cloud中的核心組件之一,充當(dāng)API網(wǎng)關(guān)的重要角色,所有請求都可以通過Zuul達(dá)到后端的應(yīng)用程序、服務(wù)。Zuul提供了動態(tài)路由、監(jiān)控、彈性負(fù)載和安全等特性,其核心是一系列的Filter,其作用類似于Servlet框架中的Filter,或者AOP。

Zuul底層利用各種Filter實現(xiàn)了如下功能:

  • 動態(tài)路由:根據(jù)需要將請求動態(tài)路由到后端集群。
  • 身份認(rèn)證和安全性:識別每個需要認(rèn)證的資源,拒絕不符合要求的請求,如:鑒權(quán)。
  • 統(tǒng)計監(jiān)測:在服務(wù)邊界追蹤并統(tǒng)計數(shù)據(jù),提供精確的統(tǒng)計監(jiān)測視圖。
  • 壓力測試:逐漸增加對集群的流量以了解其性能。
  • 負(fù)載卸載:預(yù)先為每種類型的請求分配容量,當(dāng)請求超過容量時自動丟棄。
  • 靜態(tài)資源處理:直接在邊界返回某些響應(yīng)。

基于上述這些功能特性,使得Zuul作為API網(wǎng)關(guān)的不二之選。Zuul的邏輯架構(gòu)如下圖所示:

 

Zuul的過濾器之間是不直接通信的,而是通過一個RequestContext的類來進(jìn)行數(shù)據(jù)傳統(tǒng),RequestContext繼承ConcurrentHashMap,使用ThreadLocal變量來記錄每個Request需要傳遞的數(shù)據(jù)。

Zuul的過濾器是由Groovy來實現(xiàn)的,這些過濾器文件被存放在Zuul Server的特定目錄下,Zuul會定期輪詢這些目錄,修改過的過濾器會動態(tài)加載到Zuul Server中,以便過濾請求使用。

Zuul的大部分功能都是通過過濾器來實現(xiàn)的,其中定義了4種標(biāo)準(zhǔn)的過濾器類型(pre、route、post、error),以滿足應(yīng)用于請求的不同階段。(如果想更清晰深入的了解Zuul,可以參考上圖的Zuul邏輯架構(gòu)圖,并結(jié)合Zuul源碼深入研究下。)

2.traefik

在了解traefik之前,不妨先看看它的整體架構(gòu)圖,如下所示:

 

從上圖不難看出,traefik充當(dāng)了HTTP反向代理的角色,使得發(fā)布的服務(wù)變得輕松有趣。在微服務(wù)中,實質(zhì)上是一個為了讓部署微服務(wù)變得更加便捷而誕生的HTTP反向代理、負(fù)載均衡工具。,它支持多種后臺 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 來自動化、動態(tài)的應(yīng)用它的配置文件設(shè)置。

除了眾多功能之外,traefik的與眾不同之處還在于它會自動發(fā)現(xiàn)適合您服務(wù)的配置。無需維護和同步單獨的配置文件,一切都會自動,實時地進(jìn)行(無需重新啟動,不會中斷連接)。使用traefik后,你可以將更多的精力、時間花費在開發(fā)和部署上面,而不是在配置和維護其工作狀態(tài)上。

特性:

  • 高性能
  • 無需安裝其他依賴,通過Go語言編寫的單一可執(zhí)行文件
  • 支持Restful API接口
  • 多種后臺支持:Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd
  • 后臺監(jiān)控, 可以監(jiān)聽后臺變化進(jìn)而自動化應(yīng)用新的配置文件設(shè)置
  • 配置文件熱更新。(無需重啟)
  • 正常結(jié)束http連接
  • 后端斷路器
  • 輪詢,rebalancer 負(fù)載均衡
  • Rest Metrics
  • 支持最小化官方docker鏡像
  • 后臺支持SSL
  • 前臺支持SSL(包括SNI)
  • 清爽的AngularJS前端頁面
  • 支持Websocket
  • 支持HTTP/2
  • 網(wǎng)絡(luò)錯誤重試
  • 支持Let’s Encrypt (自動更新HTTPS證書)
  • 高可用集群模式

3.OpenResty

OpenResty是一個基于Nginx與Lua的高性能Web平臺,其內(nèi)部集成了大量精良的Lua庫、第三方模塊以及大多數(shù)的依賴項。用于方便地搭建能夠處理超高并發(fā)、擴展性極高的動態(tài)Web應(yīng)用、Web服務(wù)和動態(tài)網(wǎng)關(guān)。

OpenResty通過匯聚各種設(shè)計精良的Nginx模塊(主要由OpenResty團隊自主開發(fā)),從而將Nginx有效地變成一個強大的通用Web應(yīng)用平臺。這樣,Web 開發(fā)人員和系統(tǒng)工程師可以使用Lua腳本語言調(diào)動 Nginx支持的各種C以及Lua模塊,快速構(gòu)造出足以勝任10K乃至 1000K以上單機并發(fā)連接的高性能Web應(yīng)用系統(tǒng)。

OpenResty的目標(biāo)是讓你的Web服務(wù)直接跑在Nginx服務(wù)內(nèi)部,充分利用Nginx的非阻塞I/O模型,不僅僅對HTTP客戶端請求,甚至于對遠(yuǎn)程后端諸如MySQL、PostgreSQL、Memcached以及Redis等都進(jìn)行一致的高性能響應(yīng)。

4.Kong

Kong是一個在Nginx中運行的Lua應(yīng)用程序,并且可以通過lua-nginx模塊實現(xiàn),Kong不是用這個模塊編譯Nginx,而是與OpenResty一起發(fā)布,OpenResty已經(jīng)包含了lua-nginx-module,OpenResty不是 Nginx的分支,而是一組擴展功能的模塊。

是一個Api Gateway,通過插件的形式提供負(fù)載均衡,日志記錄,身份驗證,速率限制,轉(zhuǎn)換等功能。可以很輕松擴展功能,模塊化,可以運行在任何基礎(chǔ)設(shè)施上。

它的核心是實現(xiàn)數(shù)據(jù)庫抽象,路由和插件管理,插件可以存在于單獨的代碼庫中,并且可以在幾行代碼中注入到請求生命周期的任何位置。很方便地為路由和服務(wù)提供各種插件,網(wǎng)關(guān)所需要的基本特性,Kong都如數(shù)支持:

  • 云原生:與平臺無關(guān),Kong可以從裸機運行到Kubernetes。
  • 動態(tài)路由:Kong的背后是OpenResty+Lua,所以從OpenResty繼承了動態(tài)路由的特性。
  • 熔斷
  • 健康檢查
  • 日志:可以記錄通過Kong的HTTP,TCP,UDP請求和響應(yīng)。
  • 鑒權(quán):權(quán)限控制,IP黑白名單,同樣是OpenResty的特性。
  • SSL: 可以為基礎(chǔ)服務(wù)或API設(shè)置特定的SSL證書。
  • 監(jiān)控:Kong提供了實時監(jiān)控插件。
  • 認(rèn)證:如支持HMAC, JWT, Basic, OAuth2.0等常用協(xié)議。
  • 限流
  • REST API:通過Rest API進(jìn)行配置管理,從繁瑣的配置文件中解放。
  • 可用性: 天然支持分布式。
  • 高性能: 背靠非阻塞通信的nginx,性能自不用說。
  • 插件機制: 提供眾多開箱即用的插件,且有易于擴展的自定義插件接口,用戶可以使用Lua自行開發(fā)插件。

上面這些特性中,反復(fù)提及了Kong背后的OpenResty,實際上,使用 Kong之后,Nginx可以完全摒棄,因為Kong的功能是Nginx的父集。

5.對比、總結(jié)

 

綜上對比,從開源社區(qū)活躍度和學(xué)習(xí)成本來看,無疑是Zuul和Traefik較好;從成熟度來看,較好的是Kong、Traefik;從性能角度來看,Kong要比其他幾個領(lǐng)先一些,從架構(gòu)優(yōu)勢的擴展性來看,Kong豐富的插件,而Zuul是完全需要自研各類Filter,但Zuul由于與Spring Cloud深度集成,使用度也很高。

六、服務(wù)注冊與發(fā)現(xiàn)

服務(wù)注冊與發(fā)現(xiàn),是一個古老的話題,當(dāng)應(yīng)用開始脫離單機運行和訪問時,服務(wù)注冊與發(fā)現(xiàn)就誕生了。目前的網(wǎng)絡(luò)架構(gòu)是每個主機都有一個獨立的IP地址,那么服務(wù)發(fā)現(xiàn)基本上都是通過某種方式獲取到服務(wù)所部署的IP地址。DNS協(xié)議是最早將一個網(wǎng)絡(luò)名稱翻譯為網(wǎng)絡(luò)IP的協(xié)議,在最初的架構(gòu)選型中,DNS+LVS+Nginx基本可以滿足所有的RESTful服務(wù)的發(fā)現(xiàn),此時服務(wù)的IP列表通常配置在Nginx或者LVS。后來出現(xiàn)了RPC服務(wù),服務(wù)的上下線更加頻繁,人們開始尋求一種能夠支持動態(tài)上下線并且推送IP列表變化的注冊中心框架或組件。

現(xiàn)如今,各類服務(wù)注冊與發(fā)現(xiàn)的框架、組件很多(Zookeeper、Eureka、Consul、etcd等),在選擇上更是眼花繚亂。在服務(wù)注冊與發(fā)現(xiàn)的技術(shù)選型上,我覺得我們應(yīng)該還是有一定遵循原則和關(guān)注要點的。通常可從以下幾個方面出發(fā),進(jìn)行重點關(guān)注、抉擇。

  • 數(shù)據(jù)一致性
  • 負(fù)載均衡
  • 健康檢查
  • 性能與容量
  • 易用性
  • 集群擴展性
  • 用戶擴展性

七、配置中心

在微服務(wù)架構(gòu)中,服務(wù)的數(shù)量以及配置信息的日益增多,比如各種服務(wù)器參數(shù)配置、各種數(shù)據(jù)庫訪問參數(shù)配置、各種環(huán)境下配置信息的不同、配置信息修改之后實時生效等等,傳統(tǒng)的配置文件方式或者將配置信息存放于數(shù)據(jù)庫中的方式已無法滿足開發(fā)人員對配置管理的要求,如:

  • 安全性:配置跟隨源代碼保存在代碼庫中,容易造成配置泄漏。
  • 時效性:修改配置,需要重啟服務(wù)才能生效。
  • 局限性:無法支持動態(tài)調(diào)整:例如日志開關(guān)、功能開關(guān)。

在微服務(wù)架構(gòu)中,使用配置中心之前,上述的問題或麻煩,你肯定也會遇到過,所以,是否引入配置中心,取決于你是否有下面的需求:

  • 配置集中化統(tǒng)一管理
  • 配置實時生效

一般完善的配置中心,都會從以下兩個方面設(shè)計出發(fā),以發(fā)揮配置中心的作用。

1)配置實時生效

傳統(tǒng)的靜態(tài)配置方式要想修改某個配置只能修改之后重新發(fā)布應(yīng)用,要實現(xiàn)動態(tài)性,可以選擇使用數(shù)據(jù)庫,通過定時輪詢訪問數(shù)據(jù)庫來感知配置的變化。輪詢頻率低感知配置變化的延時就長,輪詢頻率高,感知配置變化的延時就短,但比較損耗性能,需要在實時性和性能之間做折中。配置中心專門針對這個業(yè)務(wù)場景,兼顧實時性和一致性來管理動態(tài)配置。

2)配置管理

流程配置的權(quán)限管控、灰度發(fā)布、版本管理、格式檢驗和安全配置等一系列的配置管理相關(guān)的特性也是配置中心不可獲取的一部分。(這也算是配置中心的高級特性作用)

1.Spring Cloud Config

Spring Cloud Config作為Spring Cloud中的一個組件,其功能開放,可開發(fā)性強,常是各類配置中心自我研發(fā)的基石。

從Spring Cloud Config的源碼(spring-cloud-config-server)中,可以看出目前支持本地存儲、Git倉庫存儲、SVN倉庫存儲、數(shù)據(jù)庫存儲方式,其他存儲方式可參考源碼自行實現(xiàn)即可。

 

以Git存儲方式為例說明,Spring Cloud Config包含config-server、Git和Spring Cloud Bus三大組件:

  • config-server提供給客戶端獲取配置。
  • Git用于存儲和修改配置。
  • Spring Cloud Bus通知客戶端配置變更。

本地測試模式下,Spring Cloud Bus和config-server需要部署一個節(jié)點,Git使用GitHub就可以。在生產(chǎn)環(huán)境中,Spring Cloud Config,config-server需要部署至少兩個節(jié)點。Spring Cloud Bus如果使用RabbitMQ,普通集群模式至少需要兩個節(jié)點。

Git服務(wù)如果使用GitHub就不用考慮高可用問題,如果考慮到安全性要自建Git私有倉庫,整體的成本比較高。Web服務(wù)可以部署多節(jié)點支持高可用,由于Git有數(shù)據(jù)的一致性問題,可以通過以下的方式來支持高可用:

  • Git+Keepalived冷備模式,當(dāng)主Git掛了可以馬上切到備Git。
  • Git多節(jié)點部署,存儲使用網(wǎng)絡(luò)文件系統(tǒng)或者通過DRBD實現(xiàn)多個Git節(jié)點的數(shù)據(jù)同步。

2.Apollo

Apollo(阿波羅)是攜程框架部門研發(fā)的分布式配置中心,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性,適用于微服務(wù)配置管理場景。

Apollo分為MySQL,Config Service,Admin Service,Portal四個模塊:

  • MySQL:存儲Apollo元數(shù)據(jù)和用戶配置數(shù)據(jù)。
  • Config Service:提供配置的讀取、推送等功能,客戶端請求都是落到Config Service上。
  • Admin Service:提供配置的修改、發(fā)布等功能,Portal操作的服務(wù)就是Admin Service。
  • Portal:提供給用戶配置管理界面。

本地測試Config Service,Admin Service,Portal三個模塊可以合并一起部署,MySQL單獨安裝并創(chuàng)建需要的表結(jié)構(gòu)。在生產(chǎn)環(huán)境使用Apollo,Portal可以兩個節(jié)點單獨部署,穩(wěn)定性要求沒那么高的話,Config Service和Admin Service可以部署在一起,數(shù)據(jù)庫支持主備容災(zāi)。

 

3.Nacos

Nacos是一個更易于構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺。這正是Nacos官方給出的定義:

an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.

核心功能:

  • 動態(tài)配置服務(wù):

動態(tài)配置服務(wù)讓您能夠以中心化、外部化和動態(tài)化的方式管理所有環(huán)境的配置。動態(tài)配置消除了配置變更時重新部署應(yīng)用和服務(wù)的需要。配置中心化管理讓實現(xiàn)無狀態(tài)服務(wù)更簡單,也讓按需彈性擴展服務(wù)更容易。

  • 服務(wù)發(fā)現(xiàn)及管理:

動態(tài)服務(wù)發(fā)現(xiàn)對以服務(wù)為中心的(例如微服務(wù)和云原生)應(yīng)用架構(gòu)方式非常關(guān)鍵。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服務(wù)發(fā)現(xiàn)。Nacos也提供實時健康檢查,以防止將請求發(fā)往不健康的主機或服務(wù)實例。借助Nacos,您可以更容易地為您的服務(wù)實現(xiàn)斷路器。

  • 動態(tài)DNS服務(wù):

通過支持權(quán)重路由,動態(tài)DNS服務(wù)能讓您輕松實現(xiàn)中間層負(fù)載均衡、更靈活的路由策略、流量控制以及簡單數(shù)據(jù)中心內(nèi)網(wǎng)的簡單DNS解析服務(wù)。動態(tài)DNS服務(wù)還能讓您更容易地實現(xiàn)以DNS協(xié)議為基礎(chǔ)的服務(wù)發(fā)現(xiàn),以消除耦合到廠商私有服務(wù)發(fā)現(xiàn)API上的風(fēng)險。

Nacos部署需要Nacos Service和MySQL:

  • Nacos Service:對外提供服務(wù),支持配置管理和服務(wù)發(fā)現(xiàn)。
  • MySQL:提供Nacos的數(shù)據(jù)持久化存儲。

單機模式下,Nacos可以使用嵌入式數(shù)據(jù)庫部署一個節(jié)點,就能啟動。如果對MySQL比較熟悉,想要了解整體數(shù)據(jù)流向,可以安裝MySQL提供給Nacos數(shù)據(jù)持久化服務(wù)。生產(chǎn)環(huán)境使用Nacos,Nacos服務(wù)需要至少部署三個節(jié)點,再加上MySQL主備。

4.對比、總結(jié)

整體來看,Nacos的部署結(jié)構(gòu)比較簡單,運維成本較低。Apollo部署組件較多,運維成本比Nacos高。Spring Cloud Config易于定制化二次開發(fā),生產(chǎn)高可用的成本最高。

 

總的來說,Apollo和Nacos相對于Spring Cloud Config的生態(tài)支持更廣,在配置管理流程上做的更好。Apollo相對于Nacos在配置管理做的更加全面,不過使用起來也要麻煩一些。Nacos使用起來相對比較簡潔,在對性能要求比較高的大規(guī)模場景更適合。

責(zé)任編輯:華軒 來源: 程序猿技術(shù)大咖
相關(guān)推薦

2020-11-25 09:56:48

架構(gòu)運維技術(shù)

2021-01-04 09:35:55

微服務(wù)架構(gòu)配置中心

2022-09-06 07:29:33

微服務(wù)方式函數(shù)

2021-08-31 10:02:20

架構(gòu)運維技術(shù)

2023-11-03 09:05:53

2023-08-09 12:13:36

MDR服務(wù)監(jiān)控

2023-08-27 16:13:50

架構(gòu)微服務(wù)器

2025-11-14 00:25:00

微服務(wù)架構(gòu)并發(fā)

2019-07-11 15:25:02

架構(gòu)運維技術(shù)

2017-07-10 10:21:51

微服務(wù)架構(gòu)運維管理運維平臺架構(gòu)

2017-11-02 08:54:13

數(shù)據(jù)存儲架構(gòu)

2024-08-23 11:51:39

2024-05-10 08:46:13

微服務(wù)架構(gòu)技術(shù)

2023-01-05 08:12:11

分層應(yīng)用代碼

2022-01-13 07:46:49

公有云私有云混合云

2023-07-28 09:23:24

微服務(wù)架構(gòu)

2020-06-04 14:05:56

數(shù)據(jù)泄露安全互聯(lián)網(wǎng)

2017-07-17 15:50:17

微服務(wù)Docker架構(gòu)

2021-06-22 18:00:09

微服務(wù)架構(gòu)系統(tǒng)

2021-08-13 07:52:35

微服務(wù)網(wǎng)關(guān)數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品黄色片| 欧美偷拍视频| 欧美天堂亚洲电影院在线观看| 日韩精品一区二| 日韩欧美精品在线观看视频| 成人在线免费观看| 国产高清在线精品| 国产97在线|日韩| 欧美高清视频一区二区三区| 亚洲第一福利专区| 7777精品伊人久久久大香线蕉经典版下载 | 久久久久久久久久伊人| 亚洲 另类 春色 国产| 蜜桃传媒麻豆第一区在线观看| 欧美伦理91i| 亚洲第一综合网| a级日韩大片| 欧美年轻男男videosbes| 97在线国产视频| 日本在线www| 2020国产精品| 北条麻妃高清一区| 亚洲香蕉在线视频| 亚洲一区成人| 欧美激情视频网址| 最新日韩免费视频| 亚洲va久久| 精品国产乱子伦一区| 亚洲成人av免费看| 久草在线资源福利站| 亚洲男同性视频| 四虎一区二区| 天堂网在线观看视频| 久久 天天综合| 日韩av大片在线| 国产精品成人av久久| 亚洲一区 二区 三区| 一本色道久久综合狠狠躁篇的优点 | 亚洲日本成人网| 最新版天堂资源在线| 豆花视频一区| 欧美日韩日日摸| 成人在线观看黄| 国产99在线观看| 亚洲综合一二三区| 操bbb操bbb| 国产理论在线观看| 亚洲三级在线看| 亚洲看片网站| 香港伦理在线| 国产日韩综合av| 任我爽在线视频精品一| 欧美日韩伦理片| 久久亚洲一级片| 欧美二区在线| 草碰在线视频| 中文字幕一区二区三区在线播放 | 久久精品青草| 精品国产一区av| 三级全黄做爰视频| 国产精品成人一区二区不卡| 久久精品精品电影网| 久久久久久久久久97| 在线观看国产精品入口| 久热精品视频在线观看一区| 中国一级片在线观看| 99久久精品网站| 久久中国妇女中文字幕| 午夜国产小视频| 伊人色**天天综合婷婷| 久久精品国产精品| 国产一区二区播放| 欧美日韩三级| 91av在线网站| 国产美女www爽爽爽| 青青草国产精品97视觉盛宴| 国产精品狼人色视频一区| 一区二区三区免费在线视频| 狠狠色丁香婷综合久久| 不卡视频一区二区三区| 色欲久久久天天天综合网| 91蜜桃传媒精品久久久一区二区| 日本高清一区| 免费av不卡| 亚洲国产另类精品专区| 精品一卡二卡三卡| 亚洲精品毛片| 精品999久久久| 自拍偷拍视频亚洲| 亚洲欧美网站在线观看| 97精品一区二区视频在线观看| 久久国产黄色片| 久久av中文字幕片| 国产视色精品亚洲一区二区| 久久久久久青草| 亚洲男同1069视频| 韩国一区二区av| 久久9999免费视频| 亚洲精品少妇网址| 欧美激情图片小说| 天堂av在线一区| 91九色偷拍| 成人在线免费电影| 五月综合激情婷婷六月色窝| 亚洲 激情 在线| 大桥未久女教师av一区二区| 一本一本久久a久久精品牛牛影视 一本色道久久综合亚洲精品小说 一本色道久久综合狠狠躁篇怎么玩 | 国产成人精品久久| 亚洲男人天堂久久| 国产精品高潮呻吟| 日韩av一二三四区| 日韩免费成人| 中文字幕日韩综合av| 国产对白videos麻豆高潮| 麻豆免费精品视频| 久久久com| 七七成人影院| 欧美日韩成人一区二区| 久久丫精品国产亚洲av不卡| 亚洲欧美综合| 国产欧亚日韩视频| 户外极限露出调教在线视频| 亚洲成人av免费| 在线观看网站黄| 欧美手机在线| 奇米4444一区二区三区| 亚洲国产精品欧美久久| 18涩涩午夜精品.www| 免费国产成人av| 青青草原在线亚洲| 欧美日韩成人网| 国产特黄一级片| 国产精品美女久久久久久久久 | 99自拍视频在线| 日韩电影在线免费看| 国产一区高清视频| 蜜臀av在线播放| 精品日产卡一卡二卡麻豆| 国产免费美女视频| 久久精品二区亚洲w码| 亚洲不卡一卡2卡三卡4卡5卡精品| 男女羞羞视频在线观看| 日韩无一区二区| 超碰手机在线观看| 国产精品一级在线| 在线观看三级网站| 久久伦理中文字幕| 欧美刺激性大交免费视频| 又污又黄的网站| 国产精品欧美一区喷水| 国产 porn| 成人精品影院| 国产在线观看精品| 国内外激情在线| 欧美一区二区精品在线| 久久久久久久久久网站| 国产精品一级片| 一本色道久久88亚洲精品综合| 国产日韩在线观看视频| 欧美另类高清videos| wwwxxxx国产| 亚洲一区二区美女| 911亚洲精选| 国产一区91| 青青草久久网络| 日韩精品影片| 精品国产一区二区三区久久| www.97av| 欧美性xxxxxxxxx| 国产熟女一区二区| 久久精品999| 日韩精品在线观看av| 日本一区福利在线| 日韩免费观看在线观看| 日本电影在线观看网站| 欧美一区二区国产| 欧美一级视频免费观看| 久久久久久久综合色一本| 精品日韩久久久| 女人香蕉久久**毛片精品| 国产欧美一区二区三区另类精品| 在线免费看h| 久久黄色av网站| 免费看黄色一级视频| 91国偷自产一区二区使用方法| 无码人中文字幕| 国产 日韩 欧美大片| 欧美 日韩 国产在线观看| 成人在线免费小视频| 国产高清精品一区二区| 欧美xx视频| 久久五月天色综合| 午夜视频在线播放| 欧美精品少妇一区二区三区| 久久精品www人人爽人人| 国产亚洲精品aa午夜观看| 污污的视频免费观看| 亚洲乱亚洲高清| 亚洲一区二区三区午夜| 红杏aⅴ成人免费视频| 国产精品免费一区| 春色校园综合激情亚洲| 精品国内自产拍在线观看| 亚洲欧洲视频在线观看| 777午夜精品视频在线播放| 精品美女久久久久| 亚洲免费av在线| 青娱乐国产视频| 99久久精品99国产精品| 中文字幕亚洲影院| 玖玖在线精品| 每日在线更新av| 中文字幕免费精品| 亚洲mv在线看| 免费视频亚洲| 国产综合色一区二区三区| 亚洲精品tv| 国产精品久久久久久久电影| 国产夫妻在线| 欧美日本黄视频| 国产丝袜在线| 中文字幕日韩综合av| 欧美婷婷久久五月精品三区| 欧美精品一区男女天堂| 超碰福利在线观看| 69p69国产精品| 中文字字幕在线中文乱码| 欧美午夜久久久| www成人在线| 午夜私人影院久久久久| 欧美日韩人妻精品一区二区三区| 国产精品网站一区| 日韩免费成人av| 国产视频911| 自拍偷拍中文字幕| 久久尤物电影视频在线观看| 伊人网综合视频| 高清不卡一区二区在线| 91插插插影院| 国内精品伊人久久久久av影院| 91精品无人成人www| 米奇777在线欧美播放| 青青视频在线播放| 国产手机视频一区二区| 黄色一级片播放| 免费在线观看成人av| 日本中文字幕网址| 国产精品女主播一区二区三区 | 丝袜诱惑制服诱惑色一区在线观看 | 欧美日韩免费不卡视频一区二区三区| 欧美精品一二三四区| 日韩欧美在线网址| 黄色在线免费观看| 91国模大尺度私拍在线视频| 可以免费在线观看的av| 一本久道中文字幕精品亚洲嫩| 免费av网站在线| 欧美在线小视频| 国产孕妇孕交大片孕| 51精品久久久久久久蜜臀| 国产成人精品免费看视频| 欧美r级电影在线观看| 色网站免费观看| 亚洲免费一级电影| 97在线观看免费观看高清| 日韩视频―中文字幕| 午夜伦理在线视频| 久久久欧美一区二区| 婷婷电影在线观看| 国产精品情侣自拍| 国产一区二区三区视频在线 | 人人干人人干人人| 国产一区二区毛片| av免费观看不卡| 久久久久久97三级| 精品国产大片大片大片| 亚洲国产日产av| 无码人妻aⅴ一区二区三区有奶水| 欧美亚洲综合色| 国产强被迫伦姧在线观看无码| 日韩午夜在线影院| 香蕉久久国产av一区二区| 伊人久久精品视频| 18加网站在线| 国产成人精品午夜| 婷婷视频一区二区三区| 欧美精品一区二区三区在线看午夜 | 四虎影视国产精品| 国产亚洲第一区| 日韩欧美中文| 久久99中文字幕| 男女视频一区二区| 免费不卡的av| 亚洲欧洲精品一区二区三区| 久久久久99精品| 欧美日韩一区二区三区在线 | 亚洲美女视频网站| 在线中文字幕第一页| 国产99久久精品一区二区永久免费| 2019中文亚洲字幕| 蜜桃导航-精品导航| 999久久久精品国产| 欧美精品一区免费| 国产在线精品一区二区不卡了| av直播在线观看| 亚洲乱码国产乱码精品精可以看| 国产成人精品网| 日韩三级视频在线观看| 国产精品一二三区视频| 欧美精品videosex性欧美| 久久久久久久性潮| 蜜桃成人在线| 亚洲网站在线| 黄大色黄女片18第一次| 91小视频在线免费看| 亚洲天堂黄色片| 在线观看三级视频欧美| 天堂资源最新在线| 欧美黄色片视频| 超碰国产精品一区二页| 日韩动漫在线观看| 久久久精品午夜少妇| a天堂视频在线观看| 亚洲国产一区二区在线播放| 99久久久久成人国产免费| 这里只有精品视频| 桃子视频成人app| 女同一区二区| 亚洲中字黄色| xxxx黄色片| 亚洲在线免费播放| 精品人妻无码一区二区色欲产成人 | 丰满熟女人妻一区二区三区| 1024成人网| 国产一区二区小视频| 自拍偷拍亚洲在线| 日韩中文视频| 日韩久久久久久久久久久久久| 噜噜爱69成人精品| 欧美一区二区三区成人精品| 亚洲国产成人高清精品| 丰满人妻一区二区三区无码av| 欧美刺激性大交免费视频| 欧美电影在线观看一区| 国产欧美综合一区| 韩国三级电影一区二区| 最新一区二区三区| 欧美一区二区三区免费观看视频 | 91国语精品自产拍在线观看性色 | 欧美三日本三级少妇99| 精品久久久三级丝袜| 丁香花在线电影小说观看| 国产一区二区在线网站| 香蕉国产精品偷在线观看不卡| 成年人免费观看视频网站| 在线免费观看一区| 欧美成人hd| 5566中文字幕一区二区| 欧美精品一区二区三区久久久竹菊| 亚洲欧美激情一区二区三区| 亚洲一区二区三区四区中文字幕| 内射后入在线观看一区| 97视频人免费观看| blacked蜜桃精品一区| 国产色视频在线播放| 亚洲欧美激情在线| 丁香花免费高清完整在线播放| 97成人精品区在线播放| 免费视频亚洲| 自拍一级黄色片| 亚洲成a人在线观看| 你懂的视频在线播放| 国产日本欧美在线观看| 国产综合久久| 精品欧美一区二区久久久| 制服丝袜av成人在线看| caoprom在线| 日韩福利影院| 国产精品99久久久久久宅男| 日韩男人的天堂| 一区二区三区四区在线观看视频 | 久久久久久九九九九| 日韩二区在线观看| 加勒比av在线播放| 亚洲欧美一区二区激情| 97精品资源在线观看| 欧美日韩精品在线一区二区| 国产精品免费免费| 成人高潮片免费视频| 国产精品69av| 欧美在线国产| 中文字幕成人动漫| 欧美成人性福生活免费看| 芒果视频成人app| 97av中文字幕| 久久久久国产成人精品亚洲午夜| 91久久精品无码一区二区| 午夜精品久久17c| 国产精品精品| 中文字幕在线观看免费高清|