当前位置:网站首页>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 .
边栏推荐
- Product learning (I) - structure diagram
- HW(OD)岗面试题
- 给逆序对数求原数组
- @Propagation property of transactional requires_ New in-depth understanding
- (上)苹果有开源,但又怎样呢?
- 考研目录链接
- The code generator has eliminated the styling of xxxx js as it exceeds the max of 500kb
- [ManageEngine Zhuohao] what is network operation and maintenance management and what is the use of network operation and maintenance platform
- Common shortcut keys
- Is it safe to buy funds on Alipay? Where can I buy funds
猜你喜欢

【微信小程序低代码开发】二,在实操中化解小程序的代码组成

ESP32 - ULP 协处理器在低功耗模式下读片内霍尔传感器HALL SENSOR

了解ESP32睡眠模式及其功耗

Using fuseki query when there are multiple models in TDB

ESP32 ESP-IDF ADC监测电池电压(带校正)

清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间

Jena default inference query based on OWL

Free trial of self-developed software noisecreater1.1

Notes on probability theory

Jena基于OWL的默认推理查询
随机推荐
C language course set up salary management system (big homework)
WiFi settings for raspberry Pie 4
Esp32 - ULP coprocessor reading Hall sensor in low power mode
谷粒商城-环境(p1-p27)
C language course set up property fee management system (big work)
【Unity Shader 消融效果_案例分享】
K8S搭建Redis集群
第五章 輸入/輸出(I/O)管理
Rotate the animation component around the circle, take it and use it directly
数据库对象:视图学习记录
Several ways of gson's @jsonadapter annotation
【#Unity Shader#自定义材质面板_第二篇】
Is fixed investment fund a high-risk product?
Solve the problem that the class defined in meta-inf.services cannot be read
Esp32 esp-idf GPIO key interrupt response
根据输入画有向图
【微信小程序】如何搭积木式开发?
Terminology description in the field of software engineering
产品学习(三)——需求列表
[ManageEngine Zhuohao] use unified terminal management to help "Eurex group" digital transformation