五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網 會員登陸 & 注冊

學習記錄之微服務(后續(xù))

2022-08-17 01:01 作者:星月襲空  | 我要投稿

配置中心

什么是配置中心

所謂配置中心:將項目需要的配置信息保存在配置中心,需要讀取時直接從配置中心讀取,方便配置管理的微服務工具

我們可以將部分yml文件的內容保存在配置中心

一個微服務項目有很多子模塊,這些子模塊可能在不同的服務器上,如果有一些統(tǒng)一的修改,我們要逐一修改這些子模塊的配置,由于它們是不同的服務器,所以修改起來很麻煩

如果將這些子模塊的配置集中在一個服務器上,我們修改這個服務器的配置信息,就相當于修改了所有子模塊的信息,這個服務器就是配置中心

使用配置中心的原因就是能夠達到高效的修改各模塊配置的目的

配置中心的使用

Nacos既可以做注冊中心,也可以做配置中心

Nacos做配置中心,支持各種格式\類型的配置文件

properties\yaml(yml)\txt\json\xml等

Nacos數據結構

namespace:命名空間

group:分組

Service/DataId:具體數據

命名空間

namespace是Nacos提供的最大的數據結構

一個Nacos可以創(chuàng)建多個命名空間

一個命名空間能夠包含多個group

每一個group中又可以包含多條配置信息

在nacos中創(chuàng)建命名空間

在上圖連接的位置可以新增命名空間,填寫命名空間名稱和描述即可

Nacos有默認的命名空間public不能刪除和修改

添加命名空間后,我們在Nacos中注冊的服務或添加的配置就可以指定命名空間了

因為多個命名空間可以隔離項目,每個項目使用自己的命名空間,互不干擾

分組

一個命名空間中可以有多個分組,進行進一步分離

我們使用時,如果不需要進一步分組,推薦使用group名稱:DEFAULT_GROUP

服務或配置

確定了命名空間和分組之后

我們就可以添加服務或配置了

之前我們啟動的各種模塊都是服務,之前都是默認保存在public命名空間中

下面我們主要使用配置中心的功能,在命名空間中添加配置

添加配置就是設置DataId

實際在Nacos中定位一個配置的結構為

Namespace>Group>DataId

Nacos添加配置

Nacos首頁->配置管理->配置列表->添加配置(右側的大"+"號)

添加cart模塊數據庫連接配置

項目讀取配置

csmall-cart-webapi模塊要讀取連接數據庫的配置

如果要讀取配置中心的信心,首先要添加依賴


如果SpringBoot版本不是2.5.x,匹配的SpringCloud版本不是2020.x

可能添加的依賴不同,尤其是加載系統(tǒng)配置的依賴

需要根據實際的SpringBoot\SpringCloud版本來變化

像其他程序一樣,在添加完依賴之后,還需要添加yml文件的配置

我們使用過application.properties和application.yml兩種配置文件添加配置

實際上這兩個配置文件加載是有順序的

先加載yml

后加載properties

如果兩個配置文件同時設置了同一個屬性,后加載的覆蓋掉先加載的

在SpringCloud環(huán)境下,我們添加了加載系統(tǒng)配置的依賴,當前項目就支持了額外一組配置文件

它們是bootstrap.yml和bootstrap.properties

這組配置文件實際開發(fā)時,主要配置系統(tǒng)內容,一般都是不輕易修改的

所以這組配置文件的加載時機,整體早于application.properties這一組

一個SpringCloud項目加載配置文件的順序最終可能如下圖

因為配置文件的特性,bootstrap這一組是加載系統(tǒng)配置的

所以我們讀取配置中心的配置信息,最好添加在bootstrap.yml\properties中

下面我們就在cart-webapi項目中resources文件夾中添加bootstarp.yml文件

RestTemplate遠程調用

我們現(xiàn)在項目中使用的RPC遠程調用技術是Dubbo

實際上除了Dubbo技術之外,還有很多遠程調用的方法

它們有些調用的思想都和Dubbo完全不同

Dubbo是SpringCloudAlibaba提供的功能強大的RPC框架

但是Dubbo功能也有限制,如果我們想調用的方法不是我們當前項目的組件或功能,甚至想調用的方法不是java編寫的,那么Dubbo就無能為力了

我們可以使用RestTemplate來調用任何語言編寫的公開的Rest路徑

