NFS服務

来源:http://www.cnblogs.com/bananaaa/archive/2017/11/17/7853328.html
-Advertisement-
Play Games

第1章 NFS介紹 1.1 NFS的概念 NFS是Network File System的縮寫,即網路文件系統,它的主要功能是通過網路(一般是區域網)讓不同的主機系統之間可以共用文件或目錄。NFS客戶端(一般為應用伺服器如web)可以通過mount掛載的方式將NFS伺服器端共用的數據目錄掛載到NFS ...


第1章 NFS介紹

1.1 NFS的概念

NFS是Network File System的縮寫,即網路文件系統,它的主要功能是通過網路(一般是區域網)讓不同的主機系統之間可以共用文件或目錄。NFS客戶端(一般為應用伺服器如web)可以通過mount掛載的方式將NFS伺服器端共用的數據目錄掛載到NFS客戶端本地系統中(就是某一個掛載點下)

1.2 NFS在企業中的應用場景

在企業集群架構的工作場景中,NFS網路文件系統一般被用來存儲共用視頻、圖片、附件等靜態資源文件,通常網站用戶上傳的文件都會放到NFS共用里,然後前端所有的節點訪問這些靜態資源時都會讀取NFS存儲上的資源

1.2.1 NFS文件系統存在的作用

01. 實現數據信息的共用

02. 實現數據信息的一致

1.2.2 共用存儲的實現方式

1.硬體實現共用存儲

IBM(伺服器 小型機 大型機 存儲 DS V7000 V5000) Oracle EMC ==>去IOE

2.軟體實現共用存儲

本地文件系統NFS 分散式文件系統mfs FTP samba

說明:互聯網領域發展過程詳細瞭解(浪潮之巔)

1.3 NFS共用系統原理

01. 在NFS伺服器端創建一個共用目錄/video

02. 通過mount網路掛載,將這個共用目錄/video掛載到客戶端本地掛載點(不同客戶端的掛載點可以不相同)

03. 客戶端掛載完畢後,進入NFS客戶端掛載點所在的目錄就可以看到NFS伺服器端/video共用出來的目錄下的所有數據。在客戶端的掛載目錄上進行創建/刪除/查看數據操作時,就相當於在伺服器進行的創建/刪除/查看操作

顯示本地共用伺服器掛載的基本信息

 1 [root@nfs01 ~]# df -h
 2 
 3 Filesystem         Size  Used  Avail Use% Mounted on
 4 
 5 /dev/sda3          6.9G  1.6G  5.0G  24% /
 6 
 7 tmpfs              491M    0  491M   0% /dev/shm
 8 
 9 /dev/sda1          190M 33M  147M  19% /boot
10 
11 172.16.1.31:/data  6.9G  1.6G  5.0G  24% /mnt  #使用率到達99%時擴容對端NFS

說明:mount -t 指定掛載類型   源           目標

mount -t     nfs    172.16.1.31:/data    /mnt

1.4 RPC遠程過程調用

1.4.2 NFS工作流程原理

1.4.2.1  服務端三部曲

01.啟動RPC服務/etc/init.d/rpcbind start

02.啟動NFS服務/etc/init.d/nfs start

03.NFS服務會向RPC服務註冊啟動的埠信息(只能註冊一次,要想註冊第二次要重啟NFS服務)

1.4.2.2  客戶端三部曲

01.啟動RPC服務/etc/init.d/rpcbind start,通過TCP/IP和服務端的RPC服務建立連接

02.通過mount進行掛載,將遠程磁碟目錄掛載到本地

03.通過客戶端RPC服務向服務端RPC服務請求NFS服務埠信息,根據不同的進程和埠進行應用NFS服務

1.5 NFS服務網路文件共用RPC服務

由於NFS支持的功能很多,當NFS啟動時會出現多個進程,網路服務又會自動生成一些隨機的埠信息。NFS的隨機埠造成了客戶端與服務端的通信障礙,因為NFS客戶端必須要知道NFS伺服器端的數據傳輸埠才能進行通信,這時就生成了RPC遠程調用服務

