springcloud day01
單體架構:業務所有功能都在一個項目中開發,打成一個包部署 優點是架構簡單 部署成本低 缺點是 耦合度高
分布式架構:根據業務功能對系統做拆分,每個業務功能模塊作為一個獨立的項目開發,也稱為一個服務 優點是 耦合度低 缺點是 關系更復雜了
微服務:就是一種經過良好架構設計的分布式架構方案
springcloud是國內使用最廣泛的微服務框架,他是微服務架構的一站式解決方案,集成了各種優秀的微服務功能組件

微服務的拆分原則
1.不同的微服務不能重復開發相同的業務
2.微服務之間的數據獨立,且不能訪問其他微服務的數據庫
3.微服務可以把自己的業務暴露成接口供其他微服務調用
微服務的遠程調用
大概步驟為
1.注冊一個RestTemplate的實例到spring容器中
2.
3.將查詢的User填充到Order對象,一起返回
提供者與消費者
服務消費者:一次業務中,調用其他微服務的服務
服務提供者:一次業務中,被其他微服務調用的服務
這兩個角色不是絕對的 只是相對于業務而言
ribbon負載均衡

負載均衡策略

| 規則描述 | |
|---|---|
| RoundRobinRule | 簡單輪詢服務列表來選擇服務器。 |
| AvailabilityFilteringRule | 對以下兩種服務器進行忽略: (1)在默認情況下,這臺服務器如果3次連接失敗,這臺服務器就會被設置為“短路”狀態。短路狀態將持續30秒,如果再次連接失敗,短路的持續時間就會幾何級地增加。 (2)并發數過高的服務器。如果一個服務器的并發連接數過高,配置了AvailabilityFilteringRule規則的客戶端也會將其忽略。并發連接數的上限,可以由客戶端的<clientName>.<clientConfigNameSpace>.ActiveConnectionsLimit屬性進行配置。 |
| WeightedResponseTimeRule | 為每一個服務器賦予一個權重值。服務器響應時間越長,這個服務器的權重就越小。這個規則會隨機選擇服務器,這個權重值會影響服務器的選擇。 |
| ZoneAvoidanceRule | 以區域可用的服務器為基礎進行服務器的選擇。使用Zone對服務器進行分類,這個Zone可以理解為一個機房、一個機架等。而后再對Zone內的多個服務做輪詢。 |
| BestAvailableRule | 忽略那些短路的服務器,并選擇并發數較低的服務器。 |
| RandomRule | 隨機選擇一個可用的服務器。 |
| RetryRule | 重試機制的選擇邏輯 |
其中ZoneAvoidanceRule為默認的策略
更改負載均衡規則有兩種方式
一般用默認的負載均衡規則,不做修改!!!!!!!!!!!!
1.定義一個新的IRule
@Bean
public IRule randomRule(){
return new RandomRule();
}
2.在配置文件中添加新的規則
userservice: # 給某個微服務配置負載均衡規則,這里是userservice服務
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 負載均衡規則
饑餓加載
Ribbon默認的是懶加載
可以改成饑餓加載 更改方式如下
ribbon:
eager-load:
enabled: true
clients: userservice
<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>
2.配置nacos地址
在子工程的yml文件中添加nacos地址
spring:
cloud:
nacos:
server-addr: localhost:8848
3.重啟
服務分級存儲模型
Nacos將同一機房內的實例劃分為一個集群。Nacos使用多副本集群技術,可以讓多臺服務器在同一個網絡中共享配置信息和服務發現。當某個實例宕機時,其他實例依然可以正常工作,確保Nacos服務的高可用性。

浙公網安備 33010602011771號