歡迎訪問廈門信息集團大數據運營有限公司網站(zhàn)!
0551-65909059   公司OA
聯系電話(huà):
當前位置:首頁>>新聞中心>>行業動态 >>分布式網站(zhàn)架構和(hé)設計(jì)
今天是: 2024年07月29日   【農(nóng)曆:六月廿四】  星期一
分布式網站(zhàn)架構和(hé)設計(jì)

一、面向服務的架構(SOA service oriented architecture)

RPC的全稱是Remote Process Call,遠程過程調用(yòng)。

微信圖片_20191118145824.jpg

無論是何種類型的數據,都要轉換成二進制在網絡上(shàng)進行傳輸。将對(duì)象轉換成二進制稱爲對(duì)象的序列化,将二進制恢複爲對(duì)象稱爲反序列化。

Hessian比java内置的序列化 效率高(gāo)很(hěn)多。

轉換成json或者xml


通過HttpClient發送Http請(qǐng)求

兩種主要的url鏈接風(fēng)格,一種是RPC風(fēng)格,一種是REST風(fēng)格。

RPC的url直接在http請(qǐng)求的參數中标明(míng)需要遠程調用(yòng)的服務接口名稱、服務需要的參數;

REST通過Http請(qǐng)求對(duì)應的POST、GET、PUT、DELETE來(lái)完成對(duì)應的crud操作(zuò)。

POST 創建、GET獲取信息、PUT更新、DELETE删除


分布式應用(yòng)架構體系對(duì)于業務邏輯的複用(yòng)需求很(hěn)強烈,上(shàng)層業務都想借用(yòng)已有的底層服務,來(lái)快(kuài)速搭建更多、更豐富的應用(yòng)。公共的業務被拆分出來(lái),形成可共用(yòng)的服務,最大(dà)程度的 保障代碼和(hé)邏輯的複用(yòng),避免重複創建,這(zhè)種設計(jì)稱爲SOA。

微信圖片_20191118145842.jpg

請(qǐng)求到(dào)來(lái)時(shí),将請(qǐng)求均勻分配到(dào)後台服務器,負載均衡服務器從(cóng)服務對(duì)應的地址列表中,通過相應的均衡算(suàn)法和(hé)規則,選取一台服務器進行訪問,這(zhè)個過程稱爲服務的均衡負載。


常見的均衡負載算(suàn)法包括輪詢法、随機法、原地址哈希法、加權輪詢法、加權随機法、最小(xiǎo)連接法等。


輪詢法(Round Robin):将請(qǐng)求按順序輪流分配到(dào)後端服務器,均衡的對(duì)待服務器,不關心服務器的連接數和(hé)實際負載。(需要保存輪詢的位置,需要加鎖,影響系統吞吐量)

随機法(Random):根據後端服務器列表的大(dà)小(xiǎo)值随機取一個,根據概率統計(jì)理(lǐ)論,随着數量的增多,越來(lái)越接近平均分配流量到(dào)後台服務器。

原地址哈希法(Hash):獲取客戶端訪問的ip地址,通過哈希算(suàn)法獲得一個值,用(yòng)該值對(duì)服務器列表長度進行取模運算(suàn),


加權輪詢法(Weight Round Robin):給配置高(gāo)、負載低(dī)的機器配置更高(gāo)的權重,讓其處理(lǐ)更多的請(qǐng)求,而低(dī)配置的機器則降低(dī)負載。

微信圖片_20191118145903.jpg

微信圖片_20191118145909.jpg

加權随機法(Weight Random):根據後端服務器不同的配置和(hé)負載情況,配置不同

的權重。


微信圖片_20191118145914.jpg

最小(xiǎo)連接法(Least Connection):後台服務器的請(qǐng)求有快(kuài)有慢,根據連接情況,選擇連接數最少的服務器來(lái)處理(lǐ)請(qǐng)求。


服務網關

微信圖片_20191118145945.jpg


二、分布式系統基礎設施

分布式session:将session統一存儲在分布式緩存中,可以保證較高(gāo)的讀寫性能(néng)。