當RPC啟動時會記錄每個NFS功能所對應的埠信息,由RPC服務提供用戶訪問,並且在NFS客戶端請求時將該埠和功能對應的信息傳遞給請求數據的NFS客戶端,從而確保客戶端可以連接到正確的NFS埠,達到實現數據傳輸交互數據目的

 

第2章 NFS伺服器端部署環境準備

2.1 NFS服務端部署

伺服器系統

角色

IP

Centos6.9x86_64

NFS客戶端(web-client)

10.0.0.7

Centos6.9x86_64

NFS伺服器端(nfs-server)

10.0.0.8

Centos6.9x86_64

NFS客戶端(web-client)

10.0.0.9

2.1.1 centos6.x x86_64模擬環境信息

NFS伺服器端操作系統信息及內核版本信息

 1 [root@nfs01 ~]# cat /etc/redhat-release
 2 
 3 CentOS release 6.9 (Final)
 4 
 5 [root@nfs01 ~]# uname -r
 6 
 7 2.6.32-696.el6.x86_64
 8 
 9 [root@nfs01 ~]# uname -m
10 
11 x86_64

NFS客戶端操作系統信息及內核版本信息如下:

 1 [root@web01 ~]# cat /etc/redhat-release
 2 
 3 CentOS release 6.9 (Final)
 4 
 5 [root@web01 ~]# uname -r
 6 
 7 2.6.32-696.el6.x86_64
 8 
 9 [root@web01 ~]# uname -m
10 
11 x86_64

2.1.2 檢查NFS RPC服務軟體是否安裝

 1 rpm -qa |grep nfs 2 3 rpm -qa |grep rpc 

說明:當不知道軟體名字時候,可以用rpm -qa|grep -E "nfs-|rpcbind"來過濾包含在引號內的字元串;預設centos6.x系統沒有安裝nfs和rpc軟體包(centos5預設會安裝)

2.1.3 進行yum安裝nfs與rpc服務軟體

註意:這裡安裝的rpc軟體是rpcbind,centos5.x安裝portmap

 1 yum install -y nfs-utils rpcbind 

查看已安裝的軟體包里的內容

 1 [root@nfs01 ~]# rpm -ql nfs-utils
 2 
 3 /etc/rc.d/init.d/nfs     #啟動腳本命令
 4 
 5 /usr/sbin/exportfs    #NFS共用服務的管理命令
 6 
 7 /usr/sbin/showmount  #查看NFS共用列表信息
 8 
 9 [root@nfs01 ~]# rpm -ql rpcbind
10 
11 /etc/rc.d/init.d/rpcbind #啟動腳本命令
12 
13 /usr/sbin/rpcinfo      #查看NFS註冊信息

查看某個命令/文件屬於哪個大禮包

 1 rpm -qf `which ssh` 

2.1.4 進行NFS配置文件/etc/exports編寫

NFS服務的預設配置文件路徑為/etc/exports且預設為空

說明:NFS預設配置文件是存在的,但是沒有內容,需要用戶自行配置

1 vim /etc/exports
2 
3 #share /data by shine for share at 20171013
4 
5 /data 172.16.1.0/24(rw,sync)

第一部分:/data  <=指定共用目錄信息

第二部分:172.16.1.0/24  <=指定目標網段,表示允許指定網段主機掛載到本地的共用目錄上

第二部分:(rw,sync)  <=定義共用服務相關參數信息

rw表示讀寫,對共用目錄設置的許可權;

sync同步,數據先寫入NFS伺服器記憶體,立刻同步到磁碟中==>即直接寫入到磁碟中

說明:修改/etc/exports後,需執行/etc/init.d/nfs reload平滑重啟或exportfs -rv重新載入NFS配置,不進行重啟NFS

2.1.5 創建共用目錄並更改許可權

 1 mkdir -p /data 2 3 chown -R nfsnobody.nfsnobody /data 4 5 ll -d /data 

在NFS伺服器端把要共用的NFS目錄賦予NFS預設用戶nfsnobody用戶和用戶組許可權,如果不設置則會導致NFS客戶端無法通過NFS本地共用目錄許可權寫入;當然也可以給NFS伺服器端本地共用目錄777的許可權,但工作中最好不要用,因為777的許可權太大

