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

圖解Nacos,注冊中心演變 + Nacos核心功能

開發 架構
通過Nginx維護服務列表(upStream),如果服務較多的話,在Nginx通過upStream的方式去配置的話,Nginx配置文件會變得非常的難以維護。

大家好,我是哪吒。

一、什么是Nacos?

一個更易于構建云原生應用的動態服務發現、服務配置和服務管理平臺。

圖片

Nacos的關鍵特性:

圖片

Nacos的關鍵特性

二、注冊中心演變及其設計思想

1、RestTemplate調用遠程服務

如果此時,服務端接口接口名或參數或請求方式更改了,那么就得同步修改此restTemplate方法,感覺很麻煩

圖片

RestTemplate調用遠程服務

@SpringBootTest
class Test {

@Resource
private RestTemplate restTemplate;

@Test
void testSimple() {
// 請求地址
String url = "http://www.nzbc.com/updateUser";

// 要發送的數據對象
User user = new User();
user.setUserId(1);
user.setName("哪吒編程");
user.setMsg("讀哪吒編程,品技術人生");

// 發送post請求
User result = restTemplate.postForObject(url, user, User.class);
System.out.println(result);
}
}

2、通過Nginx維護服務列表(upStream)

圖片

通過Nginx維護服務列表(upStream),如果服務較多的話,在Nginx通過upStream的方式去配置的話,Nginx配置文件會變得非常的難以維護。

3、通過Nacos實現注冊中心

圖片

Nacos注冊中心

這種是最簡單的Nacos注冊中心,有若干個服務,都注冊到Nacos注冊中心,調用之前,先到Nacos獲取對應接口,然后進行實際的調用。

但是,思考一個問題,如果Nacos宕機了,怎么辦?如果從Nacos獲取到接口后,調用服務2時,服務2宕機了,怎么辦?

4、心跳版Nacos

圖片

心跳版Nacos

心跳版Nacos,服務1和服務2和Nacos之間維護一個心跳關系,每5秒跳一次,頻率不能太快或者太慢,否者會嗝屁的。

如果Nacos在5秒內沒有收到心跳,則表示服務掛了,Nacos會下線此服務。

對于超過15秒沒有收到客戶端心跳的服務實例,會將它的healthy屬性置為false,客戶端無法調用healthy為false的服務。

如果超過30秒沒有收到心跳,Nacos會直接將此服務剔除。

也可以通過服務端主動注銷的方式,停止注冊。

服務1調用服務2時,服務1會通過定時任務到Nacos中獲取在線的服務,保證所調用的服務一直都是健康在線的狀態。

獲取到之后,用緩存將其保存起來,然后通過負載均衡器調用服務2,此時,將不再使用服務端的負載均衡Nginx了。

三、Nacos Discovery

SpringBoot中引入Nacos Discovery,實現與Nacos的無縫連接,Nacos Discovery可以將服務自動注冊到Nacos服務端,并且能夠動態感知此服務,并刷新服務列表。并將服務的host、port、URL等信息注冊到Nacos。

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

Nacos 的配置項信息:

圖片

四、Nacos核心功能

圖片

Nacos核心功能

1、服務注冊

Nacos Client會通過發送REST請求向Nacos Server注冊自己的服務,提供自身的元數據,比如host、port、url等信息,Nacos Server在收到注冊請求后,會將這些數據信息存儲在一個雙層的內存map中。

2、服務心跳

服務注冊后,服務消費者和Nacos Server之間會維護一個心跳,定時通知server,此服務還活著,防止被剔除掉。

3、服務同步

Nacos Server集群之間會互相同步已注冊的服務,用來保證服務列表的一致性。

4、服務發現

服務消費者在調用服務提供者的服務時,會發送一個REST請求到Nacos Server,獲取健康的服務列表,然后將其緩存到本地,同時開啟一個定時任務,定時訪問Nacos Server,然后更新本地緩存。

5、服務健康檢查

Nacos Server會開啟一個定時任務用來檢查注冊服務實例的健康情況,對于超過15秒沒有收到客戶端心跳的服務實例,會將它的healthy屬性置為false,客戶端無法調用healthy為false的服務,如果超過30秒沒有收到心跳,Nacos會直接將此服務剔除。

五、作為注冊中心

1、Nacos目前功能最全,用的也最多;

2、Eureka,因為挺更的緣故,比較新的技術都不支持了,目前很多公司都將Eureka換成Nacos了,不推薦使用;

3、Zookeeper,用的最多的地方就是和Dubbo一起使用,不支持負載均衡策略,但可以通過其它組件實現;

4、Consul支持的也很多;

CAP,C一致性,A可用性,P分區容錯性


Nacos

Eureka

Zookeeper

Consul

一致性協議

CP + AP

CP

AP

CP

訪問協議

HTTP/DNS

HTTP

TCP

HTTP/DNS

健康檢查

TCP/HTTP/MYSQL/Client Beat

Client Beat

Keep Live

