1. 如何解決大並發量數據的問題
1.用一個標識,在選擇那張票的時候先用
(Update 表 set 票flag=『佔用了!』 where 票flag=『未佔用』 and ........)
這樣是保險的,不可能存在並發問題,這就牽扯到sql鎖機制問題了,你可以測試一下,其實sql中update是先查詢出然後刪除再添加,但由於使用了update,過程中就自動加鎖了,很方便吧
2.加鎖。
Microsoft® SQL Server™ 2000 使用鎖定確保事務完整性和資料庫一致性。鎖定可以防止用戶讀取正在由其他用戶更改的數據,並可以防止多個用戶同時更改相同數據。如果不使用鎖定,則資料庫中的數據可能在邏輯上不正確,並且對數據的查詢可能會產生意想不到的結果。
雖然 SQL Server 自動強制鎖定,但可以通過了解鎖定並在應用程序中自定義鎖定來設計更有效的應用程序。
2. 如何解決高並發問題
使用高性能的伺服器、高性能的資料庫、高效率的編程語言、還有高性能的Web容器,(對架構分層+負載均衡+集群)這幾個解決思路在一定程度上意味著更大的投入。
1、高並發:在同一個時間點,有大量的客戶來訪問我們的網站,如果訪問量過大,就可能造成網站癱瘓。
2、高流量:當網站大後,有大量的圖片,視頻,這樣就會對流量要求高,需要更多更大的帶寬。
3、大存儲:可能對數據保存和查詢出現問題。
解決方案:
1、提高硬體能力、增加系統伺服器。(當伺服器增加到某個程度的時候系統所能提供的並發訪問量幾乎不變,所以不能根本解決問題)
2、本地緩存:本地可以使用JDK自帶的Map、Guava Cache.分布式緩存:Redis、Memcache.本地緩存不適用於提高系統並發量,一般是用處用在程序中。
Spiring把已經初始過的變數放在一個Map中,下次再要使用這個變數的時候,先判斷Map中有沒有,這也就是系統中常見的單例模式的實現。
3. 如何處理大量數據高並發大流量並發操作方案
大數據並發處理解決方案:
1、HTML靜態化
效率最高、消耗最小的就是純靜態化的html頁面,所以盡可能使網站上的頁面採用靜態頁面來實現,這個最簡單的方法其實也是最有效的方法。但是對於大量內容並且頻繁更新的網站,無法全部手動去挨個實現,於是出現了常見的信息發布系統CMS,像常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是通過信息發布系統來管理和實現的,信息發布系統可以實現最簡單的信息錄入自動生成靜態頁面,還能具備頻道管理、許可權管理、自動抓取等功能,對於一個大型網站來說,擁有一套高效、可管理的CMS是必不可少的。
2、圖片伺服器分離
對於Web伺服器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資源的,於是有必要將圖片與頁面進行分離,這是基本上大型網站都會採用的策略,他們都有獨立的圖片伺服器,甚至很多台圖片伺服器。這樣的架構可以降低提供頁面訪問請求的伺服器系統壓力,並且可以保證系統不會因為圖片問題而崩潰,在應用伺服器和圖片伺服器上,可以進行不同的配置優化,比如apache在配置ContentType的時候可以盡量少支持,盡可能少的LoadMole,保證更高的系統消耗和執行效率。 這一實現起來是比較容易的一現,如果伺服器集群操作起來更方便,如果是獨立的伺服器,新手可能出現上傳圖片只能在伺服器本地的情況下,可以在令一台伺服器設置的IIS採用網路路徑來實現圖片伺服器,即不用改變程序,又能提高性能,但對於伺服器本身的IO處理性能是沒有任何的改變。
3、資料庫集群和庫表散列
大型網站都有復雜的應用,這些應用必須使用資料庫,那麼在面對大量訪問的時候,資料庫的瓶頸很快就能顯現出來,這時一台資料庫將很快無法滿足應用,於是需要使用資料庫集群或者庫表散列。
4、緩存
緩存一詞搞技術的都接觸過,很多地方用到緩存。網站架構和網站開發中的緩存也是非常重要。架構方面的緩存,對Apache比較熟悉的人都能知道Apache提供了自己的緩存模塊,也可以使用外加的Squid模塊進行緩存,這兩種方式均可以有效的提高Apache的訪問響應能力。
網站程序開發方面的緩存,Linux上提供的Memory Cache是常用的緩存介面,可以在web開發中使用,比如用Java開發的時候就可以調用MemoryCache對一些數據進行緩存和通訊共享,一些大型社區使用了這樣的架構。另外,在使用web語言開發的時候,各種語言基本都有自己的緩存模塊和方法,PHP有Pear的Cache模塊,Java就更多了,.net不是很熟悉,相信也肯定有。
5、鏡像
鏡像是大型網站常採用的提高性能和數據安全性的方式,鏡像的技術可以解決不同網路接入商和地域帶來的用戶訪問速度差異,比如ChinaNet和ENet之間的差異就促使了很多網站在教育網內搭建鏡像站點,數據進行定時更新或者實時更新。在鏡像的細節技術方面,這里不闡述太深,有很多專業的現成的解決架構和產品可選。也有廉價的通過軟體實現的思路,比如Linux上的rsync等工具。
6、負載均衡
負載均衡將是大型網站解決高負荷訪問和大量並發請求採用的終極解決辦法。 負載均衡技術發展了多年,有很多專業的服務提供商和產品可以選擇。
硬體四層交換
第四層交換使用第三層和第四層信息包的報頭信息,根據應用區間識別業務流,將整個區間段的業務流分配到合適的應用伺服器進行處理。第四層交換功能就象是虛IP,指向物理伺服器。它傳輸的業務服從的協議多種多樣,有HTTP、FTP、NFS、Telnet或其他協議。這些業務在物理伺服器基礎上,需要復雜的載量平衡演算法。在IP世界,業務類型由終端TCP或UDP埠地址來決定,在第四層交換中的應用區間則由源端和終端IP地址、TCP和UDP埠共同決定。
在硬體四層交換產品領域,有一些知名的產品可以選擇,比如Alteon、F5等,這些產品很昂貴,但是物有所值,能夠提供非常優秀的性能和很靈活的管理能力。Yahoo中國當初接近2000台伺服器使用了三四台Alteon就搞定了。
4. 多線程處理時,並發量過大時該如何避免伺服器崩潰
盡量使用緩存,包括用戶緩存,信息緩存等,多花點內存來做緩存,可以大量減少與資料庫的交互,提高性能。
1、用jprofiler等工具找出性能瓶頸,減少額外的開銷。優化資料庫查詢語句,減少直接使用hibernate等工具的直接生成語句(僅耗時較長的查詢做優化)。優化資料庫結構,多做索引,提高查詢效率。
2、統計的功能盡量做緩存,或按每天一統計或定時統計相關報表,避免需要時進行統計的功能。
3、能使用靜態頁面的地方盡量使用,減少容器的解析(盡量將動態內容生成靜態html來顯示)。
4、解決以上問題後,使用伺服器集群來解決單台的瓶頸問題。基本上以上述問題解決後,達到系統最優。
5. 數據量大的時候怎麼進行並發處理
先學測試吧。不是那種業務功能的測試,是系統的測試。因為要解決大數據量、高並發的問題,我個人的知識與經驗是:
1、先用單機測試。用工具產生大並發量去轟擊伺服器,直至伺服器緩慢,甚至接近崩潰;
3、找到系統瓶頸後,優化,解決這個瓶頸,然後再循環測試。這時你又會發現新的瓶頸,再解決。循環1 - 3步,直到各方面基本平衡為止。
4、當單機無法解決問題的時候,接著開始考慮負載均衡,考慮分布式方案,然後再用 1 - 3 的步驟分析與測試。
6. 客戶端請求並發量很大該如何提升程序性能
線程池
7. 為app提供api,架構該怎麼設計,需要考慮高並發,訪問量比較大
嗯吶
8. 求助,需要多線程處理時,並發量過大時該如何
這個很簡單,高並發有多種解決方法:
1、從代碼上分入手,必須得保證代碼沒有冗餘,不要有廢代碼;
2、從伺服器上入手,高並發一台伺服器並發量有限,我們可以採用多台伺服器來分擔壓力;
3、從存儲方便入手,像我們一般高並發但是數據卻可以不用存到資料庫中的,我們就存在內存中,因為讀內存的速度是資料庫的N倍。