說明:NFS共用目錄管理用戶這裡為nfsnobody,服務端(個人)沒有創建nfsnobody用戶但仍可以賦予用戶許可權,是由於nfsnobody用戶是在進行nfs軟體的yum安裝時自動創建的

2.1.6 啟動NFS服務

1.首先啟動rpc服務(檢查狀態/etc/init.d/rpcbind status)

 1 /etc/init.d/rpcbind start 

2.查看NFS向rpc服務註冊的本地埠信息

 1 ps -ef |grep rpcbind 2 3 netstat rpcbind 4 5 rpcinfo -p 10.0.0.31 #這時由於NFS還未啟動,所以沒有過多註冊的埠映射信息 

3.其次啟動NFS服務

 1 /etc/init.d/nfs start 2 3 rpcinfo -p 10.0.0.31 #NFS服務啟動會有很多埠和功能的對應,每次啟動時除了873和2049其他埠均隨機 

說明:如果rpcbind服務未啟動,執行命令rpcinfo -p localhost檢查時,會報如下錯誤

rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused

解決辦法:執行/etc/init.d/rpcbind start啟動rpcbind服務即可

2.1.7 檢查NFS服務配置及本地測試掛載

測試掛載結果

1 mount -t nfs 172.16.1.31:/data /mnt  #mount -t 掛載類型 要掛載的伺服器:共用目錄 客戶端的掛載點
2 
3 df -h  #查看掛載後的結果
4 
5 #172.16.1.31:/data  8.8G  1.7G  6.7G  20% /mnt
6 
7 mount

2.2 NFS客戶端部署(以下步驟均在backup和web01伺服器中執行)

2.2.1 檢查NFS RPC服務軟體是否安裝

 1 rpm -qa |grep nfs 2 3 rpm -qa |grep rpcbind 

2.2.2 進行yum安裝nfs與rpc服務軟體

 1 yum install -y nfs-utils rpcbind 

說明:進行同時安裝的操作:在命令行界面右鍵→"發送鍵輸入到所有會話"

nfs-utils和rpcbind軟體安裝後,均不是必須要啟動的,也可以不啟動。但是,軟體必須要安裝

  如果nfs/rpc軟體不安裝會造成的問題:

a 客戶端無法使用showmount/rpcinfo命令

b 掛載時客戶端無法識別nfs/rpc文件系統類型

2.2.3 檢查nfs客戶端是否有可以進行共用掛載目錄的包

 1 rpm -qf `which showmount` 

說明:showmount使用,需要安裝nfs-utils軟體

2.2.4 進行nfs客戶端共用目錄掛載

進行共用目錄掛載

 1 mount -t nfs 172.16.1.31:/data /mnt 

說明:只要nfs服務端進行修改配置文件重新掛載,客戶端也必須重新進行掛載

2.2.5 進行文件創建/刪除測試檢查

在備份伺服器中,新建oldboy文件

 1 [root@web01 ~]# touch /mnt/oldboy.txt 2 3 [root@web01 ~]# rm -f /mnt/oldboy.txt 

此時,nfs和web客戶端均能共用到oldboy文件

註意:客戶端測試如果有異常,可以把測試過程轉移到服務端,通過服務端進行測試,便可確認異常問題原因

 

第3章 NFS深入擴展知識

3.1 NFS服務相關進程說明

 1 [root@nfs01 ~]# ps -ef |egrep "rpc|nfs"
 2 
 3 rpc        1185      1  0 20:17 ?        00:00:00 rpcbind      <-RPC主進程
 4 rpcuser    1207      1  0 20:17 ?        00:00:00 rpc.statd      <-檢查數據存儲一致性
 5 root       1367      2  0 20:19 ?        00:00:00 [rpciod/0]
 6 root       1376      1  0 20:19 ?        00:00:00 rpc.rquotad   <-磁碟配額進程(remote quota server)
 7 root       1381      1  0 20:19 ?        00:00:00 rpc.mountd   <-服務端掛載許可權管理驗證等(NFS mount daemon)
 8 root       1388      2  0 20:19 ?        00:00:00 [nfsd4]
 9 root       1389      2  0 20:19 ?        00:00:00 [nfsd4_callbacks]
