一、面向服務的架構(SOA service oriented architecture)
RPC的全稱是Remote Process Call,遠程過程調用。
無論是何種類型的數據,都要轉換成二進制在網絡上進行傳輸。將對象轉換成二進制稱為對象的序列化,將二進制恢復為對象稱為反序列化。
Hessian比java內置的序列化 效率高很多。
轉換成json或者xml
通過HttpClient發送Http請求
兩種主要的url鏈接風格,一種是RPC風格,一種是REST風格。
RPC的url直接在http請求的參數中標明需要遠程調用的服務接口名稱、服務需要的參數;
REST通過Http請求對應的POST、GET、PUT、DELETE來完成對應的crud操作。
POST 創建、GET獲取信息、PUT更新、DELETE刪除
分布式應用架構體系對于業務邏輯的復用需求很強烈,上層業務都想借用已有的底層服務,來快速搭建更多、更豐富的應用。公共的業務被拆分出來,形成可共用的服務,最大程度的 保障代碼和邏輯的復用,避免重復創建,這種設計稱為SOA。
請求到來時,將請求均勻分配到后臺服務器,負載均衡服務器從服務對應的地址列表中,通過相應的均衡算法和規則,選取一臺服務器進行訪問,這個過程稱為服務的均衡負載。
常見的均衡負載算法包括輪詢法、隨機法、原地址哈希法、加權輪詢法、加權隨機法、最小連接法等。
輪詢法(Round Robin):將請求按順序輪流分配到后端服務器,均衡的對待服務器,不關心服務器的連接數和實際負載。(需要保存輪詢的位置,需要加鎖,影響系統吞吐量)
隨機法(Random):根據后端服務器列表的大小值隨機取一個,根據概率統計理論,隨著數量的增多,越來越接近平均分配流量到后臺服務器。
原地址哈希法(Hash):獲取客戶端訪問的ip地址,通過哈希算法獲得一個值,用該值對服務器列表長度進行取模運算,
加權輪詢法(Weight Round Robin):給配置高、負載低的機器配置更高的權重,讓其處理更多的請求,而低配置的機器則降低負載。
加權隨機法(Weight Random):根據后端服務器不同的配置和負載情況,配置不同
的權重。
最小連接法(Least Connection):后臺服務器的請求有快有慢,根據連接情況,選擇連接數最少的服務器來處理請求。
服務網關
二、分布式系統基礎設施
分布式session:將session統一存儲在分布式緩存中,可以保證較高的讀寫性能。
Mysql的拓展
1、業務拆分
2、復制策略
隨著訪問量增加,某個庫的壓力越來越大,可以將數據復制到數據庫服務器上,前端通過訪問Mysql集群中任意的一臺服務器,能夠讀到相同的數據。
3、分庫分表
當數據庫單表的記錄數達到千萬級別甚至億級且數據庫面臨極高的并發訪問,需要對表的吞吐能力做拓展。
減少單表的記錄數,減少查詢所需時間,提供數據庫的吞吐量。
分表能夠解決單表數據量過大導致查詢效率下降問題,但無法解決并發的讀寫訪問。對數據庫進行拆分,提高數據庫的寫入功能,這就是分庫。
3、互聯網安全架構
安全算法包括摘要算法、對稱加密算法、非對稱加密算法、信息編碼。
摘要算法:MD5、SHA、Base64(可逆,不安全)
對稱加密算法(安全性和秘鑰有關):DES、3DES、AES
非對稱加密算法:需要兩個秘鑰,一個公開秘鑰,一個私鑰。RSA算法
數字簽名:MD5withRSA、SHA1withRSA
數字證書包括對象的名稱、證書的過期時間、證書的頒發機構、頒發機構對證書的數字簽名、簽名算法、對象的公鑰
4、系統穩定性
日志分析常用命令:1)查看文件內容 cat ab.txt;
2)、分頁顯示文件 less access.log;
3)、顯示文件尾 -f 該參數用于監視File文件增長 ;-n Number 從 Number 行位置讀取指定文件 tail -n2 -f access.log;
4)、顯示文件頭 head -n20 access.log;
5)、內容排序 -n 依照數值的大小排序 -k排列的列 -t參數指定列分隔符 -r 以相反的順序來排序 sort -k 2 -t ’ ’ -n access.log
6)、字符統計 -c 統計字節數 -l 統計行數 -m 統計字符數 -w 統計字數 wc -l access.log
7)、查看重復出現的行 -c或–count 在每列旁邊顯示該行重復出現的次數;-u或–unique 僅顯示出一次的行列;-d或–repeated 僅顯示重復出現的行列 sort uniq | uniq -c -u
8)、字符串查找 -c :顯示總共有多少行被匹配到了;-n :顯示行號;–color :將匹配到的內容以顏色高亮顯示 grep -c qq access.log 支持正則表達式
9)、文件查找 find path -option [ -print ] [ -exec -ok command ] {} ;
path: find命令所查找的目錄路徑;-print: find命令將匹配的文件輸出到標準輸出;-exec: find命令對匹配的文件執行該參數所給出的shell命令
-name filename #查找名為filename的文件
find . -print 打印當前目錄所有文件
find ./name/log -name access.log
10)、歸檔文件 -c: 建立壓縮檔案;-f: 指定包的名字;-v:顯示所有過程
tar -cf aa.tar file god
tar -xf aa.tar
11)、url訪問的工具
<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