欧美 变态 另类 人妖,女人下边被舔全过视频的网址,男同gay18禁网站,男女性杂交内射女bbwxz,美女视频黄频

您好,歡迎來到企業(yè)庫b2b平臺網(wǎng)站   [請登陸]  [免費注冊]
小程序  
APP  
微信公眾號  
手機版  
 [ 免責聲明 ]     [ 舉報 ]
客服電話:13631151688
企業(yè)庫首頁>其他>區(qū)域 我也要發(fā)布信息到此頁面
微服務實踐 | 網(wǎng)易考拉海購Dubbok框架優(yōu)化詳解
微服務實踐 | 網(wǎng)易考拉海購Dubbok框架優(yōu)化詳解
微服務實踐 | 網(wǎng)易考拉海購Dubbok框架優(yōu)化詳解
微服務實踐 | 網(wǎng)易考拉海購Dubbok框架優(yōu)化詳解
微服務實踐 | 網(wǎng)易考拉海購Dubbok框架優(yōu)化詳解
微服務實踐 | 網(wǎng)易考拉海購Dubbok框架優(yōu)化詳解

微服務實踐 | 網(wǎng)易考拉海購Dubbok框架優(yōu)化詳解

微服務實踐 | 網(wǎng)易考拉海購Dubbok框架優(yōu)化詳解 相關信息由 一路童行兒童攝影店提供。如需了解更詳細的 微服務實踐 | 網(wǎng)易考拉海購Dubbok框架優(yōu)化詳解 的信息,請點擊 http://www.scsong.cn/b2b/whyltx16.html 查看 一路童行兒童攝影店 的詳細聯(lián)系方式。

[手機端查看]
朱(經(jīng)理)
13627213720
立即咨詢
一路童行兒童攝影店
027-87419040
光谷步行街德意風情園二樓
1843861140@qq.com
[店鋪小程序]

一路童行兒童攝影店