10 root       1390      2  0 20:19 ?        00:00:00 [nfsd]                   <-NFS主進程daemon
11 root       1391      2  0 20:19 ?        00:00:00 [nfsd]                   <-NFS主進程
12 root       1392      2  0 20:19 ?        00:00:00 [nfsd]                   <-NFS主進程,管理登入,ID身份判別等
13 root       1393      2  0 20:19 ?        00:00:00 [nfsd]
14 root       1394      2  0 20:19 ?        00:00:00 [nfsd]
15 root       1395      2  0 20:19 ?        00:00:00 [nfsd]
16 root       1396      2  0 20:19 ?        00:00:00 [nfsd]
17 root       1397      2  0 20:19 ?        00:00:00 [nfsd]        <-NFS主進程
18 root       1428      1  0 20:19 ?        00:00:00 rpc.idmapd   <-name mapping daemon用戶壓縮/用戶映射
19 root       1432   1305  0 20:19 pts/0    00:00:00 egrep --color=auto rpc|nfs


NFS查看以上進程,可以通過man進程名命令,如man rpcidmapd

3.2 配置NFS服務端開機自啟動

 1 [root@nfs01 ~]# chkconfig rpcbind on 2 3 [root@nfs01 ~]# chkconfig nfs on 

3.3 NFS服務端配置文件路徑

NFS服務的預設配置文件路徑為/etc/exports且預設為空

1 [root@nfs01 ~]# ls -l /etc/exports
2 
3 -rw-r--r-- 1 root root 29 Oct 11 11:13 /etc/exports
4 
5 [root@nfs01 ~]# cat /etc/exports

說明:NFS預設配置文件是存在的,但是沒有內容,需要用戶自配

 

第4章 NFS配置參數許可權說明


 
4.1 squash參數詳解

rpc.idmapd      名字映射後臺進程

4.2 anonuid、anongid參數詳解

作用:修改映射後的預設用戶信息,預設映射用戶為65534-nfsnobody

4.2.1 實踐操作配置1:修改NFS預設映射用戶(nfsnobody->www)

4.2.1.1  服務端配置

第一個裡程碑-創建映射用戶(服務端與客戶端都創建,且uid和gid保持一致)

說明:因為兩端識別用戶身份並不是依靠用戶名識別的,而是識別uid和gid信息,需要 uid和gid信息來判斷用戶是否一致,不一致則出現拒絕訪問錯誤!

#客戶端和服務端創建用戶www

 1 useradd www -u 666 2 3 id www 

第二個裡程碑-服務端進行nfs文件配置,修改共用目錄許可權(客戶端不進行修改)

1 [root@nfs01 ~]# vim /etc/exports
2 
3 #share /data by root for www at 20171015
4 
5 /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

說明:不指定anon參數這裡就以uid為65534的nfsnobody用戶作為預設映射用戶

提示:用戶預設的映射參數為root_squash、no_all_squash,所以配置文件中一定要進行參數設置

第三個裡程碑-修改上級目錄許可權

 1 [root@nfs01 ~]# chown -R www.www /data 

第四個裡程碑-重啟伺服器

 1 [root@nfs01 ~]# /etc/init.d/nfs reload 

4.2.1.2  客戶端配置

