學(xué)習(xí)記錄之注冊(cè)中心Nacos及Dubbo
Nacos是Spring Cloud Alibaba提供的一個(gè)軟件,這個(gè)軟件主要具有注冊(cè)中心和配置中心的功能
微服務(wù)中所有項(xiàng)目都必須注冊(cè)到注冊(cè)中心才能成為微服務(wù)的一部分,我們要讓我們編寫的項(xiàng)目注冊(cè)到Nacos,才能真正是微服務(wù)項(xiàng)目
Nacos心跳機(jī)制:
????Nacos內(nèi)部注冊(cè)的服務(wù)都會(huì)有一個(gè)心跳機(jī)制,心跳機(jī)制的目的,是每個(gè)服務(wù)和Nacos保持溝通和交換信息的機(jī)制
????默認(rèn)情況下,服務(wù)啟動(dòng)后每隔5秒會(huì)向Nacos發(fā)送一個(gè)"心跳包",這個(gè)心跳包中包含了當(dāng)前服務(wù)的基本信息
????Nacos接收到這個(gè)心跳包,首先檢查當(dāng)前服務(wù)在不在注冊(cè)列表中,如果不在按新服務(wù)的業(yè)務(wù)進(jìn)行注冊(cè),如果在,表示當(dāng)前這個(gè)服務(wù)是健康狀態(tài)
????如果一個(gè)服務(wù)連續(xù)3次心跳(默認(rèn)15秒)沒有和Nacos進(jìn)行信息的交互,就會(huì)將當(dāng)前服務(wù)標(biāo)記為不健康的狀態(tài)
????如果一個(gè)服務(wù)連續(xù)6次心跳(默認(rèn)30秒)沒有和Nacos進(jìn)行信息的交互,Nacos會(huì)將這個(gè)服務(wù)從注冊(cè)列表中剔除
這些時(shí)間都是可以通過配置修改的,實(shí)際上Nacos的服務(wù)類型還有分類
* 臨時(shí)實(shí)例(默認(rèn)),持久化實(shí)例(永久實(shí)例),默認(rèn)每個(gè)服務(wù)都是臨時(shí)實(shí)例如果想標(biāo)記一個(gè)服務(wù)為永久實(shí)例:
持久化實(shí)例啟動(dòng)時(shí)向nacos注冊(cè),nacos會(huì)對(duì)這個(gè)實(shí)例進(jìn)行持久化處理,心跳包的規(guī)則和臨時(shí)實(shí)例一致,只是不會(huì)將該服務(wù)從列表中剔除,一般情況下,我們創(chuàng)建的服務(wù)都是臨時(shí)實(shí)例,只有項(xiàng)目的主干業(yè)務(wù)才會(huì)設(shè)置為永久實(shí)例.
另外解析一下mysql配置都是什么意思
????
useSSL使用ssl加密
useUnicode使用unicode編碼
characterEncoding設(shè)置字符集utf-8
serverTimezone時(shí)區(qū)
allowMultiQuerie允許二進(jìn)制數(shù)據(jù)?
?Dubbo概述:
RPC是Remote Procedure Call的縮寫 翻譯為:遠(yuǎn)程過程調(diào)用
目標(biāo)是為了實(shí)現(xiàn)兩臺(tái)(多臺(tái))計(jì)算機(jī)\服務(wù)器,相互調(diào)用方法\通信的解決方案
RPC只是實(shí)現(xiàn)遠(yuǎn)程調(diào)用的一套標(biāo)準(zhǔn)
該標(biāo)準(zhǔn)主要規(guī)定了兩部分內(nèi)容
序列化協(xié)議:
????序列化協(xié)議指通信內(nèi)容的格式,雙方都要理解這個(gè)格式
????發(fā)送信息是序列化過程,接收信息需要反序列化
通信協(xié)議
????通信協(xié)議指的就是遠(yuǎn)程調(diào)用的通信方式
????實(shí)際上這個(gè)通知的方式可以有多種
????例如:寫信,飛鴿傳書,閃送等等
Dubbo是一套R(shí)PC框架。既然是框架,我們可以在框架結(jié)構(gòu)高度,定義Dubbo中使用的通信協(xié)議,使用的序列化框架技術(shù),而數(shù)據(jù)格式由Dubbo定義,我們負(fù)責(zé)配置之后直接通過客戶端調(diào)用服務(wù)端代碼。
可以說Dubbo就是RPC概念的實(shí)現(xiàn)
Dubbo是SpringCloudAlibaba提供的框架
能夠?qū)崿F(xiàn)微服務(wù)相互調(diào)用的功能!
Dubbo的發(fā)展歷程:

Dubbo對(duì)協(xié)議的支持
RPC框架分通信協(xié)議和序列化協(xié)議
Dubbo框架支持多種通信協(xié)議和序列化協(xié)議,可以通過配置文件進(jìn)行修改
Dubbo支持的通信協(xié)議
* dubbo協(xié)議(默認(rèn))
* rmi協(xié)議
* hessian協(xié)議
* http協(xié)議
* webservice
* .....
支持的序列化協(xié)議
* hessian2(默認(rèn))
* java序列化
* compactedjava
* nativejava
* fastjson
* dubbo
* fst
* kryo
Dubbo默認(rèn)情況下,支持的協(xié)議有如下特征
* 采用NIO單一長(zhǎng)鏈接
* 優(yōu)秀的并發(fā)性能,但是處理處理大型文件的能力差
Dubbo方便支持高并發(fā)和高性能
Dubbo服務(wù)的注冊(cè)與發(fā)現(xiàn)
在Dubbo的調(diào)用過程中,必須包含注冊(cè)中心的支持
注冊(cè)中心推薦阿里自己的Nacos,兼容性好,能夠發(fā)揮最大性能
但是Dubbo也支持其它軟件作為注冊(cè)中心(例如Redis,zookeeper等)
服務(wù)發(fā)現(xiàn),即消費(fèi)端自動(dòng)發(fā)現(xiàn)服務(wù)地址列表的能力,是微服務(wù)框架需要具備的關(guān)鍵能力,借助于自動(dòng)化的服務(wù)發(fā)現(xiàn),微服務(wù)之間可以在無需感知對(duì)端部署位置與 IP 地址的情況下實(shí)現(xiàn)通信。
Dubbo的注冊(cè)發(fā)現(xiàn)流程:
1.首先服務(wù)的提供者啟動(dòng)服務(wù)時(shí),將自己的具備的服務(wù)注冊(cè)到注冊(cè)中心,啟動(dòng)包括當(dāng)前提供者的ip地址和端口號(hào)等信息,Dubbo會(huì)同時(shí)注冊(cè)該項(xiàng)目提供的遠(yuǎn)程調(diào)用的方法
2.消費(fèi)者(使用者)啟動(dòng)項(xiàng)目,也注冊(cè)到注冊(cè)中心,同時(shí)從注冊(cè)中心中獲得當(dāng)前項(xiàng)目具備的所有服務(wù)列表
3.當(dāng)注冊(cè)中心中有新的服務(wù)出現(xiàn)時(shí),會(huì)通知已經(jīng)訂閱發(fā)現(xiàn)的消費(fèi)者,消費(fèi)者會(huì)更新所有服務(wù)列表
4.RPC調(diào)用,消費(fèi)者需要調(diào)用遠(yuǎn)程方法時(shí),根據(jù)注冊(cè)中心服務(wù)列表的信息,只需服務(wù)名稱,不需要ip地址和端口號(hào)等信息,就可以利用Dubbo調(diào)用遠(yuǎn)程方法了