成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何統一服務調用框架?

開發 架構
目前在Java 微服務領域Spring Cloud 和Dubbo體系都被廣泛使用。不同的用戶會根據項目的需要選擇合適的架構。但是在有些跨系統的場景下會涉及到兩種體系間的混合調用。怎么做到較小修改就支持Spring Cloud和Dubbo兩種體系的混合調用?

 [[282188]]

目前Spring Cloud和Dubbo體系發展都比較成熟,不少客戶已有一些采用它們開發的系統。好的微服務開發平臺需要支持這兩種體系。統一開發體驗和降低開發復雜度的同時,保留兩種體系各自的優勢。

 

  

現有企業IT架構

  

服務調用場景

IT企業根據不同系統有不同的現狀和技術發展路線。針對新系統,采用優先常用的Spring Coud應用調用Spring Cloud應用或Dubbo應用調用Dubbo應用。

但是針對已有系統進行架構調整改造,即如有系統A是Spring Cloud體系,想新增或者改造一些服務為Dubbo形式,反之亦然,就會出現2、4的混合服務調用場景,這類場景主要是通過兼容來保證平滑升級過度。

 

基于使用場景推論,原有系統可能是Spring Cloud或者是Dubbo,所以服務注冊中心需要支持Eureka和Zookeeper,調用協議需要支持Http(Restful)或RPC協議。

運行邏輯可以拆分以下幾段:

  1. 服務提供方可以根據配置項,將具體服務對外提供為Spring Cloud(Restful)和Dubbo(RPC)協議服務
  2. 服務提供方根據提供的服務協議類型,轉換為對應的服務契約,注冊到Eureka和Zookeeper
  3. 服務消費方從Eureka和Zookeeper中獲取服務注冊信息,根據服務契約解析
  4. 服務消費方根據配置項、獲取的服務契約,調用服務提供方的服務

 

  • 采用統一聲明式調用方式使得開發人員比較容易開發應用,調用實現通過服務類型區分,分別采用Feign,Dubbo采用自帶實現,這樣可以有效支持已有系統調用,降低學習成本。
  • 獨立注解可以統一規范開發,控制平臺調用規則處理需要提供和消費的接口。
  • 服務類型控制應用是服務提供方還是服務消費方,可以在同一應用中支持服務雙體系和消費雙體系。
  • 靈活配置的服務體系規則,便于根據需要調整服務體系,如應用總體為Spring Cloud,新增提供和消費服務都是Dubbo,可以在原有的配置中,增加這些新服務為Dubbo體系規則即可。

 

定義期決定運行的過程

服務類型是針對具體的服務提供類型為Spring Cloud(Restful)服務還是Dubbo(RPC)服務,提供對應的服務契約(完整的服務描述Swagger)。

注冊中心類型就是基于啟動依賴和配置項,決定連接的注冊中心具體為Eureka還是Zookeeper,提供對應的服務發布格式(注冊中心存儲的服務格式)。

服務類型決定應用、包、接口類型定義的優先級依次遞增,即如果都有配置時,以接口配置為準。服務類型的切換,可以通過配置文件的修改調整,無需調整代碼。

服務提供和服務調用的關鍵邏輯:

1. 根據配置,掃描EOSService接口。

2. 判斷服務提供類型,包含多層級優先級判斷,確定服務提供類型。

a ) Dubbo類型:仿照Dubbo本身服務發布的形式,注冊Dubbo bean實例

b ) Spring Cloud類型:根據約定發布對應Restful服務(因為為方便開發采用聲明式調用,所以需要平臺約定如url、type等規則)

3. 判斷服務調用類型,包含多層級優先級判斷,確定服務調用方式。

a ) Dubbo類型:仿照Dubbo本身服務發布的形式,注冊Dubbo bean實例

b ) Spring Cloud類型:根據約定注冊Feign bean。調用時,通過Feign調用服務。

注冊中心根據如上依賴項決定,啟動bean加載不同。不同的注冊中心保留的服務發布時機和格式有不同。

同體系的注冊中心因為需要對接已有系統,所以服務發布格式都延用同體系內容,如Spring Cloud服務發布到Eureka,和Dubbo服務發布到Zookeeper中的服務格式同原有系統其他服務,不做特殊處理。

服務發布和服務獲取的關鍵邏輯:

1. 根據依賴項,啟動不同注冊中心初始化過程。

2. 判斷注冊中心類型,替換服務注冊實例。

a ) Zookeeper類型:啟動Zookeeper注冊和監聽實例,根據服務提供類型,組織服務發布格式到Zookeeper節點(具體格式后面有示例)。

b ) Eureka類型:Spring Cloud同原有,Dubbo服務通過異步掃描,放置到對應的擴展屬性。

3. 判斷注冊中心類型,替換服務實例獲取方式。

