国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

服務管理與通信的基礎原理分析

開發 新聞
閱讀源碼最重要的是耐著心情慢慢看,并隨手畫下核心流程,實際上如果有一定的編程經驗,不管是閱讀什么工程的源碼,只要用心去分析單點的實現原理,都算不上過度復雜。

涉及輕微的源碼展示,可放心參考!

一、基礎簡介

服務注冊發現是微服務架構中最基礎的能力,下面將從源碼層面分析實現邏輯和原理,在這之前要先來看下依賴工程的基礎結構,涉及如下幾個核心組件:

commons:服務組件的抽象聲明,本文只分析注冊發現與負載均衡;

nacos:當下常用的注冊中心組件,用來進行服務管理;

feign:服務間通信交互組件,在服務請求時涉及負載均衡的策略;

ribbon:在服務間通信請求時,提供多種負載均衡的策略實現;

在熟悉工程依賴之間的結構時,還要明白服務間交互的流程和原理,這樣在分析源碼設計時,有一個清晰的思路與輪廓;如何實現下面的服務交互模式,在閱讀源碼工程時,圍繞如下兩個核心邏輯:

  • 注冊發現:注冊時如何上報服務的信息數據,這些數據以怎樣的方式管理;
  • 負載均衡:當請求的服務同時存在多個時,以什么樣的策略選擇執行請求的服務;

在這里先簡單的聊一下個人在閱讀源碼工程時的基本思路,比如微服務組件:通常從配置參數作為切入口,觀察基于參數構建的核心對象,再重點分析對象的管理模式,以及適配的擴展能力,最后結合項目的應用場景即可:

閱讀源碼最重要的是耐著心情慢慢看,并隨手畫下核心流程,實際上如果有一定的編程經驗,不管是閱讀什么工程的源碼,只要用心去分析單點的實現原理,都算不上過度復雜,但是組件通常為了復用能力,會去適配多種復雜的場景,這樣勢必要采用抽象的封裝和設計模式,源碼工程的復雜度自然就會相應提高,這個話題后續會細聊。

二、服務注冊

1、服務配置

首先從Nacos配置參數開始,這里只設置服務發現的兩個參數:1Nacos注冊中心的服務端地址,2在服務的元數據中加載分支號;然后來具體的看源碼流程:

在配置參數加載的過程中,有很多缺省的默認值,所以需要關注最終會提供的參數信息,來判斷是否需要自定義設置,另外 AutoConfig 配置要重點看實例化的對象;斷點的流程可以按照如下的方式做設置,這里陳列的是在配置加載階段的幾個核心節點:

  • 參數:NacosDiscoveryProperties#getNacosProperties
  • 配置:NacosServiceAutoConfiguration#nacosServiceManager
  • 構建:NacosServiceManager#buildNamingService

NamingService是Nacos服務管理接口,涉及注冊、查詢、撤銷、檢查等多個方法,即對應的是Nacos服務端的相應API請求,在注冊執行的階段會細說用法。

2、注冊構建

看完服務配置之后再看注冊配置,對于配置中復雜的設計,需要重點關注兩個信息:ConditionalOn和matchIfMissing,這樣很容易發現默認加載:

  • 配置:NacosServiceRegistryAutoConfiguration#nacosServiceRegistry
  • 注冊:NacosServiceRegistry#register
  • 實例:NacosServiceRegistry#getNacosInstanceFromRegistration

在構建服務注冊的核心類NacosServiceRegistry時,通過服務的登記信息轉換為注冊的實例化對象,然后通過NamingService接口方法,上報實例化對象;需要注意的是,雖然這里只看了Nacos中的相關API,但實際上API實現了諸多spring-cloud-commons包中聲明的接口,比如Registration、ServiceInstance等。

3、執行上報

通常微服務的注冊中心組件,都是基于 server-client 架構和部署方式,客戶端需要根據自身啟動狀態去上報或者撤銷注冊,服務端負責統一維護注冊數據:

  • 實現:NacosNamingService#registerInstance
  • 執行:NamingProxy#registerService
  • 接口:InstanceController#register

在最終執行服務注冊時,其動作本質就是請求Nacos服務端的一個Post方法,并將配置數據上報,例如:IP地址、端口、元數據、權重等;這樣客戶端注冊邏輯執行完成,然后再看服務端數據可視化界面,就可以看到注冊的客戶端服務。

至于Nacos服務端是如何管理這些注冊數據的,參考部署版本的 nacos-naming 模塊源碼,閱讀上報接口和頁面中的列表加載的實現即可;注意在初始的配置文件中,加入的branch分支參數也在元數據結構中。

在NamingService接口中,涉及多個服務管理的方法,在執行原理上基本相同就不在贅述,這樣注冊中心的Client端和Server端就形成了通信機制,接下來再看Client端之間的通信。

三、服務通信

1、基礎配置

Feign在配置方面比較復雜,提供了多個場景下的適配能力,這里只以兩個常見的參數作為切入點:1通信超時時間,2Http選型(采用默認值);

  • 參數:FeignClientProperties#getConfig
  • 注解:FeignClientsRegistrar#registerFeignClients
  • 配置:FeignAutoConfiguration#feignContext
  • 構建:FeignClientFactoryBean#getTarget

這里要重點關注的是注解的掃描和注冊以及容器管理,要理解Feign的上下文環境需要明白上文中描述的服務間交互原理,然后參考FeignClientFactoryBean工廠類中構建邏輯。

2、通信邏輯

雖然Feign注解的方式可以簡化開發,但是在具體執行的時候還是Http的請求響應模式,這里可以參考LoadBalancerFeignClient類中的execute方法:

  • 配置:FeignRibbonClientAutoConfiguration
  • 通信構建:LoadBalancerFeignClient#execute
  • 負載均衡:AbstractLoadBalancerAwareClient#executeWithLoadBalancer

不管是Feign組件還是Spring框架,默認的負載均衡策略都是采用Ribbon的實現方式,在上述流程中配置和負載均衡命令都依賴Ribbon組件,接下來看服務選擇策略。

四、負載均衡

1、命令構建

這里構建了調用負載均衡接口的命令,ILoadBalancer接口中提供服務管理的相關方法,其中最核心的就是chooseServer方法,然后結合具體的策略規則實現服務的選擇的功能:

  • 命令構建:LoadBalancerCommand.Builder#build
  • 負載容器:LoadBalancerContext#getServerFromLoadBalancer
  • 選擇接口:ILoadBalancer#chooseServer

2、策略規則

Ribbon組件中負載均衡的策略有好幾種規則,比如隨機選擇、Key匹配、權重傾斜等;在工作中常用的就是默認規則即RoundRobinRule,以及基于Key設計的灰度模式,簡單做法就是服務啟動時在元數據中添加的分支號作為匹配的標識;

  • 規則設置:BaseLoadBalancer#setRule
  • 隨機策略:RoundRobinRule#choose
  • 過濾策略:PredicateBasedRule#choose

現在回到流程的開始看,通過Nacos組件進行服務注冊和管理,通過Feign組件基于Ribbon負載均衡策略做服務通信,如果單看各節點組件的邏輯還比較容易理解,但是通過Spring框架做組件之間的協作調度時,復雜程度明顯提高;

如果是剛開始閱讀源碼的階段,可以只關注相應流程的核心邏輯,選擇性忽略細節的實現原理,當然重點還是要多讀讀Spring的設計,這樣時間久了自然會有很多收獲。

五、參考源碼

編程文檔:

https://gitee.com/cicadasmile/butte-java-note

應用倉庫:

https://gitee.com/cicadasmile/butte-flyer-parent

責任編輯:張燕妮 來源: 博客園
相關推薦

2023-11-29 16:21:30

Kubernetes服務注冊

2022-02-07 21:49:19

串行通信UART

2009-07-04 16:33:10

2022-12-11 20:09:50

網絡編程通信

2014-08-13 18:47:46

2015-03-09 10:33:14

即時通信管道過濾

2023-02-07 09:17:19

Java注解原理

2024-05-29 08:05:15

Go協程通信

2011-08-31 13:22:37

PhoneGapAndroidjavascript

2023-03-21 15:30:54

微服務通信架構

2021-07-12 09:17:54

Memory Comp系統內存

2017-03-28 10:20:24

Docker通信分析

2025-08-04 02:15:00

2025-08-04 03:05:00

2013-02-27 10:06:43

2010-02-02 13:19:02

Fedora服務管理

2009-09-24 10:41:35

打印服務器

2018-12-04 09:02:36

Web服務器PHP

2021-07-16 11:40:58

鴻蒙HarmonyOS應用

2024-01-02 12:53:58

智慧城市人工智能物聯網
點贊
收藏

51CTO技術棧公眾號