也就是只要能夠使用瀏覽器訪問的路徑,我們都可以使用RestTemplate發(fā)送請求,接收響應

使用步驟如下

步驟1:

無需添加任何pom依賴和yml文件配置

只需在調用的發(fā)起方,也就是使用RestTemplate發(fā)起請求的項目配置文件中(指支持@Configuration注解的類或SpringBoot啟動類),向Spring容器注入一個該類型對象

所有SpringBoot配置類都可以添加下面代碼,我們選擇SpringBoot啟動類添加如下代碼

在CartWebapi啟動類中修改

步驟2:

我們配置了cart模塊具備了調用其它控制器方法的功能

我們可以實現(xiàn)在cart模塊運行刪除購物車商品的同時減少庫存

這樣就要求我們stock模塊具備一個能夠減少庫存的控制器方法,現(xiàn)在這個方法是有的url為:

/base/stock/reduce/count,但是這個控制器請求的方法是@PostMapping,RestTemplate只能直接get方法調用目標,所以我們將stock-webapi模塊的StockController中減少庫存方法的的注解修改為@GetMapping

@GetMapping("/reduce/count")

步驟3:

回到cart-webapi模塊

開始調用

我們可以在當前CartController控制器方法deleteUserCart中

添加RestTemplate的調用,實現(xiàn)庫存的減少

步驟4:

發(fā)送測試

將相關的模塊都啟動

cart\stock

調用cart模塊刪除購物車中的方法

運行后檢查對應商品減少庫存和購物車中數據的刪除效果

如果一切正常證明調用成功了

什么是web服務器

簡單來說

Web服務器就是一個能夠接收http請求并作出響應的java程序

webServer項目(二階段項目)就是一個我們手寫的Web服務器

我們現(xiàn)在開發(fā)的標準SpringBoot項目啟動時內置的Web服務器叫Tomcat

實際上我們業(yè)界中還有很多Web服務器,它們具備很多不同的特征

網關Gateway項目使用Netty服務器,Netty服務器內部是NIO的所以性能更好

下圖以Tomcat為例,解釋請求響應流程

大多數情況我們會使用Tomcat作為Web服務器

它是我們請求\響應流程中的核心組件

Tomcat是也有缺點

常規(guī)情況下,一個tomcat并發(fā)數在100多一點

一般情況下,一個網站要1000人在線,并發(fā)數是2%~5%?也就是20~50并發(fā)

如果需要一個支持更高并發(fā)的服務器,就是需要使用Nginx

Nginx