聚考拉----專注網(wǎng)易考拉海購微商城分享賺聚考拉,考拉客,網(wǎng)易考拉店主入口,網(wǎng)易考拉海購加盟,網(wǎng)易考拉海購店主加盟,考拉海購入口,考拉官網(wǎng)店主,網(wǎng)易考拉微商城怎么加盟,網(wǎng)易考拉如何成為店主,網(wǎng)易考拉店主加盟,網(wǎng)易考拉海購分享賺錢,網(wǎng)易考拉微商招募,網(wǎng)易考拉海淘店主注冊,網(wǎng)易考拉分享賺,網(wǎng)易考拉店主注冊,網(wǎng)易考拉店主入口,網(wǎng)易考拉怎么做店主,網(wǎng)易考拉如何成為店主,如何成為考拉店主,考拉分享賺錢怎么用,網(wǎng)易考拉海購分享賺錢,網(wǎng)易考拉店主,成為考拉店主,網(wǎng)易考拉店主加盟,考拉店主,網(wǎng)易考拉店主邀請,網(wǎng)易海淘考拉推廣客,什么是考拉淘寶客,網(wǎng)易考拉如何成為店主,網(wǎng)易淘寶客,網(wǎng)易推廣淘寶客,考拉海購怎么做淘寶客,網(wǎng)易考拉海購怎么加入,考拉海購,考拉,網(wǎng)易考拉,網(wǎng)易考拉海購,考拉海購,考拉海購優(yōu)惠券,考拉海淘,海淘淘寶客聚考拉,網(wǎng)易考拉海購微商城加盟店主聚集地。+微jukaola|組長總監(jiān)指導如何成為網(wǎng)易考拉海購商城招商加盟店主,怎么做考拉海購淘寶客賺錢,低成本高產(chǎn)出創(chuàng)業(yè)項目微商城分銷模式,淘寶客微商新的利益增長點。網(wǎng)易考拉微商淘客引流技巧推廣bj聚考拉考拉客網(wǎng)易考拉店主入口網(wǎng)易考拉海購加盟網(wǎng)易考拉海購店主加盟考拉海購入口考拉官網(wǎng)店主網(wǎng)易考拉微商城怎么加盟網(wǎng)易考拉如何成為店主網(wǎng)易考拉店主加盟網(wǎng)易考拉海購分享賺錢網(wǎng)易考拉微商招募網(wǎng)易考拉海淘店主注冊網(wǎng)易考
詳細信息 我也要發(fā)布信息到此頁面
摘要:微服務化是當前電商產(chǎn)品演化的必然趨勢,網(wǎng)易考拉海購通過微服務化打破了業(yè)務爆發(fā)增長的架構(gòu)瓶頸。本文結(jié)合網(wǎng)易考拉海購引用的開源Dubbo框架,分享支持考拉微服務工作的基本原理。文章分析了使用Dubbo過程中遇到的問題,講解了團隊所做的一些問題修復和功能集成工作,在此基礎上最終形成了考拉內(nèi)部持續(xù)維護升級的Dubbok框架。
本文背景還要從網(wǎng)易考拉海購(下文簡稱“考拉”)微服務化說起,現(xiàn)在任何大型的互聯(lián)網(wǎng)應用,尤其是電商應用從Monolithic單體應用走向微服務化已經(jīng)是必然趨勢。微服務化是一個比較寬泛的概念,涉及到一個產(chǎn)品生命周期的多個方面,首先它作為一個指導原則指引業(yè)務劃分、架構(gòu)解耦等;技術(shù)層面實施微服務需要開發(fā)測試階段、運行階段、發(fā)布階段、部署階段等一系列基礎框架的支撐。我們在享受服務化易擴展易部署等便利性的同時,也面臨新的問題,如數(shù)據(jù)一致性、分布式調(diào)用鏈路追蹤、異常定位、日志采集等。 
本文將集中在支撐微服務交互、運行的基礎框架講解上,即考拉當前使用的Dubbok框架,Dubbok由阿里開源Dubbo框架的優(yōu)化和功能改進而來。當前開源上可選用的微服務框架主要有Dubbo、Spring Cloud等,鑒于Dubbo完備的功能和文檔且在國內(nèi)被眾多大型互聯(lián)網(wǎng)公司選用,考拉自然也選擇了Dubbo作為服務化的基礎框架。其實相比于Dubbo,Spring Cloud可以說是一個更完備的微服務解決方案,它從功能性上是Dubbo的一個超集,個人認為從選型上對于一些中小型企業(yè)Spring Cloud可能是一個更好的選擇。提起Spring Cloud,一些開發(fā)的{dy}印象是http+JSON的rest通信,性能上難堪重用,其實這也是一種誤讀。


微服務選型要評估以下幾點:內(nèi)部是否存在異構(gòu)系統(tǒng)集成的問題;備選框架功能特性是否滿足需求;http協(xié)議的通信對于應用的負載量會否真正成為瓶頸點(Spring Cloud也并不是和http+JSON強制綁定的,如有必要Thrift、protobuf等{gx}的RPC、序列化協(xié)議同樣可以作為替代方案);社區(qū)活躍度、團隊技術(shù)儲備等。作為已經(jīng)沒有團隊持續(xù)維護的開源項目,選擇Dubbo框架內(nèi)部就必須要組建一個維護團隊,先不論你要準備要集成多少功能做多少改造,作為一個支撐所有工程正常運轉(zhuǎn)的基礎組件,問題的及時響應與解答、重大缺陷的及時修復能力就已足夠重要。


 