Mysql的拓展

1、業務拆分

微信圖片_20191118145948.jpg


2、複制策略

随着訪問量增加,某個庫的壓力越來(lái)越大(dà),可以将數據複制到(dào)數據庫服務器上(shàng),前端通過訪問Mysql集群中任意的一台服務器,能(néng)夠讀到(dào)相同的數據。


3、分庫分表

當數據庫單表的記錄數達到(dào)千萬級别甚至億級且數據庫面臨極高(gāo)的并發訪問,需要對(duì)表的吞吐能(néng)力做拓展。

減少單表的記錄數,減少查詢所需時(shí)間,提供數據庫的吞吐量。

微信圖片_20191118150019.jpg


分表能(néng)夠解決單表數據量過大(dà)導緻查詢效率下(xià)降問題,但(dàn)無法解決并發的讀寫訪問。對(duì)數據庫進行拆分,提高(gāo)數據庫的寫入功能(néng),這(zhè)就是分庫。


微信圖片_20191118150109.jpg




3、互聯網安全架構

安全算(suàn)法包括摘要算(suàn)法、對(duì)稱加密算(suàn)法、非對(duì)稱加密算(suàn)法、信息編碼。

摘要算(suàn)法:MD5、SHA、Base64(可逆,不安全)

對(duì)稱加密算(suàn)法(安全性和(hé)秘鑰有關):DES、3DES、AES

非對(duì)稱加密算(suàn)法:需要兩個秘鑰,一個公開(kāi)秘鑰,一個私鑰。RSA算(suàn)法

數字簽名:MD5withRSA、SHA1withRSA


數字證書包括對(duì)象的名稱、證書的過期時(shí)間、證書的頒發機構、頒發機構對(duì)證書的數字簽名、簽名算(suàn)法、對(duì)象的公鑰


4、系統穩定性

日志分析常用(yòng)命令:1)查看(kàn)文(wén)件内容 cat ab.txt;

2)、分頁顯示文(wén)件 less access.log;

3)、顯示文(wén)件尾 -f 該參數用(yòng)于監視(shì)File文(wén)件增長 ;-n Number 從(cóng) Number 行位置讀取指定文(wén)件 tail -n2 -f access.log;

4)、顯示文(wén)件頭 head -n20 access.log;

5)、内容排序 -n 依照數值的大(dà)小(xiǎo)排序 -k排列的列 -t參數指定列分隔符 -r 以相反的順序來(lái)排序 sort -k 2 -t ’ ’ -n access.log

6)、字符統計(jì) -c 統計(jì)字節數 -l 統計(jì)行數 -m 統計(jì)字符數 -w 統計(jì)字數 wc -l access.log

7)、查看(kàn)重複出現(xiàn)的行 -c或–count 在每列旁邊顯示該行重複出現(xiàn)的次數;-u或–unique 僅顯示出一次的行列;-d或–repeated 僅顯示重複出現(xiàn)的行列 sort uniq | uniq -c -u

8)、字符串查找 -c :顯示總共有多少行被匹配到(dào)了(le);-n :顯示行号;–color :将匹配到(dào)的内容以顔色高(gāo)亮(liàng)顯示 grep -c qq access.log 支持正則表達式

9)、文(wén)件查找 find path -option [ -print ] [ -exec -ok command ] {} ;

path: find命令所查找的目錄路徑;-print: find命令将匹配的文(wén)件輸出到(dào)标準輸出;-exec: find命令對(duì)匹配的文(wén)件執行該參數所給出的shell命令

-name filename #查找名爲filename的文(wén)件

find . -print 打印當前目錄所有文(wén)件

find ./name/log -name access.log

10)、歸檔文(wén)件 -c: 建立壓縮檔案;-f: 指定包的名字;-v:顯示所有過程

tar -cf aa.tar file god

tar -xf aa.tar

11)、url訪問的工(gōng)具

<p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; color: rgb(51, 51, 51); font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif; font-size: 17px; letter-spacing: 0.544px; text-align: justify; white-spac