TCP/HTT[/gRPC/Cmd

負載均衡策略

權重/metadata/Seletor

Ribbon

-

Fabio

雪崩保護

自動注銷

支持

支持

支持

支持

監聽

支持

支持

支持

支持

多數據中心

支持

支持

支持

不支持

跨注冊中心同步

支持

不支持

不支持

支持

Spring Cloud集成

支持

支持

支持

支持

Dubbo集成

支持

不支持

支持

支持

K8S集成

支持

不支持

支持

不支持

六、作為配置中心

1、SpringBoot集成Nacos

Nacos使用key/value形式存儲配置信息,為分布式系統中的外部化配置提供服務支持。

(1)maven文件

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

(2)配置文件

spring.application.name=nacos-config
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

blog.name=哪吒編程
blog.language=java

(3)主方法啟動類

@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(ProviderApplication.class, args);
String name = applicationContext.getEnvironment().getProperty("blog.name");
String language = applicationContext.getEnvironment().getProperty("blog.language");
System.err.println("公眾號 :"+name+"; 擅長技術: "+language);
}
}

2、支持配置的動態更新

一秒刷新一次。

@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(ProviderApplication.class, args);
while(true) {
//當動態配置刷新時,會更新到 Enviroment中,因此這里每隔一秒中從Enviroment中獲取配置
String name = applicationContext.getEnvironment().getProperty("blog.name");
String language = applicationContext.getEnvironment().getProperty("blog.language");
System.err.println("公眾號 :"+name+"; 擅長技術: "+language);
TimeUnit.SECONDS.sleep(1);
}
}
}

3、可支持profile粒度的配置

4、支持自定義 namespace 的配置

開發測試環境和生產環境的資源(如配置、服務)隔離等,比如dev和prod。

5、支持自定義 Group 的配置

在沒有明確指定 ${spring.cloud.nacos.config.group}配置的情況下, 默認使用的是 DEFAULT_GROUP 。如果需要自定義自己的 Group,可以通過以下配置來實現:

spring.cloud.nacos.config.group=DEVELOP_GROUP

6、配置優先級

profile > 默認配置文件 > extension-configs(下標越大優先級越高) > shared-configs(下標越大優先級越高)。

7、@RefreshScope

一般都是通過@Value的形式讀取配置文件中的信息,但是無法感知修改后的值,需要利用@RefreshScope動態刷新

8、Spring Cloud Config 橫向對比Nacos

(1) Spring Cloud Config需要結合Git使用,動態變更需要配合Bus 消息總線來通知所有的客戶端變化。

(2)Spring Cloud Config沒有可視化界面。

(3)Nacos使用長輪詢更新配置,速度上秒殺Spring Cloud Config。

本文轉載自微信公眾號「哪吒編程」,可以通過以下二維碼關注。轉載本文請聯系哪吒編程公眾號。

責任編輯:姜華 來源: 哪吒編程
相關推薦

2021-08-04 11:54:25

Nacos注冊中心設計

2023-10-30 09:35:01

注冊中心微服務

2024-01-02 22:47:47

Nacos注冊中心節點

2023-02-26 00:00:00

2022-08-30 22:12:19

Nacos組件服務注冊

2022-02-09 07:03:01

SpringNacos服務注冊

2024-04-10 12:22:19

DubboNacos微服務

2020-06-29 07:58:18

ZooKeeperConsul 注冊中心

2023-09-12 07:10:13

Nacos架構

2021-07-12 08:00:21

Nacos 服務注冊源碼分析

2021-08-09 07:58:36

Nacos 服務注冊源碼分析

2022-04-12 08:09:22

Nodejs前端面試題

2022-02-07 07:10:32

服務注冊功能

2021-06-10 06:57:39

Nacos配置模塊

2025-05-29 08:35:00

Nacos服務注冊開發

2023-04-26 08:19:48

Nacos高可用開發

2009-11-18 13:11:29

PHP核心

2010-01-27 17:38:58

Windows Emb

2024-12-10 08:27:28

2023-02-04 18:19:39

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久99 | 亚洲精品视频在线 | 国产精品免费av | 成人在线观看亚洲 | 午夜在线影院 | 国产99久久精品一区二区永久免费 | 精品国产一区二区久久 | 欧美国产精品久久久 | 盗摄精品av一区二区三区 | 特一级毛片 | 99热最新网址 | 精品一二区 | 成人欧美一区二区三区白人 | 亚洲免费在线 | 午夜影晥 | 一区二区电影网 | 国产精品视频久久 | 欧美一级三级在线观看 | 韩日在线视频 | 国产成人综合久久 | 成人精品视频在线观看 | 亚洲国产成人精品久久 | 成人免费看| 日韩欧美中文字幕在线观看 | 欧美一区二区视频 | 久久精品一级 | 在线视频国产一区 | 精品毛片 | 国产91久久久久蜜臀青青天草二 | 91精品国产综合久久久久 | 精品福利一区二区三区 | 久久激情视频 | 欧美精品在线一区 | 国产精品亚洲一区 | 国产观看 | 日韩成人免费视频 | 欧美中文字幕一区二区三区亚洲 | 亚洲狠狠 | 久久久久久综合 | 曰批视频在线观看 | 欧美视频一级 |