下文將選取Dubbo高性能RPC通信原理、服務注冊發(fā)現(xiàn)特性、依賴隔離、啟動與停機等幾個方面闡述Dubbok的工作原理和相關改進工作。


 
高性能RPC
Dubbo作為一個分布式通信框架,最基本的職責就是完成跨進程的遠程調(diào)用(RPC)。以下是RPC基本流程圖:
RPC工作原理(圖片來自網(wǎng)絡)
RPC基本原理非常簡單,那么Dubbo是如何實現(xiàn){gx}的RPC通信的那,和其他分布式通信組件關注點一樣,主要集中在以下幾點的優(yōu)化: 
1.協(xié)議棧:


Dubbo支持自定義RPC協(xié)議,冗余字段少、通信性能高;
序列化協(xié)議支持hessian2、Dubbo自定義序列化等高性能協(xié)議;
Dubbo支持序列化協(xié)議解碼在業(yè)務線程(Netty3編碼自動在業(yè)務線程執(zhí)行);


Dubbo RPC通信協(xié)議棧
2.線程模型:依賴Netty3的非阻塞線程模型,支持I/O、業(yè)務邏輯線程分離,通過Handler鏈處理請求。


Dubbo業(yè)務線程與netty3 IO線程交互
這里特別強調(diào)Netty3,是因為Netty4在線程模型、buffer緩沖區(qū)等方面做了重大的設計和性能改進,包括Inbound、Outbound事件強制在I/O線程發(fā)起、buffer通過緩沖池減少分配釋放、DirectBuffer實現(xiàn)緩沖區(qū)零復制等。Netty這塊升級相對是一個高風險的點,明面上的API兼容性改造是小,如對Netty4工作原理認識不足,新的線程模型、buffer緩沖池等帶來的非預期性能下降、內(nèi)存泄露等問題相對更難定位與跟蹤。 
講到線程模型,實現(xiàn)上密切相關的Dubbo網(wǎng)絡連接模型必須要提一下。Dubbo默認是所有服務共享單一的TCP長連接的(這也是為什么服務接口不適合傳輸大負載值,即容易阻塞其他服務的調(diào)用)。為響應慢或重要的服務接口考慮,Dubbo支持設置多TCP連接,此時連接數(shù)和線程池數(shù)默認是綁定的,即每連接對應一個線池,consumer、provider都執(zhí)行這個策略,從線程隔離的角度講是合理的,但不注意也容易造成線程占用資源過多,尤其是對于消費端基本無線程阻塞的情況下可能是一個設計缺陷。


 


3.緩沖區(qū):Dubbo默認使用的全部是heap緩沖區(qū),因此Socket通信不可避免會存在內(nèi)核緩沖區(qū)和堆緩沖區(qū)復制消耗;除此之外在RPC協(xié)議解析(包括粘包/半包處理)、序列化協(xié)議解析等處理上也存在heap區(qū)內(nèi)的復制,因此性能上是存在優(yōu)化點的(當然要確有必要)。


 
自動注冊/發(fā)現(xiàn)、負載均衡等服務化特性
高性能通信是Dubbo作為RPC框架的基本功能,但使其區(qū)別于Thrift、hessian、gRPC等框架的關鍵在于其新增的服務間自動協(xié)調(diào)、服務治理等特性。 
1. 服務自動注冊自動發(fā)現(xiàn)、負載均衡


服務自動注冊發(fā)現(xiàn)依賴于注冊中心的支持,consumer與provider通過注冊中心獲取各自地址后直接通信。目前考拉使用Zookeeper作為注冊中心,Dubbo原生支持Redis作為注冊中心,使用pub/sub機制協(xié)調(diào)服務的上下線事件通知,但Redis方案要求服務器時間同步且存在性能消耗過大的缺點。




消費者/提供者注冊中心交互圖
使用Zookeeper作為注冊中心,建議選用curator作為客戶端框架;
 


Zookeeper服務器異常宕機并重新啟動的場景下,Dubbo服務的recover恢復機制存在不能重新注冊的問題,導致老zk session失效后服務被錯誤qc。
服務框架常見負載均衡實現(xiàn)方案包括:集中式、分布式,分布式又可分進程內(nèi)、分進程兩種。Dubbo采用的是服務發(fā)現(xiàn)和負載均衡共同集成在consumer端的分布式進程內(nèi)解決方案。