第一個裡程碑-進行掛載/重新掛載

 1 [root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
 2 
 3 [root@backup ~]# df -h
 4 
 5 Filesystem         Size  Used Avail Use% Mounted on
 6 
 7 /dev/sda3          8.8G  1.7G  6.7G  20% /
 8 
 9 tmpfs              238M     0  238M   0% /dev/shm
10 
11 /dev/sda1          190M   40M  141M  22% /boot
12 
13 172.16.1.31:/data  8.8G  1.7G  6.7G  20% /mnt

第二個裡程碑-創建指定www用戶

 1 useradd www -u 666 2 3 id www 4 5 uid=666(www) gid=666(www) groups=666(www) 

第三個裡程碑-客戶端進行測試

01.測試root用戶映射

1 [root@backup mnt]# touch user_root.txt
2 
3 [root@backup mnt]# ll
4 
5 total 0
6 
7 -rw-r--r-- 1 www www 0 Oct 15 16:25 user_root.txt

02.測試普通用戶映射

#www用戶映射

1 [www@backup mnt]$ touch user_www.txt
2 
3 [www@backup mnt]$ ll
4 
5 total 0
6 
7 -rw-r--r-- 1 www www 0 Oct 15 16:25 user_root.txt
8 
9 -rw-rw-r-- 1 www www 0 Oct 15 16:26 user_www.txt

註意:當服務端創建用戶而客戶端不存在此用戶時,客戶端在掛載點下創建目錄,文件用戶屬性出現nobody信息

4.2.2 實踐操作配置2:修改客戶端配置文件進行測試

no_all_squash

 1 [oldboy@backup mnt]$ touch user_oldboy.txt 2 3 touch: cannot touch `user_oldboy.txt': Permission denied 

root_squash(服務端掛載目錄/data屬主為www,故www用戶仍能掛載)

 1 [oldboy@backup mnt]$ touch user_oldboy.txt 2 3 touch: cannot touch `user_oldboy.txt': Permission denied 

no_root_squash(root用戶不進行映射,其許可權能創建文件且屬主依然為root)

1 [root@backup mnt]# touch user_root.txt
2 
3 [root@backup mnt]# ll
4 
5 -rw-r--r-- 1 root root 0 Oct 15 17:06 user_root.txt
6 
7 [oldboy@backup mnt]$ touch user_oldboy.txt
8 
9 touch: cannot touch `user_oldboy.txt': Permission denied

  NFS服務umount命令參數

-l  表示不用離開當前掛載目錄,進行懶惰卸載

-f  表示對掛載的目錄進行強制卸載

 

第5章 NFS服務企業案例配置實踐

5.1 實例:共用不同的兩個目錄,分別賦予讀和寫的許可權

5.1.1 具體要求

服務端上面要求:nfs伺服器172.16.1.31,共用下麵兩個目錄

/data/w   要求的許可權可讀寫,同步數據,所有用戶都壓縮為匿名用戶

/data/r   要求的許可權為只讀,同步數據,所有用戶都壓縮為匿名用戶

客戶端上面要求 :

backup伺服器   把NFS伺服器的/data/r掛載到backup的/data/r

web01伺服器   把NFS伺服器的/data/w掛載到web01的/data/w

5.1.2 部署過程

5.1.3 第一個裡程碑-卸載並創建目錄環境

 1 umount -lf /data 

①    服務端創建

 1 mkdir /data/{r,w} 2 3 chown -R nfsnobody.nfsnobody /data 4 5 ll -d /data/{r,w} 

②    客戶端創建(這裡無需修改許可權)

 1 [root@backup ~]# mkdir -p /data/r 2 3 [root@web01 ~]# mkdir -p /data/w 

5.1.4 第二個裡程碑-編輯nfs服務端配置文件

1 [root@nfs01 ~]# vim /etc/exports
2 
3 #share /data by root at 20171015
4 
5 #/data 172.16.1.0/24(rw,sync)
6 
7 /data/w 172.16.1.0/24(rw,sync,all_squash)
8 
9 /data/r 172.16.1.0/24(ro,sync,all_squash)

5.1.5 第三個裡程碑-重啟nfs

 1 [root@nfs01 ~]# /etc/init.d/nfs reload 

說明:在配置共用目錄時,需要考慮到子目錄會繼承上一級目錄的許可權,即上一級目錄/data若有rw許可權,/data/r將仍被繼承(ro許可權不起作用),因此應儘量讓共用目錄之間沒有繼承關係,這裡採用註釋/data目錄方法

5.1.6 第四個裡程碑-客戶端進行重新掛載

 1 umount -lf /mnt  #卸載已掛載目錄
 2 
 3 backup
 4 
 5 [root@backup ~]# mount -t nfs 172.16.1.31:/data/r /data/r/
 6 [root@backup ~]# df -h
 7 Filesystem           Size  Used Avail Use% Mounted on
 8 /dev/sda3            8.8G  1.7G  6.7G  20% /
 9 tmpfs                238M     0  238M   0% /dev/shm
10 /dev/sda1            190M   40M  141M  22% /boot
11 172.16.1.31:/data/r  8.8G  1.7G  6.7G  20% /data/r
12 
13 web01
14 
15 [root@web01 ~]# mount -t nfs 172.16.1.31:/data/w /data/w/
16 [root@web01 ~]# df -h
17 Filesystem           Size  Used Avail Use% Mounted on
18 /dev/sda3            8.8G  1.7G  6.8G  20% /
19 tmpfs                238M     0  238M   0% /dev/shm
20 /dev/sda1            190M   40M  141M  22% /boot
21 172.16.1.31:/data/w  8.8G  1.7G  6.7G  20% /data/w

5.1.7 第五個裡程碑-進行測試

①    測試讀寫功能

1 [root@web01 ~]# cd /data/w
2 
3 [root@web01 w]# touch test01.txt
4 
5 [root@web01 w]# ll
6 
7 total 0
8 
9 -rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 15  2017 test01.txt

②    測試只讀功能

1 [root@backup ~]# cd /data/r
2 
3 [root@backup r]# touch test02.txt  #創建文件進行測試
4 
5 touch: cannot touch ` test02.txt': Read-only file system  #提示:不能創建文件,該文件為只讀文件系統

提示:在任何情況下,服務端重啟之後客戶端都必須進行重新掛載,否則就出現如下錯誤

 1 [root@backup r]# ll 2 3 ls: cannot open directory .: Stale file handle 

 

第6章 NFS服務的重點知識梳理

6.1 多個NFS客戶端訪問服務端的讀寫文件要具有的許可權

01.NFS伺服器/etc/exports設置需要開放可寫入的許可權,即服務端的共用許可權

02.NFS伺服器實際要共用的NFS目錄許可權具有可寫入w的許可權,即服務端本地目錄的安全許可權

03.每台機器對應存在和NFS預設配置UID的相同UID 65534的nfsnobody用戶(確保所有客戶端的訪問許可權統一,否則每個機器都需要同時建立相同UID的用戶,並覆蓋NFS的預設用戶配置)

只有滿足上述三個條件,多個NFS客戶端才能具有查看/修改/刪除其它任意NFS客戶端上傳文件的許可權,這在大規模的集群環境中作為集群共用存儲時尤為重要

6.2 NFS客戶端掛載命令格式

掛載命令

掛載的類型格式

指定掛載參數

NFS伺服器端提供的共用目錄

NFS客戶端的掛載點

mount

-t nfs

-o ro

172.16.1.31:/data

/mnt(必須存在)

完整版的掛載命令:mount -t nfs 172.16.1.31:/data /mnt,此命令需在客戶端執行

6.2.1 NFS共用目錄自動掛載方法

01.將掛載命令放在/etc/rc.local里

偶爾開機掛載不上,工作中除了開機自啟動配置,還要對是否掛載做監控

02.將掛載命令放在/etc/fstab里

1 [root@nfs01 data]# chkconfig netfs on
2 
3 [root@nfs01 data]# chkconfig --list netfs
4 
5 netfs          0:off      1:off      2:on       3:on       4:on       5:on       6:off

註意:生產環境中一般不將其掛載信息寫入fstab中,因為開機啟動時,網路連接不上nfs server的話,可能會導致客戶端主機無法啟動過不了fstab這項,可以將其放到/etc/rc.local中來實現開機自動掛載,但也有可能重啟nfs客戶端後掛載不成功

6.3 NFS服務的優缺點及應用建議

A.優點:

01.簡單,容易上手,容易管理

02.NFS文件系統內數據是在文件系統之上的,即數據是可見的

03.部署快速,維護簡單方便且可控,滿足需求就是最好的

04.可靠,從軟體層面上看,數據可靠性高,經久耐用。數據是在文件系統之上的

05.服務非常穩定

B.局限:

01.存在單點故障,如果NFS Server宕機了,所有客戶端都不能訪問共用目錄,這個在後期會通過負載均衡及高可用方案彌補

02.在大數據高併發的場合,NFS效率、性能有限(2 千萬/日以下PV的網站不是瓶頸,除非網站架構設計太差)

03.客戶端認證是基於IP 和主機名的,許可權要根據ID 識別,無安全認證機制(用於內網則問題不大)

04.NFS數據是明文的,NFS本身不對數據完整性進行驗證

05.多台客戶機掛載一個NFS伺服器時,連接管理維護麻煩(耦合度高)。尤其當NFS伺服器端出問題後所有NFS客戶端都處於掛掉狀態測試環境可使用autofs自動掛載解決,正式環境可修複NFS服務或強制卸載)。

