使用SpringCloudAlibaba注意各組件的版本適配
SpringCloudAlibaba已經包含了適配的各組件(nacos、MQ等)的版本號,也是一個版本仲裁者,但是可能已經有了父項目Spring-Boot-Starter-Parent這個版本仲裁者,又不能加多個父項目,可以使用,
可以使用dependencyManagement來添加版本仲裁者
下面是固定格式,只有版本號可以變
type和scope不能少
dependencyManagement只是添加了一個版本仲裁者,當前項目沒有添加SpringCloudAlibaba進來,子項目也并不會繼承這個依賴,子項目要添加依賴,必須要顯示的聲明,添加SpringCloudAlibaba里面的組件nacos、MQ等,不用聲明版本號了
而dependencies中的依賴,子項目會直接繼承
Spring-Boot-Starter-Parent這個版本仲裁者也可以放到dependencyManagement當中
因為公司實際開發中都有自己的一個maven項目給我們繼承,這樣就留出了繼承父maven項目的地方
每一個微服務,會有一個定時任務,定時發送心跳到注冊中心
還會有一個定時任務,定時拉取其他服務列表,緩存到當前服務中(當前服務就可以看成一個客戶端,調用的另一個服務,可以看成服務器)。
每一個微服務也是一個客戶端
如何搭建nacos?
在windows上下載nacos可執行文件
或者在linux中用docker拉取nacos鏡像
并啟動。
可以在nacos的配置文件中設置訪問nacos的賬號、密碼、或者修改其他默認配置
然后在springboot項目中導入nacos的依賴
nacos集群,就是為了防止一個nacos服務壞了,所以會有多臺nacos服務,也叫nacos集群。
這種多臺服務的都會有一個主節點,多個從節點,主從架構
如何注冊到nacos服務中心
????????肯定要提供 服務名稱,而服務的ip和端口,不用提供,nacos能夠自己獲取到
命名空間可以根據不同的項目去劃分,也可以根據一個項目的不同開發環境去劃分,都可以,只是起到一個服務隔離的作用(分組的作用也是一樣的)
注冊到nacos服務中心的默認是 臨時實例
如何進行nacos服務調用
之前服務調用的方式(調用stock-service庫存服務,需要知道庫存服務的ip+端口號)
利用服務發現的方式后,將ip+端口號 改成 庫存服務的名稱即可(注冊到nacos服務中的名稱為stock-service)
因為要調用nacos服務的時候,中間必須要使用負載均衡器,所以在RestTepmlate上要加上@LoadBalanced注解
需要利用負載均衡器,去幫我們把 服務名稱 解析成 ip地址+端口號?
負載均衡器默認是采用輪詢的方式去調用服務 實例
nacos默認采用的就是ribbon的負載均衡技術
權重:結合負載均衡器ribbon使用,分配一個權重
訂閱者列表可以查看服務 的訪問記錄
nacos各個配置項的含義
配置服務名稱,通過上面配置了,下面也可以不寫了,默認采用上面的名稱
如何搭建nacos集群
準備工作
1. 在三臺服務器上安裝nacos,或者在本地安裝三次nacos
2.修改nacos中的配置文件
設置遠程(或者本地)mysql的訪問ip和賬號密碼
這里的ip是三臺服務器上nacos的實際訪問ip地址+端口
3.在mysql數據庫中,建一個名為nacos的數據庫,將這個文件里的sql建表語句執行一遍
4.修改啟動腳本中的參數(防止服務器內存不足,因為默認參數比較大)
5.在三臺服務器上分別啟動nacos。
搭建好了后,如何訪問nacos集群?
能直接改nacos服務地址嗎?不能,有多個nacos服務,如果改成其中一個nacos的地址,還是單節點nacos的模式。
如何設置集群的名稱,默認就DEFAULT
我們需要通過訪問nginx,然后通過nginx幫我們轉發
下載在某臺服務器上下載nginx后,修改里面的配置文件,通過nginx反向代理的方式,去訪問nacos集群
如果訪問了這臺電腦(公網ip192.168.56.220)的8847端口,并且后面加了/nacos/,例如地址是http://192.168.56.220:8847/nacos,
就會反向代理 到上面三個ip地址+端口號中的其中一個(默認是輪詢)
把上面三個ip地址+端口中的一個,拿下來 代替?nacoscluster 這個字符串 的位置
注意:因為nginx和上面三個nacos(集群)都部署在了遠程服務器192.168.56.220上,所以對于
nginx監聽的地址就是本地ip 127.0.0.1,對于反向代理,轉發到的地址也是本地ip 127.0.0.1
使用docker部署nacos集群,上面的有些步驟更加簡單。具體步驟搜索網上教程