Dubbo負載均衡策略
負載均衡策略上Dubbo原生提供的有基于權(quán)重隨機負載、最少活躍數(shù)優(yōu)先、Roundrobin、一致性Hash等幾個方案。 
在實際應用中,為了能對個別錯誤率較高的異常provider做到及時發(fā)現(xiàn)、及時引流,Dubbok增加了新的負載均衡策略,在支持權(quán)重的基礎上自動發(fā)現(xiàn)異常provider,異常期自動減流、正常后自動恢復流量。
 


2.路由、集群容錯、限流


和負載均衡策略一樣,Dubbo的路由方案是集成在消費端的,加上集群容錯功能客戶端相對是一個重量的功能封裝。可選方案是將路由工作移到注冊中心完成(這要求注冊中心具有較強的可定制性,不僅路由像權(quán)限控制、服務過濾、環(huán)境隔離等都可由注冊中心集成)。


 


限流目前支持consumer、provider端并發(fā)限流,實際上是基于信號量限制的,以接口粒度分配信號量,當信號量用完新的調(diào)用將被拒絕,當業(yè)務返回后信號量被釋放。


 


消費端限流應該是為整個提供端集群分配信號量,而Dubbo錯誤的將信號量分配給單個機器。這個問題目前可以通過下文提到的隔離框架的流控功能來實現(xiàn)。 
限流并非jq限制,不應當依賴其實現(xiàn)嚴格的并發(fā)數(shù)控制。 
后端backend服務限流需要業(yè)務方合理評估每個接口的流控值,要求對業(yè)務量有足夠經(jīng)驗值(可能要在多次線上調(diào)優(yōu)后才能最終得出合理的流控值)??祭瓋?nèi)部流控實踐證明,對于保證服務穩(wěn)定性、優(yōu)先保證重要消費方、實現(xiàn)服務隔離等有著重要的作用。
 


3.服務動態(tài)治理


動態(tài)治理本質(zhì)上是依賴Dubbo運行期參數(shù)的動態(tài)調(diào)整,再通用一點其實就是應用的參數(shù)動態(tài)調(diào)整,開源常用的disconf、diamond、archaius等集中配置管理工具都是設計來解決這個問題。Dubbo內(nèi)部在url參數(shù)傳遞模型基礎上實現(xiàn)了一套參數(shù)動態(tài)配置邏輯,個人認為相比于Dubbo的實現(xiàn),集成disconf等更專業(yè)的框架應該是更好的解決方案,或許Dubbo為了一些其他設計目標解除了對一些外部框架的強制依賴。動態(tài)治理可以實現(xiàn)從基本參數(shù)如timeout、mock到一些高級特性如路由、限流等幾乎所有的運行期參數(shù)調(diào)整。


 


Dubbo原生在動態(tài)配置上存在很多bug,配置不生效或配置規(guī)則誤讀等問題都遇到過,如果你再使用原生Dubbo過程中也遇到任何配置問題,Dubbok應該都已經(jīng)解決掉了。


 
依賴隔離(服務降級)
當應用被設計依賴外部服務時,要始終保持警惕狀態(tài):外部依賴是不穩(wěn)定的,為此對接外部依賴做好解耦是關鍵,避免外部接口發(fā)生異常拖垮自身系統(tǒng)。Dubbo提供了超時timeout機制作為最基本的解耦措施,同時在接口報錯時支持提供降級的容錯邏輯;除了容錯降級,Dubbo進一步支持強制的短路降級。


