網(wǎng)站優(yōu)化怎么做分錄西安seo優(yōu)化系統(tǒng)
?微服務(wù)框架需要學(xué)習(xí)的東西很多,基本上我把它分為了五個模塊:
第一:微服務(wù)技術(shù)模塊
????????分為三個常用小模塊:
? ? ? ? 1.微服務(wù)治理:
? ? ? ? ? ? ? ? 注冊發(fā)現(xiàn)
? ? ? ? ? ? ? ? 遠(yuǎn)程調(diào)用
? ? ? ? ? ? ? ? 配置管理
? ? ? ? ? ? ? ? 網(wǎng)關(guān)路由
? ? ? ? 2.微服務(wù)保護(hù):
? ? ? ? ? ? ? ? 流量控制
? ? ? ? ? ? ? ? 系統(tǒng)保護(hù)
? ? ? ? ? ? ? ? 熔斷降級
? ? ? ? ? ? ? ? 服務(wù)授權(quán)
? ? ? ? 3.分布式事務(wù):
? ? ? ? ? ? ? ? 分布式事務(wù)
? ? ? ? ? ? ? ? TCC模型
? ? ? ? ? ? ? ? AT模型
? ? ? ? ? ? ? ? Seata
第二:緩存技術(shù)模塊
? ? ? ? 分為三個小模塊
? ? ? ? 1.分布式緩存:
? ? ? ? ? ? ? ? Redis數(shù)據(jù)結(jié)構(gòu)
? ? ? ? ? ? ? ? SpringDataRedis
? ? ? ? ? ? ? ? 緩存穿透、雪崩
? ? ? ? 2.多級緩存:
? ? ? ? ????????Openresty
? ? ? ? ? ? ? ? 多級緩存
? ? ? ? ? ? ? ? Nginx本地緩存
? ? ? ? ? ? ? ? 緩存數(shù)據(jù)同步
? ? ? ? 3.Redis集群:
? ? ? ? ? ? ? ? Redis集群
? ? ? ? ? ? ? ? Redis主從復(fù)制
? ? ? ? ? ? ? ? Lua腳本
? ? ? ? ? ? ? ? 數(shù)據(jù)持久化
第三:異步通信模塊
? ? ? ? 分為兩個模塊
? ? ? ? 1.異步通信:
? ? ? ? ? ? ? ? 數(shù)據(jù)持久化
? ? ? ? ? ? ? ? 消息堆積問題
? ? ? ? ? ? ? ? MQ消息模型
? ? ? ? ? ? ? ? SpringAMQP
? ? ? ? 2.可靠消息服務(wù):
? ? ? ? ? ? ? ? 消息可靠性
? ? ? ? ? ? ? ? 消息冪等性
? ? ? ? ? ? ? ? 鏡像集群
? ? ? ? ? ? ? ? 延遲隊列
第四:搜索技術(shù)模塊
? ? ? ? 主要就一個分布式搜索:
? ? ? ? ? ? ? ? DSL語句
? ? ? ? ? ? ? ? RestAPI
? ? ? ? ? ? ? ? ES集群狀態(tài)
第五:Devops模塊
? ? ? ? 主要就是Docker技術(shù):
? ? ? ? ? ? ? ? Docker使用
? ? ? ? ? ? ? ? Dockerfile
? ? ? ? ? ? ? ? Dockers compose
版本兼容關(guān)系:
SpringCloud的關(guān)鍵:如何在Java代碼中發(fā)起Http請求,來達(dá)到分布式的需求。
關(guān)于Nacos的理解
? ? ? ? 關(guān)于Nacos,我的理解是,在SpringCloudAlibaba中Nacos是Eureka的替代,但是他的功能要比Eureka多一些。
Nacos的依賴:
父工程依賴:
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.6.RELEASE</version><type>pom</type><scope>import</scope>
</dependency>子工程的依賴:
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>在子工程的application.yml引入的配置:
spring:cloud:nacos:server-addr: localhost:8848///========注意 在做這些操作之前需要把以前使用Eureka的依賴和配置都注釋掉
Nacos集群配置:
Nacos可以直接在網(wǎng)頁上修改權(quán)重,不過Nacos他默認(rèn)的選擇的是隨機(jī)查詢
Nacos有個特殊的地方的是他有一個命名空間Namespace:
在Nacos網(wǎng)頁上選擇新建命名空間然后復(fù)制命名空間id粘貼到項目中的application.yml文件中:
從這里可以知道,我們需要服務(wù)可訪問,必須把他們放在同一個命名空間之下
==========Nacos與Eureka之間的區(qū)別在于服務(wù)的健康檢測=============
Nacos所有的新創(chuàng)建實例默認(rèn)為臨時實例,臨時實例做的檢測時心跳檢測,Nacos檢測時間比Eureka的要快一些。當(dāng)Nacos創(chuàng)建的實例為非臨時實例,Nacos會主動詢問服務(wù),并且當(dāng)這個實例掛掉之后,Nacos不會清理掉他,而是會等他重新啟動,并且會把服務(wù)掛掉的信息告訴給消費者。
如何設(shè)置臨時和非臨時實例:
CP和AP,CP就是強(qiáng)關(guān)聯(lián)
關(guān)于Nacos的配置管理:
(對于一些有熱更新需求的配置進(jìn)行管理)
總結(jié):如果需要在Nacos配置內(nèi)完成熱更新,我們需要做以下幾件事情,第一,在Nacos瀏覽器中修改Nacos中的配置管理并發(fā)布(注意記住Nacos中配置管理的DataId),其次在發(fā)布成功之后我們需要在后端程序中新建一個配置文件(名字一定要是bootstrap.yaml),在配置文件中我們需要加入服務(wù)的名稱,開發(fā)環(huán)境以及后綴名,然后我們需要在相對應(yīng)的Controller類中加入@RefreshScope注解,然后把配置文件的屬性和名稱使用@Value(“${配置全稱}”),這樣我們就完成了Nacos的配置拉取和熱修改
===如果Nacos創(chuàng)建了配置管理但沒有加配置文件名稱如userservice.yaml(加配置環(huán)境名稱:userservice-dev.yaml)則表示這個配置是屬于共享的環(huán)境配置,我們可以在這里面設(shè)置其他服務(wù)器所共享的配置。如果不同區(qū)域內(nèi)的程序則調(diào)用不到dev
(profiles:
???????? active: dev #開發(fā)環(huán)境,這里是dev)的配置下面配置是test的文件。
?如果配置屬性里面都有的話,遵循如下配置:項目里面寫的配置<服務(wù)名.yaml<服務(wù)名-環(huán)境名.yaml
Nacos的集群處理:
Nacos1-3是我在一臺電腦上模擬的Nacos集群的效果,在里面我分別修改了
三個端口作為Nacos的啟動端口,和修改了
application.propersties文件里面的內(nèi)容作為連接數(shù)據(jù)庫,其中db.num=1代表有一個集群數(shù)量(幾臺MySQL默認(rèn)一臺)并且把三個Nacos的端口分別改成8845、8846、8847三個不同的端口。做完這些操作之后還需要對Nginx的config文件進(jìn)行修改:找到里面的nginx.conf文件,在里面添加配置
upstream nacos-cluster {server 127.0.0.1:8845;server 127.0.0.1:8846;server 127.0.0.1:8847;
}server {listen 80;server_name localhost;location /nacos {proxy_pass http://nacos-cluster;}
}
這樣當(dāng)我們訪問80端口的時候就會自動給我們隨機(jī)訪問到Nacos的8845~8847之間的端口從而實現(xiàn)集群搭建。