06.涉及了同步(實時等待)和非同步(解耦)的概念,NFS伺服器端和客戶端相對來說就是耦合度有些高。網站程式也是一樣,儘量不要耦合度太高,系統及程式架構師的重要職責就是為程式及架構解耦,讓網站的擴展性變的更好。

C.應用建議:

對於大中小網站(參考點2000萬舊PV以下)線上應用,都有用武之地,門戶網站也會有應用,生產場景應該多將數據的訪問往前推,即儘量將靜態存情里的資源通過CDN 或緩存伺服器提供服務,如果沒有緩存服務或架構不好,存儲伺服器數量再多也是扛不住壓力的,而且用戶體驗會很差。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.找到my.ini MySql5.7安裝後(windows環境),在安裝目錄下並沒有發現my.ini的配置文件,百度了一下才知道MySql安裝時會將data文件夾(包含資料庫信息和文件)放在ProgramData文件夾中,並且ProgramData文件夾是以隱藏的形式存在。。。。接下來就需要開啟隱 ...
  • 資料庫的設計(DataBase Design): 針對於用戶特定的需求,然後我們創建出來一個最使用而且性能高的資料庫! 資料庫設計的步驟: 01.需求分析 02.概念結構設計 03.邏輯結構設計 04.物理結構設計 05.資料庫的實施 06.資料庫的運行和維護 資料庫的3大範式: 1.確保每列的原子 ...
  • 在mysql資料庫中,插入中文數據時,會出現亂碼的現象。 我的測試方法: 我的解決方法: 說明一下: 我的只改了client的編碼格式為gbk,然後關於中文數據的插入就沒有錯誤了。 但我看了網上關於mysql的亂碼解決的方法是: 改'my.ini'的client和server的編碼格式為utf8 關 ...
  • 1. 建表 2. 查詢表結構 3.正則表達式 ...
  • http://369day.blog.51cto.com/845412/607818 ...
  • Oracle導入備份 輸入imp 用戶名/密碼@資料庫名 file=導入的.dmp文件路徑 full=y 按回車. Oracle導出備份 輸入exp 用戶名/密碼@資料庫名 file=導出的.dmp文件存放的路徑 owner=用戶名 按回車 成功終止導出,沒有出現警告. ...
  • 既然是開篇,那就來閑話叨一叨FPGA吧。 掰掰指頭,結識FPGA估計有5年多。作為嵌入式工程師,每天的日常充斥著ARM、DSP、操作系統、通訊、匯流排等耳熟能詳的辭彙,日日徜徉其中,而這當中,最特立獨行的就是FPGA。FPGA沒有形狀,但又可以捏出任何形狀,相對於MCU/CPU開發來說,FPGA至少意 ...
  • 記憶體對齊問題之大小端對齊問題 郝東東寫 所謂的大小端問題,也就是位元組序。處理器(CPU)對記憶體數據操作有兩種模式:讀和寫。這樣,處理器在讀寫一個多位元組記憶體的時候,高位元組是在記憶體的高地址還是低地址就是一個問題,不同的大小端模式可能有不同的結果。 當處理器讀寫指令針對數據不一致的時候就涉及到大小端問題, ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...