2021年12月9日 星期四

Nginx學習筆記 (8) - Cache緩存配置


Cache 可以減輕後端 server 的負擔,同樣的 request 內容不用每次都再跟 server 要資料,可以使用 Nginx Cache 裡存的 response 做回應

Nginx學習筆記 (7) - Rewrite重定向使用


Rewrite 重定向

語法:

rewrite regex replacement [flag];

若 path 符合後面 regex 正規匹配的話,會重定向到 replacement 位置

Nginx學習筆記 (5) - Load balacing演算法


Nginx 內提供多種 Load Balance 演算法

Nginx學習筆記 (6) - Proxy設定


Proxy 主要分成兩種

1. 正向代理 (Forward proxy):代理對象是client

  client <--> proxy <-- | --> server

  (server不會知道client的IP)


2. 反向代理 (Reverse proxy):代理對象是server

  client <-- | --> proxy <---> server

  (client不會知道server的IP)


作為服務端,我們一般是拿Nginx做為 reverse proxy,前面講到的負載平衡的分流其實就是 reverse proxy 的一種常見功能,以下介紹更多 proxy 相關的功能

Nginx學習筆記 (4) - Load balacing負載平衡實作


為應付龐大流量時後端可能不是只有一個伺服器,Nginx作為中間代理,能解析用戶端來的請求的路徑,做派發到特定後端伺服器處理,當中也可做些負載平衡的設定,讓流量分散到各伺服器,防止只有單一伺服器繁忙的狀況

Nginx學習筆記 (3) - Location 路由匹配

config 檔裡的 location 可用來定義請求 path 對應的回應

以下說明匹配規則

首先,要記住這幾個符號代表的意思:

1. = /uri:精準匹配,如果有對到搜尋會到此為止

2. ^~ /uri:前綴匹配,如果有對到搜尋會到此為止

3. ~ pattern:正規表達式匹配,區分大小寫

4. ~* pattern:正規表達式匹配,不區分大小寫

5. /uri:前綴匹配

6. /:通用匹配,所有的路徑一定會匹配到這個


採用的順序是:

1. = 精準匹配最優先

2. ^~ 前綴匹配,對到即使用

3. ~pattern, ~* pattern 正則匹配

4. 沒帶修飾的前綴匹配

5. 通用匹配

多個正則匹配的狀況,會選擇設定寫在上面的那個匹配

多個前綴匹配成功的狀況,會選擇匹配最長的那個

Nginx學習筆記 (2) - 配置設定與指令


Config 檔案

Nginx的config配置檔案

- /etc/nginx/nginx.conf     (主配置)

- /etc/nginx/conf.d/default.conf   (預設會被加載的配置檔)

Nginx學習筆記 (1) - 利用Docker建立測試環境

為了之後學習與測試方便,我們先利用Docker來建立一個Nginx測試環境吧!


檔案結構:

docker-compose.yaml

nginx/

├─ log/

├─ html/

│  ├─ index.html

├─ default.conf

2021年12月8日 星期三

[PostgreSQL] 資料庫的Race Condition問題與交易隔離等級

資料庫的操作會併發處理,因此也會遇到Race Condition問題

此篇文章會說明各種問題情境與解法

這裡主要是考慮使用的是 PostgreSQL 資料庫的狀況,不一樣的資料庫可能會有不同結果


- 髒寫 (Dirty Write)

在前一個寫入還沒commit前,後面的寫入覆蓋前面的值,就是 Dirty Write

範例:

DB: X = 0

Transaction A:寫入 X = 10

Transaction B:寫入 X = 5

Transaction A:COMMIT

Transaction B:COMMIT

最後 X = 5,Transaction A 的寫入被蓋掉了