知識積累 效能優化與框架搭建

2022-06-08 09:09:09 字數 1892 閱讀 7678

效能優化---框架優化(更多的是計算和儲存上的優化)

計算的優化主要體現在伺服器效能和對資料結構的操作上,儲存更多是對針對資料結構在讀或寫上進行優化;

一、軟優化:

1. **層面的優化,例如:

1)python中訪問列表時,set比list快,尤其是資料量比較大時,in的訪問,set效率更高

2)記憶體訪問比磁碟訪問更快,即適當新增os cache(記憶體快取)和mechine快取(如redis等)

2. 儲存時語句上的優化,

1)查詢語句優化,例如sql語句(mysql),query查詢(es)等

2)索引的優化,mysql中索引設定,es中是否分詞索引的優化

3. 針對各種資料儲存的伺服器,根據儲存原理進行優化

其實查詢語句的優化,大部分與伺服器之間的通訊、資料儲存的資料結構有關,因此想更深入的進行 軟優化,就需要在資料庫的底層儲存上進行**

1) 資料在物理伺服器上的通訊

具有代表性的如:mysql儲存資料的過程等、hdfs讀寫過程

(hbase、hive儲存過程也可以看看)

2) 資料落盤、刷盤的頻率,資料os cache,日誌flush頻率等

關於flush過程,可以參考es資料flush儲存過程

3) 儲存的資料結構

mongo的sharding與replica建立

hbase分region儲存等

4)略(嗯,想到再補充,總之儲存與優化不能僅限於呼叫介面式的應用,針對儲存的效能優化要落腳於資料庫實際的物理儲存結構和通訊過程)

4. 計算優化

1)單機上使用多程序(計算密集型)、多執行緒(io密集型)

2)分布式集群,例如spark框架

二、硬優化

1. 單機效能提公升,但縱向提公升伺服器效能成本較高

2. 集群模式、分布式模式

1)redis sharding式偽分布,使用一致性hash進行負載均衡

2)  多台物理伺服器組合,

如:mysql高併發集群、mongo集群、redis集群、es集群、基於hdfs的hbase分布式儲存

3. 讀寫分離,常見的是多種資料庫混合,常見是利用快取資料庫提公升訪問速度

1)常見mysql與redis, es與redis, 但需要注意併發情況下的問題(redis需採用只首次寫入,後續不在修改等手段)

2)分表分庫進行讀寫分離,資料根據時間、頻率、大小進行拆分

4. 資料庫架構體系的搭建(根據難度係數、業務資料量等綜合搭建)

框架搭建---**層面(針對各種物件導向或函式式程式語言都適用)

1. 常用的模組

配置模組(系統變數和常量)

日誌模組(日誌格式、日誌處理器handler[控制台、日誌檔案]、kafka等訊息系統[需要重寫日誌handler])

資料庫操作封裝(mysql、mongo、redis、elasticsearch)

時間處理模組

正規表示式、xpath處理、css處理

常用設計模式(工廠模式、單例項、lazy、修飾器)

2. 業務處理

1) 爬蟲框架,根據業務流程大致模組如下,具體細節具體處理:

資料儲存(呼叫封裝的資料庫處理業務資料)

資料抽取

排程模組

2) 知識圖譜,根據業務流程大致模組如下:

知識抽取

同源知識合併 (形成各種源的實體)

異源知識消岐與融合 (根據相同規則[如title,name等]查詢出類似實體,然後根據資料來源優先規則或其他規則,對不同源資料進行消岐與融合,同時記錄不同源之間的聯絡)

知識推斷(常見手段是根據搜尋引擎的分詞功能進行相似詞的檢索,利用分類演算法對結果進行**或歸類)

3)前後端業務,一般根據業務功能分模組

登入模組(賬號與秘鑰、session與cookie等)

其他根據具體業務場景等

mybatis框架 效能優化

延遲載入又叫懶載入,也叫按需載入。也就是說先載入主資訊,在需要的時候,再去載入從資訊。在mybatis中,resultmap標籤 的association標籤和collection標籤具有延遲載入的功能。查詢訂單資訊,關聯查詢使用者資訊。除了像之前的通過乙個sql語句來完成查詢,還可以 但是當暫時不...

前端知識 效能優化

速度 省錢抗壓 回退請求的數量 越少越好 當我們請求的數量可以減少時,我們的效能可能會提高。那我們怎麼解決這個問題呢?合併預載入 一般情況下我們會使用webpack來幫助我們實現這個功能 檔案的體積 越小越好 解決方案 壓縮 合理運用快取 快取不單單和服務端有關,也和前端有關 我們遇到的很多問題,其...

TCP與效能優化

tcp的可優化點 1.tcp三次握手增加了整整一次的往返時間 2.tcp慢啟動將被應用到每乙個新連線 3.tcp流量及擁塞控制會影響所有的連線吞吐量 4.tcp的吞吐量由當前擁塞視窗大小控制 結論 現代tcp連線的資料傳輸速度,往往受到接收端和傳送端之間往返時間的限制,在大多數情況下tcp的瓶頸是延...