a ) Zookeeper類型:啟動Zookeeper注冊和監聽實例,根據服務提供類型,從 Zookeeper節點獲取并解析服務格式(具體格式后面有示例)。

b ) Eureka類型:Spring Cloud同原有,Dubbo服務通過監聽Eureka 擴展屬性。

Spring Cloud服務的發布格式在Zookeeper中存儲如上圖,在Zookeeper中新增/spring-cloud-service目錄,記錄Spring Cloud服務訪問所需要的要素。

  1. <metadata> 
  2. <providers> 
  3. ["dubbo://172.20.10.7:20882/com.primeton.eos.demo.sdk.server.core.api.DubboService?anyhost=true&application=provider&bean.name=ServiceBean:dubboServiceController:com.primeton.eos.demo.sdk.server.core.api.DubboService&default.deprecated=false&default.dynamic=false&default.register=true&default.timeout=1000&deprecated=false&dubbo=2.0.2&dynamic=false&generic=false&interface=com.primeton.eos.demo.sdk.server.core.api.DubboService&methods=addUserPost,addUser&pid=46073&register=true&release=2.7.1&side=provider&timestamp=1573006719825"
  4. </providers> 
  5. <management.port>9002</management.port> 
  6. <jmx.port>61441</jmx.port> 
  7. </metadata> 

(左右滑動查看全部代碼)

Dubbo服務的發布格式在Eureka中存儲如上圖,將完整的Dubbo服務所需要的要素全部存儲到metadata中。

開發使用示例


關鍵時序處理鏈路示例

實際運行過程,根據服務的具體配置項和注冊中心有相應的差異。

 

【小結】統一調用框架就是怎么支持各種混合服務調用的場景,又能統一一種開發體驗,根據需要靈活調整實際服務類型??蚣芙鉀Q的問題是開發期統一簡單,運行期靈活多變,保證服務穩定。實現時需要約束服務類型規則和注冊中心依賴形式,同時定義配套提供和調用規則。如定義Spring Cloud的服務地址規則。

【后記】在方案實現中遇到以下幾類問題:

因具體問題與Spring Cloud、Dubbo和第三方具體jar版本有關,只能具體問題具體解決。

  • Jar版本沖突一般采用調整或鎖定jar版本。
  • Bean沖突一般修改Bean的配置或者名稱。
  • 配置項沖突需要自定義配置項處理過程,通過參數或啟動腳本設置。

 

 

責任編輯:華軒 來源: EAWorld
相關推薦

2010-09-01 19:53:25

2012-06-08 09:08:19

惠普云計算云服務

2019-01-29 10:06:31

開源技術 趨勢

2023-07-30 16:05:44

多模態學習框架自然語言

2022-03-15 21:38:29

sentry微服務監控

2009-05-05 14:25:49

服務器管理IBM

2010-12-29 14:05:57

SharePoint

2025-05-15 09:04:00

2010-05-13 09:58:20

統一通信服務

2021-12-08 10:13:17

實踐設計風格

2015-04-01 09:53:34

微軟Azure云服務服務整合

2022-05-07 10:09:01

開發Java日志

2020-05-22 11:09:16

統一通信統一通信即服務TCO

2018-12-17 17:14:06

AI數據科技

2020-08-26 08:21:59

微服務

2010-05-12 15:12:47

統一通信服務

2010-05-21 13:22:50

統一通信系統服務

2010-05-12 18:04:00

統一通信服務

2010-05-14 13:34:54

統一通信SaaS

2020-09-02 08:10:33

微服務標準化設計
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩av在线免费 | 久久国产精品视频免费看 | 欧美成ee人免费视频 | 国产视频一区二区 | 在线观看av不卡 | 大象一区 | 日本一区二区三区在线观看 | 午夜在线 | 日韩在线播放一区 | 91欧美| 国产高清在线精品一区二区三区 | 91视频大全 | 欧美精品久久久 | 亚洲国产中文字幕 | 国产一区二区三区高清 | 国内91在线 | 午夜免费成人 | 综合一区二区三区 | 亚洲国产一区二区在线 | av一级久久 | 国外成人在线视频 | 亚洲国产精品久久久久秋霞不卡 | 久久久九九| 国产成人在线视频播放 | 成人免费视频在线观看 | 日韩在线观看视频一区 | 亚洲日本中文字幕在线 | 欧美日韩福利视频 | 中文字幕在线看第二 | 精精精精xxxx免费视频 | 亚洲天堂一区 | 日韩欧美视频 | 97精品国产97久久久久久免费 | 精品欧美激情在线观看 | 免费在线观看一区二区 | 日韩精品二区 | 视频二区 | 97碰碰碰| 黄色三级免费 | 欧美在线一区二区视频 | 亚洲成人精品一区 |