Nginx?("engine x")?是一個高性能的?HTTP?和?反向代理?服務器,也是一個IMAP/POP3/SMTP?代理服務器。?Nginx?是由?Igor Sysoev?為俄羅斯訪問量第二的Rambler.ru?站點開發(fā)的,第一個公開版本?0.1.0?發(fā)布于?2004?年?10?月?4?日。其將源代碼以類?BSD?許可證的形式發(fā)布,因它的穩(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名。

Nginx的優(yōu)勢

  1. 高并發(fā)響應性能非常好,官方 Nginx 處理靜態(tài)文件并發(fā) 5萬/秒

  2. 反向代理性能非常強。(可用于負載均衡)

  3. 內存和 cpu 占用率低。(為 Apache(也是一個服務器) 的 1/5-1/10)

又小又快

Nginx快速的原因

Nginx內部是一個主進程(Master)多個工作進程(Worker)

Master負責統(tǒng)籌管理配置和Worker的分工

Worker來負責處理請求,作出響應

而且使用非阻塞式的,異步的

簡單來說,就是一個Worker接到一個請求后,對請求進行處理,處理后在響應返回前,這個Worker還會處理別的請求,直到請求返回響應時,才會處理響應,也就是Worker這個進程全程無阻塞

反向代理

要想了解反向代理,首先了解正向代理

正向代理,當我們訪問的目標服務器無法連通時,可以借助代理服務器,間接訪問該目標服務器

關系類似于生活中的介紹人

而反向代理的模式為下圖

請求反向代理服務器的特點是,我們請求的是代理服務器的地址,真正提供服務的服務器地址我們不需要知道,這樣做的好處是反向代理服務器后可能是一個集群,方便負載均衡

有點類似于生活中的代理人,有什么事情直接找這個人就能完成需求,它怎么完成的我們不用管

Nginx的使用

實際開發(fā)中,Nginx可以用于反向代理服務器,

實際處理請求的是Tomcat服務器

因為Nginx優(yōu)秀的靜態(tài)內容并發(fā)性能

我們常常使用它做靜態(tài)資源服務器

在Nginx中保存圖片,文件視頻等靜態(tài)資源

經常和FastDFS組合使用

Nginx和Gateway的區(qū)別

首先明確Nginx和Gateway并不沖突

他們都是統(tǒng)一入口的概念,它們可以同時開啟

也可以開啟其中一個

只不過Nginx不屬于java程序,而Gateway是java程序

Nginx是服務器程序我們不可編輯,

Gateway是我們自己創(chuàng)建的項目,依賴和配置都由我們自己完成

最終如果想做反向代理服務器,就使用Nginx

如果是微服務項目的網關就是Gateway

SpringMVC攔截器

什么是SpringMvc攔截器

SpringMvc攔截器是SpringMvc框架提供的功能

它可以在控制器方法運行之前或運行之后(還有其它特殊時機)對請求進行處理或加工的特定接口

這個攔截器的編寫是典型的A(Aspect)OP思想的體現(xiàn)

在我們現(xiàn)有的控制器方法運行前后進行代碼的維護和切面的通知

過濾器和攔截器的區(qū)別:

  • 提供者不同

    • 過濾器是由javaEE提供的

    • 攔截器是SpringMvc提供的

  • 作用目標不同

    • 過濾器作用目標更廣:可以作用在所有請求當前服務器資源的流程中

    • 攔截器作用目標單一:只能作用在請求目標為當前服務器控制器的流程中

  • 功能強度不同

    • 過濾器是原生的JavaEE的功能,功能較弱,不能直接處理Spring容器中的內容和對象

    • 攔截器是SpringMvc框架提供的,所以天生和Spring容器有更好的兼容性,可以直接操作Spring容器中的對象,而且攔截器相比于過濾器有更完善的參數返回值的處理,也有更多的運行時機

  • 結論

?如果請求的目標能確定是一個控制器方法,優(yōu)先使用攔截器

?如果請求的目標可能是其他靜態(tài)資源,那么就需要使用過濾器

攔截器工作流程圖

SpringMvc攔截器的使用

在cart-webapi模塊中創(chuàng)建一個包

包名建議叫interceptor

創(chuàng)建攔截器類DemoInterceptor

然后要配置攔截器的攔截目標

需要在spring配置類中編寫

在config包中創(chuàng)建InterceptorConfig類

Mybatis 攔截器

簡介:

Mybatis框架提供的一個功能

能夠在Mapper接口方法運行之前或之后添加額外代碼的功能

之前我們通過設置,實現(xiàn)將運行的sql語句輸出到控制臺的效果,就是攔截器實現(xiàn)的

我們也可以簡單的進行一個類似的演示

首先,要想能夠成功的攔截Mybatis中mapper運行的sql語句

需要先在Spring中設置相關的代碼

步驟1:編寫攔截器

步驟2:

將攔截器設置在SpringBoot框架下使其生效

config包中MyBatisConfiguration添加代碼

MybatisPlus

MybatisPlus是一個國內的團隊在Mybatis框架基礎上新增了一些功能的框架

MybatisPlus新增的功能主要兩方面

1.提供的代碼生成器

可以根據指定的數據庫表,自動生成基本的實體類\控制器\業(yè)務層\持久層的相關文件

2.自動提供基本增刪改查方法的默認實現(xiàn)

Oauth2.0

是一個授權框架

類似一個授權協(xié)議標準

我們常用的掃碼登錄就是Oauth2標準下的功能

學習記錄之微服務(后續(xù))的評論 (共 條)

分享到微博請遵守國家法律
永嘉县| 化德县| 隆回县| 灵丘县| 绥芬河市| 台中县| 宝鸡市| 梁河县| 长宁县| 六安市| 凉山| 淮南市| 玉环县| 任丘市| 南雄市| 西贡区| 凤城市| 光山县| 惠安县| 香港 | 刚察县| 枝江市| 连江县| 门源| 青龙| 东兴市| 民乐县| 贵德县| 盘山县| 静乐县| 中卫市| 子长县| 鸡西市| 麻栗坡县| 子洲县| 隆德县| 乐山市| 唐河县| 固阳县| 铜川市| 阳春市|