網際網路最初,資料僅僅只是單機的mysql就能滿足需求,但隨著網際網路大資料時代的來臨,併發量也上公升了好幾個量級,因此相關高併發的解決方案也隨之誕生
主從複製,讀寫分離思想
注意:無論是垂直拆分還是水平拆分,它僅僅是一種思想
解決方案:memcached(快取)+mysql+垂直拆分
優化資料結構和索引-->檔案快取(i/o)-->memcached
因為**大多數情況下讀操作是佔比較大的一部分,所以快取處理的解決方案非常的適合,因此誕生了讀寫分離+出從複製;這也是後續提高併發的基礎
解決方案:分庫分表+mysql集群+水平拆分
解釋:就是將原本乙個表的資料分成多個,在客戶訪問時,訪問資訊也分成多個,去相應表中查,最後和成乙個完整的資訊返回個客戶端
本質:提高併發量的本質就是對讀寫進行分析
拓展:行鎖和表鎖
答:當資料量龐大時:如果是表鎖,使用者搜尋一條資料,資料庫會把整個表鎖上,知道查詢出結果後,其他程序才能去訪問當前表,而行鎖就解決了此問題
這是myisam和innodb的區別之一
表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定粒度大,發生鎖衝突的概率最高,併發度最低;
行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定粒度最小,發生鎖衝突的概率最低,併發度也最高;
當今時代不僅僅整合的以前的解決方案思想,由於當前併發量十分的龐大,比如熱點榜單,要滿足實時的高併發的讀寫操作,此時關係型(orm)資料庫已經不能滿足需求了
因此nosql被引進過來,它結構簡單(kv鍵值對),所以能很好的配置orm資料庫實現高併發的操作
nosql四大基本型別:
kv鍵值對:redis
列儲存:hbase
圖儲存:grap
文件:mongodb
非關係型資料庫,本質(解耦)
優點:
高擴充套件性(資料庫直接沒有關係,擴充套件方便)
讀寫能力強(高併發,一秒能寫8萬次,讀取11萬次,nosql)
資料型別是多樣型的(不需要事先設計資料庫,隨去隨用)
沒有固定的查尋語言(最常用:get set)
通訊網路的演進過程
首先,需要了解兩個名詞概念 無線接入網與核心網。無線接入網 負責接收使用者終端的無線訊號,由此接入到通訊網路 核心網 對使用者資料的管理及具體業務處理,並作為承載網路提供到外部網路的介面。下面,就從2g網路開始 通常,我們所說的2g網路指的就是基於gsm的網路,它的結構主要由四部分構成 移動臺ms ...
乙個簡陋的高併發請求指令碼的演進過程
因為乙個朋友最近想搞介面壓力測試,推薦了jmeter,因為jmeter開源,且有命令列啟動模式,方便封裝。興起時,自己也簡單實現了一下高併發的指令碼。一開始想到的採用的是多程序 多執行緒 協程。想法是這樣的,多程序是為了有效利用多核,理論上最好乙個核對應乙個程序比較好 那我為什麼還要用多執行緒呢?不...
資料量增大後的問題
不知不覺,公司目前執行的業務系統已經有6年之久了,生成環境中的資料庫的資料量也非常大了,達到了200多g了,有很多表的資料量已經有幾億條了。但是我們的資料庫以前設計時的id為int型別,所以這些型別的值範圍很快會用完了。所以必須要對資料庫的重新設計了,同時業務系統也需要進行了公升級優化了。int型別...