容錯  短路
然而在容錯降級與短路降級之間,Dubbo缺乏一種在容錯與短路間切換的機制,即自動熔斷。自動熔斷要達到的效果是:當接口偶然報錯時執(zhí)行容錯返回備用數(shù)據(jù),而當接口持續(xù)大量報錯時能自動在消費端對接口調(diào)用短路直接返回備用數(shù)據(jù),之后持續(xù)監(jiān)測接口可用性,接口恢復后自動恢復調(diào)用。這樣能{zd0}限度減少接口異常對消費方的影響,同時也減輕本就處于異常狀態(tài)的提供端負載。


自動熔斷工作原理圖
Dubbok通過標準SPI的的形式,實現(xiàn)了熔斷功能。目前支持兩套方案:一套是自己實現(xiàn)的熔斷邏輯;一套是通過集成hystrix框架實現(xiàn)。目前支持錯誤率、{zd1}請求量、熔斷時間窗等基本配置,支持將業(yè)務異常納入統(tǒng)計范疇;以上參數(shù)均可通過SOA治理平臺運行期動態(tài)調(diào)整;支持外部Dubbo依賴調(diào)用的準實時監(jiān)控。


SOA動態(tài)調(diào)整熔斷參數(shù)


依賴實時監(jiān)控
Hystrix是Netflix在微服務實踐中為實現(xiàn)外部依賴解耦而設計的框架,它假設所有的外部依賴(http、MySQL、Redis等等)可能在任何時間出現(xiàn)問題(你甚至可以想像不經(jīng)意間就使用了一個沒有提供超時設置的http客戶端)。于任何可能的外部延時造成的阻塞或其他異常,hystix提供了基于線程池隔離的超時機制,新版本在RxJava基礎上信號量隔離也同樣支持超時。此外框架還支持定制容錯邏輯、請求結(jié)果緩存、請求合并、消費端線程池隔離等,由于某些功能當前無明確需求或與Dubbo功能設計重合而沒有進行集成。 
Hystrix更多特性及實現(xiàn)原理請參見Netflix官方文檔。


 
啟動與停機
這里主要關注Dubbo工程啟動初始化階段和停機銷毀階段的一些特性和改進點: 
1.延遲暴露。


默認Dubbo服務會隨著Spring框架的加載逐一完成服務到注冊中心的注冊(暴露),如果某些服務需要等待資源就位才能暴露,那就需要延時注冊。






 


增加Spring context初始化完成后繼續(xù)延時等待的配置項;
 


在無特殊配置的情況下,所有的Dubbo服務默認是注冊在同一個tcp端口的。而延遲暴露是通過開啟新的延時線程實現(xiàn)的,當延時結(jié)束時由于多線程并發(fā)執(zhí)行導致多服務隨機注冊在多個端口。
 


2.啟動預熱


一些應用在運行期會通過本地緩存中間結(jié)果提升性能,而當此類應用重啟時本地緩存數(shù)據(jù)丟失,如果重啟后的機器立即有大量請求導流過來,由于沒有緩存加速會導致請求阻塞響應性能降低。通過對重啟后的機器設置預熱期可有效緩解重啟緩存失效問題:具體做法是降低預熱期內(nèi)的機器權(quán)重,引導少部分流量到此機器,此機器可以在預熱期內(nèi)逐步建立緩存,待預熱期過后恢復正常權(quán)重與其他機器平均分攤流量。


 


3.優(yōu)雅停機


在集群部署的情況下,單個消費者或提供者機器上下線對整個產(chǎn)品的運轉(zhuǎn)應該是近乎無感知的,Dubbo提供了優(yōu)雅停機功機制保障在進程關閉前請求都得到妥善處理。


 


消費方優(yōu)雅停機:控制不再有新的請求發(fā)出;等待已經(jīng)發(fā)出的請求正確返回;釋放連接等資源。


 


提供方優(yōu)雅停機:通知消費端停止發(fā)送請求到當前機器;通知注冊中心服務下線;等待已經(jīng)接收的請求處理完成并返回;釋放連接等資源。


 


