国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Nodejs“實現(xiàn)”Dubbo Provider

Charles / 1187人閱讀

摘要:背景目前應(yīng)用越來越廣泛,但和的體系接入困難,所以我們需要實現(xiàn)端的邏輯。使用實現(xiàn)一個可用的完全沒有問題,最簡單的實現(xiàn)則是在對應(yīng)集群注冊接口與機器的映射關(guān)系,便可以訪問對應(yīng)接口。在評估了各種實現(xiàn)方案后,決定放棄開發(fā)端,使用的模式。

背景

目前nodejs應(yīng)用越來越廣泛,但和java的dubbo體系接入困難,所以我們需要實現(xiàn)node端的dubbo provider邏輯。java的dubbo provider是和consumer在一個jar中,提供了服務(wù)配置、注冊、集群與負(fù)載均衡、監(jiān)控和多種協(xié)議。使用nodejs實現(xiàn)一個可用的dubbo provider SDK完全沒有問題,最簡單的實現(xiàn)則是在對應(yīng)ZK集群注冊接口與機器IP的映射關(guān)系,consumer便可以訪問對應(yīng)rpc接口。可是,在可用基礎(chǔ)上,仍然需要提供相關(guān)配套設(shè)施如配置、注冊和監(jiān)控等,達(dá)到商業(yè)上的高可用。在評估了各種實現(xiàn)方案后,決定放棄開發(fā)node provider端sdk,使用node+agent的proxy模式。

agent是一個可與node服務(wù)交互通信的,并提供dubbo provider功能的java服務(wù)。agent部署在nodejs服務(wù)機器上,扮演dubbo服務(wù)的入口角色,同時node服務(wù)返回的數(shù)據(jù)類型由agent進(jìn)行轉(zhuǎn)換映射,如 object(node) -> Map(Java), 具體轉(zhuǎn)換規(guī)則則由node接口提供方提供調(diào)用接口jar包,consumer使用jar包進(jìn)行調(diào)用即可。

整體架構(gòu)

其中 vitamin為基于數(shù)據(jù)庫的統(tǒng)一配置平臺,解耦各個系統(tǒng)的強依賴。

Node中間件

Node中間件提供dubbo接口上報和服務(wù)提供功能。上報http接口要暴露的Dubbo服務(wù)配置信息(interface+version+method)即映射關(guān)系,node的提供rpc服務(wù)以HTTP形式存在(兼容之前業(yè)務(wù)),由agent進(jìn)行調(diào)用,數(shù)據(jù)類型為JSON。

Agent

根據(jù)Vitamin的實時配置向zookeeper注冊dubbo服務(wù)(泛化)

泛化服務(wù)每個method會根據(jù)Vitamin中的映射關(guān)系找到對應(yīng)的http本地接口(localhost)進(jìn)行調(diào)用

-入?yún)⒑头祷刂颠M(jìn)行json和Java類型的轉(zhuǎn)換

Node業(yè)務(wù)方

Node提供普通的HTTP+JSON服務(wù),可復(fù)用歷史接口

提供一個對應(yīng)dubbo接口的jar包,需保證http接口json和jar中的model轉(zhuǎn)換關(guān)系可行

上游業(yè)務(wù)

拿到j(luò)ar包依賴之后,像普通dubbo服務(wù)一樣調(diào)用即可

類型轉(zhuǎn)換

Dubbo方法入?yún)⑥D(zhuǎn)換成NodeJs的http調(diào)用參數(shù):強類型轉(zhuǎn)弱類型,可直接轉(zhuǎn)換
NodeJs服務(wù)返回的json轉(zhuǎn)Dubbo方法返回值:弱類型轉(zhuǎn)強類型
解決方案:Dubbo泛化服務(wù)返回Map,consumer端拿到這個Map會自動根據(jù)client.jar的方法返回值類型(支持泛型)進(jìn)行相應(yīng)的字段注入

可能存在的問題

agent不會在調(diào)用nodejs服務(wù)進(jìn)行熔斷,即nodejs服務(wù)大量超時可能會讓agent連接池或線程池占滿

