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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...