Dubbo-go技術實踐分享_第1頁
Dubbo-go技術實踐分享_第2頁
Dubbo-go技術實踐分享_第3頁
Dubbo-go技術實踐分享_第4頁
Dubbo-go技術實踐分享_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、tuya open-gateway篇Dubbo-go技術實踐分享CONTENT目錄選擇dubbo-go(需求由來)01gateway設計02gateway實現(踩坑)03成果和展望04選擇dubbo-go1總體背景: 19年年初,公司已有重量級dubbo集群,想引入go語言做一些中間件工作,如定時、消息隊列、網關等等。急需一種方案能夠使go服務無縫接入目前的業務集群。從那時起就比較關注dubbo-go項目。 當時有多種方案,也已經有一些go項目通過grpc做了起來。但是對已有java集群的侵入代價較大,一些項目難以推廣。problem原有架構1接口非RESTful風格,對外部開發者不友好。2頁

2、面配置開放接口,步驟繁瑣,且權限難以控制。3權限校驗不夠靈活,不符合新業務需求。4依賴繁重,升級風險大。選擇dubbo-go的理由:1.項目需求最優的選擇。2.dubbo-go社區活躍。3.本人對go喜愛open-gateway希望達到的愿景:1.通過一個golang的項目閉環,搭建公司go開發上線基礎環境,沉淀一些go的公共組件,并且驗證go服務無侵入加入java集群的可能性。2.通過該網關,暴露接口。能做到最少浸入,最少配置,解決目前暴露的問題和需求。3.go編碼的網關能從性能上對現已有項目有所突破。gateway設計2010203高可用 集群部署,本地持久化注冊信息。支持各種降級策略。d

3、ubbo-go注冊中心調優。靈活權限校驗、安全掃描 啟動時增加敏感信息掃描,權限策略一接口一配置,靈活、安全。減少配置和依賴 在滿足需求基礎上盡可能的減少依賴,借鑒dubbo管理思想,做到部署方便、使用便捷。simplesecurityHigh Availability外部調用方 多區專線打通,網關提供指定區域調用api網關dubbo集群gateway實現3 目前社區伙伴正在從事的工作,這也是提升服務可靠性不可缺少的一環。監控、限流 性能調優 dubbo-go transport層使用getty提供讀寫分離的連接池。在項目開發測試過程中,檢測并修復缺陷、并通過經驗調參,優化并發性能。加強服務治

4、理可靠性 項目使用zk注冊中心,開發期間發現并解決數個dubbo-go的zk模塊的bug和可優化點。目前運行良好,以實際驗證了生產環境的可用性。提升hessain-go對java支持 實現dubbo-go泛化調用網關系統建立在泛化調用的基礎上,此項必須要實現的功能。0102030405針對該網關項目對dubbo-go優化(踩坑): 開發中,遇到大量序列化適配問題。感謝社區同學們幫助掃除障礙。目前apache/dubbo-go-hessian2已經很好的支持了dubbo協議中java和go的交互。泛化調用的實現:generic_filter 遞歸,將參數中的struct全部轉化為map依賴準備

5、com.tuya.gateway gateway-client 1.0-SNAPSHOT加入spring bean 網關highway路徑掃描使用示例業務應用啟動流程:Servicepublic class DubboStarterListener implements ApplicationListener Autowired private ApplicationContextUtil applicationContextUtil; Override public void onApplicationEvent(ContextRefreshedEvent contextRefreshedE

6、vent) List urlPathInfoList = ApplicationContextUtil.getUrlPathInfos(); CacheDubboUtil.cacheUrlPath(urlPathInfoList); 注冊信息舉例:key: POST:/v1.0/hello/uid/add,interfaceName: com.tuya.hello.service.template.IUserServer,methodName: addUser,parameterTypes: com.tuya.gateway.Context, java.lang.String, com.tuy

7、a.hello.User,parameterNames: context, uid, userInfo,updateTimestamp: 1234567890,permissionDO: biz: base,role: DEFAULT,methodName: validate,interfaceName: com.tuya.hello.service.IPermissionServer,version: 1.0.0,timeout: 5000,voMap: userInfo: name: java.lang.String,sex: java.lang.String,age: java.lang

8、.Integer,parameterNameHumpToLine: true,resultFiledHumpToLine: false,highwayContextIsNeed: false,tokenUidIsNeed: false,protocolName: dubbo 注冊信息由接入網關的provider應用啟動時寫入redis 網關通過定時更新、RedisPubsub等等機制獲取到注冊信息 網關可通過RedisPubsub信號寫入本地磁盤,做容災備份,防止注冊中心奔潰。調參:client.ymlgetty session的可擁有連接數 session空閑關閉時間gettyRPCClientConnPool大小也就是每一個DubboInvoker擁有session的數量單詞請求最大傳遞數據長度分包讀取單個包讀取超時時間分包寫單個包寫入超時時間每次讀取單包長度每次寫入單包長度成果和展望42000+4000W+ 網關集群日均dubbo調用次數超過4000W1000W+網關服役2個月日流量破千萬壓測網關API單臺2c8G機器QPS可達2000+暴露restful接口超過1000個1000+原外部消息推送架構更多的dubbo-go場景的嘗試正在重構的推送框架dubbo-go相對于

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論