摘要:服務器性能數據庫性能網絡連接甚至編程語言都會影響并發數。但總結起來,高并發無非就是拆拆拆分分分。比如我們在多個端口配置啟動其他分庫分表合理的基本的優化,比如盡量避免全表掃描我個人理解的高并發就是,把傳統的單元操作進行拆分,分的越細致越好。
服務器性能、數據庫性能、網絡連接甚至編程語言都會影響并發數。但總結起來,高并發無非就是拆拆拆分分分。
樂觀鎖樂觀鎖是數據庫優化的典范。即,通過對數據條目的“版本控制”,來約束數據,防止臟讀寫操作。在實際操作中并不獨占資源。在設計思路上是通過引入“版本”概念來放棄資源約束。
舉例:
數據庫中設置`CREATE TABLE tbl (
id varchar(32) , /** 樂觀鎖字段 **/ optimistic_lock numeric(12)
)`
java中使用spring @version 關鍵字,
@Version @Column(name = "optimistic_lock", columnDefinition = "INTEGER") private long optimisticLock;讀寫分離
數據庫中的讀寫分離知識數據庫集群的一種典型。并不一定需要按讀寫分離數據庫,也可以根據特定的業務邏輯來進行分開操作。
我們以讀寫分離舉例:
通常設計兩個數據庫master和slave數據服務器,在spring中配置兩個datasource
并在dao層調用時進行讀寫分別調用。
為保證master/slave服務器的數據一致性,兩個服務器間會有同步。
我們以圖片分離存儲為例,在web場景中,頁面加載的圖片是非常消耗資源的,通常我們會放在其他的服務器上來進行存儲,針對圖片資源進行優化加速。這就像是java編程理念中的“解耦”。
同理,js文件、css文件、zip文件等皆可通過這種方式進行分離,再配合CDN加速技術,實現訪問速度和并發能力的提升。
CDN加速就是在靠近用戶的物理位置上架設服務器,根據就近原則使用戶訪問物理上最近的服務器來節省網絡傳輸時間。
通常這種CDN加速的服務器分散到全國設置世界各地,并適當采用的緩存、專線等技術。
為保證數據的一致性,服務器間進行同步。
我們把一次HTTP請求的時間分成幾段:request--> calculate--> response,那么靜態資源簡化甚至省略了calculate步驟,實現請求-->響應的簡單模型。
我們可以將“冪等”的請求進行靜態化處理。我們舉例來理解這件事:
比如用戶想快速的查詢自己近一個月的交易總額,按照傳統模式我們需要服務器在用戶查詢后進行累加計算來統計用戶這一個月的交易數據。那么我們可以在每天凌晨運行一次spring batch 來統計所有用戶的交易總額信息,并存儲在用戶對應的表里,當用戶查詢時,直接獲取。
緩存可以理解為動態轉靜態的一個實例。也可以理解為將硬盤上的數據存入內存方便讀取。通常設計為key-value形式。
以常用的memcache舉例:
MemCachedClient mc = new MemCachedClient(); String key = "cacheKey1"; Object value = SomeClass.getObject(); mc.set(key, value);服務器鏡像
與CDN加速的設計類似,根據不同地域、網絡服務商等網絡條件假設多個服務器的“鏡像”來實現網絡傳輸環節的優化。
以此我們可以引出“負載均衡”。
負載均衡的設計理念是根據資源請求消耗情況來自動調節平衡。
比如我們在多個端口配置啟動tomcat:
分庫、分表
合理的Synchronized
基本的SQL優化,比如盡量避免全表掃描
我個人理解的高并發就是,把傳統的“單元操作”進行拆分,分的越細致越好。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61873.html
摘要:武器工欲善其事,必先利其器,處理高并發我們當然少不了好的武器。 前言 今天看見有人聊目前系統有2億的PV,該如何優化?當我看到這個話題的時候,突然在想自己工作中也遇到了不少高并發的場景了,所以即興發揮,在這里簡單總結和分享下,歡迎指正和補充。 正文 讀操作 關于讀,我們一般遵循如下優先級: 優先級 技術方案 說明 示例 最高 盡可能靜態化 對實時性要去不高的數據,盡可能全走C...
摘要:服務器性能數據庫性能網絡連接甚至編程語言都會影響并發數。但總結起來,高并發無非就是拆拆拆分分分。比如我們在多個端口配置啟動其他分庫分表合理的基本的優化,比如盡量避免全表掃描我個人理解的高并發就是,把傳統的單元操作進行拆分,分的越細致越好。 服務器性能、數據庫性能、網絡連接甚至編程語言都會影響并發數。但總結起來,高并發無非就是拆拆拆分分分。 樂觀鎖 樂觀鎖是數據庫優化的典范。即,通過對數...
閱讀 2725·2021-11-22 13:52
閱讀 1189·2021-10-14 09:43
閱讀 3646·2019-08-30 15:56
閱讀 2956·2019-08-30 13:22
閱讀 3279·2019-08-30 13:10
閱讀 1570·2019-08-26 13:45
閱讀 1105·2019-08-26 11:47
閱讀 2796·2019-08-23 18:13