考拉再每次服務上下線過程中,每個工程總是收到大量的消費方/提供方報出的服務調(diào)用異常,經(jīng)排查是Dubbo優(yōu)雅停機實現(xiàn)的問題,修復問題后工程上線階段異常數(shù)明顯減少。
 


另外停機階段總是莫名的收到zk連接為空的異常信息。是由于在通知注冊中心服務下線的過程中,Spring銷毀線程和jvm hook線程并發(fā)執(zhí)行,導致zk客戶端被提前銷毀導致拋出異常。
 


4.Provider重啟,注冊中心發(fā)送大量服務銷毀與注冊通知導致consumer工程Full GC。


歷史原因,考拉內(nèi)部仍存在一個提供近200個Dubbo服務的單體工程,而每次當這個工程上線時,消費它的consumer工程就會出現(xiàn)頻繁Full GC(3-5次,非內(nèi)存泄露)。 
是Dubbo為保證高可用而設計的注冊中心緩存導致的問題:在每次收到注冊中心變更時consumer會在本地磁盤保存一份服務數(shù)據(jù)副本,由于多注冊中心共享同一份緩存文件,為了避免相互覆蓋,每個注冊中心實例會在收到變更時重新從磁盤加載文件到緩存,和變更數(shù)據(jù)對比后重新寫回磁盤,在近100提供者機器不斷重啟的過程中,大量的變更通知導致的頻繁加載緩存文件占用大量內(nèi)存導致Full GC。
 


Dubbok近期優(yōu)化目標
提供端線程池隔離,解決提供端線程池阻塞等問題;優(yōu)化消費端線程池分配方案
服務治理動態(tài)配置功能增加應用、機器粒度的配置
多注冊中心消費端負載均衡策略
Dubbo內(nèi)部資源JMX監(jiān)控
結(jié)合SOA平臺優(yōu)化監(jiān)控統(tǒng)計數(shù)據(jù):錯誤類型細分(超時、限流、網(wǎng)絡異常等);執(zhí)行時間細分如90%、99% RT等;統(tǒng)計占用線程數(shù)較多的服務、傳送數(shù)據(jù)量較大的服務,為分線程池或連接做參考
對Spring boot推行的Javaconfig配置方式提供更友好、全面的注解支持
一些框架升級,如Javassist、Netty等
替代Zookeeper的高性能、可擴展注冊中心
服務安全、授權(quán)問題調(diào)研
Spring Cloud的一些{yx}特性將作為Dubbok改進的一個持續(xù)關注點
……
 
總結(jié)
文中提到的一些改進點只是簡略描述,Dubbok的很多改進點也沒有一一提及,后續(xù)有時間再詳細道來。 
Dubbok框架、SOA服務治理平臺、分布式調(diào)用鏈路跟蹤以及其他考拉內(nèi)部維護的如分布式事務、消息中間件等共同支撐了考拉微服務化的正常運轉(zhuǎn)。上文也提到微服務需要有開發(fā)、測試、運行、運維、部署、發(fā)布等各階段的全鏈路支撐才能發(fā)揮{zd0}價值,后續(xù)我們將繼續(xù)聯(lián)合其他兄弟部門,對微服務化實踐進一步優(yōu)化。


——劉軍


網(wǎng)易考拉海購
鄭重聲明:產(chǎn)品 【微服務實踐 | 網(wǎng)易考拉海購Dubbok框架優(yōu)化詳解】由 一路童行兒童攝影店 發(fā)布,版權(quán)歸原作者及其所在單位,其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)(企業(yè)庫www.scsong.cn)證實,請讀者僅作參考,并請自行核實相關內(nèi)容。若本文有侵犯到您的版權(quán), 請你提供相關證明及申請并與我們聯(lián)系(qiyeku # qq.com)或【在線投訴】,我們審核后將會盡快處理。
會員咨詢QQ群:902340051 入群驗證:企業(yè)庫會員咨詢.
類似產(chǎn)品
相關產(chǎn)品: