当前位置:网站首页>8 figures | analyze Eureka's first synchronization registry
8 figures | analyze Eureka's first synchronization registry
2022-07-01 06:42:00 【Microservice mall technology sharing】
The registry is particularly important for the registry , All functions are expanded around this registry . Services such as A To access the service B, You have to know the service B Of IP Address and port number . As shown in the figure below , The traditional way is to serve A I see. Service B After the address of , send out HTTP Request to the corresponding API Address .

That service A and service B The information is actually placed in the registry of the Registration Center , The registration center manages the registration of all services 、 Offline . service A and service B Want to get registration information , Unified access to the registry , Get the registry , I know the of other services IP Address And port number .

Last time , Let's talk about a Eureka Client Successfully registered to Eureka Server after ,Eureka Server Will save the registry information in a ConcurrentHashMap in .
that Client How to get other customer registration information ?

Two 、 Get registration information for the first time
First of all, let's think about , service B Sent the registration request to the Registration Center , That service A You have to get the registry , service A There must have been no registry information at the beginning , Then you must get the registration center to pull all the registration forms .( Service here A Also known as Eureka client )
service A For the registry , Namely
to see somebody for the first time, service A Want to putallSave a copy of the registration information in your own place , Convenient for follow-up API call .
Next, let's analyze how the client obtains the full registry from the perspective of source code .
The client sends a request to get
Client When initializing , It will start from Eureka Get the full registry from the registry :

The first time to obtain registration information is to use it in DiscoveryClient Obtained during initialization . We can find the following judgment from the source code :
if (clientConfig.shouldFetchRegistry() && !fetchRegistry(false)) {
fetchRegistryFromBackup();
}
The meaning of this code is shown in the figure :

First, it depends on whether it is configured shouldFetchRegistry, If the , It will call fetchRegistry Method to get the registry .
Because it's new client, So there must be no registration information , So local variables applications = null. Then judge whether it is necessary to obtain the full registry according to several conditions , If one of the conditions is met, the full amount of :

- Conditions for a : Whether to force full access . Transmitted false, You don't need a full amount .
- Condition 2 : Whether the registry information is empty .application == null, It's empty , Need full access to .
- Condition 3 : Get registered client Whether the number of is equal to 0. Yes , Need full access to .
Because of satisfaction applications=null, So you need to get the full amount .
Method for obtaining full registration information :
getAndStoreFullRegistry()
In this, you will send the following HTTP Request calling jersey Of restful Interface :
getApplications()
then Eureka Server Deal with this http The requested class is here :ApplicationsResource Class getContainers Method . This method will be used to get Server Over there .
3、 ... and 、Server Side of the registry cache
Server The client will put the registry into the cache , Reading the registry is actually read from the cache .
There are two levels of cache , A read-only cache readOnlyCacheMap And read-write cache readOnlyCacheMap.
As shown in the figure below :

The read logic of the cache is as follows :
Jersey Servlet Handle HTTP request .
First, the default will start from read-only Find it in the cache .
If not , Again from Reading and writing Find it in the cache .
If you find it, update it read-only cache , And return the found cache .
If you can't find it yet , Return empty .

Leave a few questions , Put it in the cache architecture article :
(1) How did the two-level cache data come from ?
(2) How cache data is updated ?
(3) How the cache expires ?
then ,Eureka Client After getting the registry information , It will be saved locally localRegionApps variable . such Client There will be a copy of Server The registry information of .
localRegionApps.set(this.filterAndShuffle(apps));
Four 、 summary
Registry, whether for Client still Server Come on , It's all very important :
- about Server End to speak , In order to better provide the service of querying the registry , Multi level cache is used to cache registry information .
- about Client End to speak , When the registry is obtained for the first time, it will grab the registry in full , Have their own local .
边栏推荐
- 微信公众号内嵌跳转微信小程序方案总结
- PAT (Advanced Level) Practice 1057 Stack
- Several ways of gson's @jsonadapter annotation
- Postgraduate entrance examination directory link
- Router 6/ and the difference with router5
- Promise
- 产品学习(二)——竞品分析
- Esp32 - ULP coprocessor reading Hall sensor in low power mode
- Is the account opening of Huafu securities safe and reliable? How to open Huafu securities account
- 记一次线上接口慢查询问题排查
猜你喜欢

Async and await

Promise

2022 年江苏省职业院校技能大赛(中职) 网络搭建与应用赛项公开赛卷

Mongodb: I. what is mongodb? Advantages and disadvantages of mongodb

【Unity Shader 消融效果_案例分享】

Record MySQL troubleshooting caused by disk sector damage

mysql学习

VS2019如何永久配置本地OpenCV4.5.5使用

Figure out the difference between event coordinates screenx, clientx, pagex and offsetx

SQL statement
随机推荐
The code generator has eliminated the styling of xxxx js as it exceeds the max of 500kb
JSON module
启牛学堂合作的证券公司是哪家?开户安全吗?
考研目录链接
谷粒商城-环境(p1-p27)
树莓派4的WiFi设置
Is the account opening of Huafu securities safe and reliable? How to open Huafu securities account
Interview questions for HW (OD) post
K8s set up redis cluster
Idea easy to use plug-in summary!!!
SQL statement
C language course set up property fee management system (big work)
sci-hub如何使用
[ManageEngine Zhuohao] mobile terminal management solution, helping the digital transformation of Zhongzhou aviation industry
[ManageEngine Zhuohao] use unified terminal management to help "Eurex group" digital transformation
SQL学习笔记九种连接2
[unity shader stroke effect _ case sharing first]
C language course set up salary management system (big homework)
MySQL constraint learning notes
Storage function learning notes