agent進(jìn)程的生命周期由node進(jìn)程維護(hù),通過基于配置中心的心跳機制檢測agent進(jìn)程是否存活

錯誤排查定位由于多了一層調(diào)用,更為復(fù)雜

可能存在的單機性能問題

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/96408.html

相關(guān)文章

  • Nodejs實現(xiàn)Dubbo Provider

    摘要:背景目前應(yīng)用越來越廣泛,但和的體系接入困難,所以我們需要實現(xiàn)端的邏輯。使用實現(xiàn)一個可用的完全沒有問題,最簡單的實現(xiàn)則是在對應(yīng)集群注冊接口與機器的映射關(guān)系,便可以訪問對應(yīng)接口。在評估了各種實現(xiàn)方案后,決定放棄開發(fā)端,使用的模式。 背景 目前nodejs應(yīng)用越來越廣泛,但和java的dubbo體系接入困難,所以我們需要實現(xiàn)node端的dubbo provider邏輯。java的dubbo ...

    zhouzhou 評論0 收藏0
  • 分布式軟件架構(gòu)整合(二)

    摘要:續(xù)上篇所需技術(shù)等說明本編講解一個分布式架構(gòu)的整個流程,首先對上編中的工程作一些小小的改動,以支持接下來的實驗。本篇中,定義了服務(wù)提供者,注冊中心及客戶端消費者三者關(guān)系。一服務(wù)提供者這里首先對服務(wù)端進(jìn)行改造。 (續(xù)上篇) 所需技術(shù):spring、mybatis、druid、flyway、logback、nodejs,zookeeper,dubbo,dubbo-admin等;說明:本編講解...

    you_De 評論0 收藏0
  • 分布式系統(tǒng)的負(fù)載均衡 | 架構(gòu)干貨

    摘要:是的默認(rèn)負(fù)載均衡策略。一致性哈希負(fù)載均衡。所以負(fù)載均衡是分布式系統(tǒng)架構(gòu)設(shè)計中必須考慮的因素之一。考慮主要是如何讓下游接收到的請求是均勻分布的第層客戶端層反向代理層的負(fù)載均衡。通過輪詢第層反向代理層層的負(fù)載均衡。 一、 什么是負(fù)載均衡? 什么是負(fù)載均衡? 記得第一次接觸 Nginx 是在實驗室,那時候在服務(wù)器部署網(wǎng)站需要用 Nginx 。Nginx 是一個服務(wù)組件,用來反向代理、負(fù)載平衡...

    twohappy 評論0 收藏0
  • Dubbo學(xué)習(xí)筆記

    摘要:學(xué)習(xí)筆記的設(shè)計目的動態(tài)注冊發(fā)現(xiàn)服務(wù),軟負(fù)載均衡和服務(wù)降級。一下是整個工程的內(nèi)容公共定義一般和共享的接口應(yīng)該單獨一個包進(jìn)行定義,方便雙方的共享。暴露的服務(wù)實現(xiàn)如下入口類的實現(xiàn)如下實現(xiàn)其文件和類似其配置如下,聲明了對服務(wù)的引用。 Dubbo學(xué)習(xí)筆記 Dubbo的設(shè)計目的 動態(tài)注冊、發(fā)現(xiàn)服務(wù),軟負(fù)載均衡和服務(wù)降級。 描述服務(wù)依賴關(guān)系,描述整體服務(wù)架構(gòu)。 統(tǒng)計服務(wù)負(fù)載,按需擴展容量。 簡單...

    BlackHole1 評論0 收藏0
  • 自己動手實現(xiàn)dubbo接口測試工具

    摘要:一前言框架對于開發(fā)來說并不陌生,通常新增一個接口,我們可以直接用測試。但是工作中有時遇到一些接口的實現(xiàn)會獲取上下文中的信息,如果需要測試的話就只能另外編寫代碼設(shè)置上下文,調(diào)用接口實現(xiàn),相對來說會比較麻煩。 一、前言 dubbo框架對于java開發(fā)來說并不陌生,通常新增一個dubbo接口,我們可以直接用telnet測試。但是工作中有時遇到一些dubbo接口的實現(xiàn)會獲取上下文中的信息,如果...

    fox_soyoung 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<