成人手机在线| 日韩激情一区| 日韩欧美国产骚| 2019一级黄色毛片免费看网| 91亚洲精品一区二区乱码| 中文网丁香综合网| 亚洲毛片av| 成人综合电影| 欧美a级片网站| 国产免费一区视频观看免费| 亚洲激情77| 2019中文字幕全在线观看| 亚洲精品一区二区三区中文字幕| 亚洲男人av电影| 日本蜜桃在线观看视频| 日韩激情视频在线播放| 91视频欧美| 亚洲一区av在线播放| av亚洲一区二区三区| 色诱女教师一区二区三区| 456成人影院在线观看| 自拍偷拍亚洲精品| 亚洲精品乱码日韩| 久精品免费视频| youjizz亚洲| 欧美又大又粗又长| 国产一区二区三区四区大秀| 国产精品丝袜视频| 欧美亚洲不卡| 女女同性女同一区二区三区91| 国产亚洲精品v| 一本色道久久综合亚洲精品婷婷| 国产原创一区二区| 成人黄色一区二区| 亚洲一区二区五区| 欧美女v视频| 精品国偷自产国产一区| 成人午夜精品| 久久久久久久国产精品| 亚洲区小说区图片区qvod按摩| 国产日韩专区在线| 亚洲欧美日韩专区| 高清无码视频直接看| 亚洲视频狠狠干| av午夜在线| 精品在线观看国产| 成人在线视频中文字幕| 成人中文字幕+乱码+中文字幕| 99精品免费视频| 免费不卡av在线| 一区二区三区四区视频精品免费| 日本www在线观看视频| 中文字幕日本欧美| 99久久夜色精品国产亚洲96| 一本色道久久99精品综合| 亚洲国产精品成人综合| 欧美香蕉爽爽人人爽| 国产视频精品va久久久久久| 少妇淫片在线影院| 亚洲欧美日韩国产一区二区三区| 成人黄色网址| 免费电影日韩网站| 一级二级三级欧美| 9i在线看片成人免费| 亚洲激情一区二区| 另类小说综合欧美亚洲| 在线观看av的网址| 亚洲国产成人一区| 亚洲日本成人在线观看| 丝袜连裤袜欧美激情日韩| 国产真人做爰毛片视频直播 | 又黄又免费的网站| 亚洲国产欧美日韩另类综合 | sm在线播放| 9a蜜桃久久久久久免费| 视频一区二区三区在线| 色乱码一区二区三区熟女| 欧美小视频在线| 精品人人人人| 国产a级一级片| 在线性视频日韩欧美| 久久精品久久综合| 九九热播视频在线精品6 | 免费视频一区二区三区在线观看| 男人天堂视频在线观看| www黄色日本| 五月开心婷婷久久| ww亚洲ww在线观看国产| 久久av电影| 亚洲h片在线看| 欧美视频在线观看免费网址| 亚洲天堂1区| 91欧美激情另类亚洲| 国产高清在线精品| 午夜免费福利在线观看| 国产91免费看片| 不卡视频一二三四| 青青青国内视频在线观看软件| 日韩av免费在线| 91麻豆国产香蕉久久精品| 免费污视频在线观看| 2019国产精品视频| 国产精品国产三级国产普通话蜜臀 | 日韩三区在线| 精品999在线观看| 亚洲已满18点击进入久久| 国产不卡精品| 欧美一区二区三区综合| 91精品综合久久久久久| 久久av影视| 九九热精品在线播放| 久久精品91久久香蕉加勒比| 美女视频网站久久| 啦啦啦中文在线观看日本| 久久久久免费网| 欧美三级中文字| 欧美日韩亚洲国产精品| 美女欧美视频在线观看免费| 成人a免费视频| 亚洲高清免费视频| 日本精品三区| julia京香一区二区三区| 欧美在线一区二区三区四| 91女厕偷拍女厕偷拍高清| 欧美日一区二区三区| 女女百合国产免费网站| 日韩精品久久久久久福利| 久久超碰97人人做人人爱| heyzo高清中文字幕在线| 欧美一级二级三级九九九| 欧美日本一区二区在线观看| 99精品国产99久久久久久福利| 三级毛片在线免费看| 99久久无色码| 4hu四虎永久在线影院成人| 老司机一区二区三区| 成人免费看片| 欧美日韩精品免费看| 日韩午夜av一区| 免费在线视频一区| 日本不卡1234视频| www.日本三级| 欧美大胆在线视频| 亚洲国产精品国自产拍av| 欧美黑人做爰爽爽爽| 亚州福利视频| 日本伊人精品一区二区三区介绍| 亚洲欧洲色图综合| 99久久www免费| 国产尤物视频在线| 日产精品高清视频免费| 亚洲精选在线观看| 久久久久国产精品免费免费搜索| 高清日韩欧美| 一级片免费在线| 久久精彩视频| 亚洲桃花岛网站| 国产精品日韩成人| 亚洲女同一区| av成人福利| 尤蜜粉嫩av国产一区二区三区| 91精品国产99| 在线观看一区日韩| 狠狠v欧美v日韩v亚洲ⅴ| 97色成人综合网站| 精品美女视频在线观看免费软件| 欧美第一黄网| 深夜福利亚洲导航| 午夜精品久久久久久久久久久| 久久人人超碰| 91麻豆精品激情在线观看最新 | 99re8在线精品视频免费播放| 91精品导航| 人成在线免费视频| 综合一区中文字幕| 45www国产精品网站| 欧美群妇大交群中文字幕| 国产麻豆日韩欧美久久| 自拍偷拍一区| 国产乱码在线| 国产精品粉嫩av| 婷婷精品国产一区二区三区日韩| 久久av红桃一区二区小说| 欧美亚洲高清一区| 久久亚洲精品国产精品紫薇| 国产精品红桃| 91精品短视频| 国产蜜臀av在线播放| 天堂影视av| 国产精品久久国产| www.成人av| 久久久久久国产| 精品免费99久久| 亚洲国产精品精华液网站| 久久激情五月激情| 青青草国产免费一区二区下载| 都市激情国产精品| 午夜在线观看视频网站| 成年人免费在线播放| 免费99视频|