天天看點

資料庫的資料存儲

資料庫的讀寫分離,mysql(完整資料)

主庫是寫庫,從庫是讀庫 因為正常的産品,查詢的情況大于存儲的情況,寫入伺服器可以少加幾台,讀取的可以多加幾台,合理的适配資源,二八定則

如何實作session共享 ?

因為分布式開發才存在session共享,一個服務部署在多個伺服器上,session在伺服器内部記憶體裡,一個項目部署在三台機器上,每台機器上都有個session都能互動?不能,應為seesion存在單台伺服器的記憶體裡,使用者通路,登陸的時候通路了A機器,在A機器完成登陸後,把令牌存在了session中,隻是把令牌存在了一台機器上,第二次又來請求,随機配置設定在了第二台機器上,第二台機器沒有這個session,那就沒有登陸,這樣情況不合适,在分布式中沒法用session,但是我就想用,可以用redis,

怎麼用redis實作分布式下session的共享呢

redis,你通路A機器,要用session,session存資料,把資料存在redis裡面,記下sessionid,資料還是 存在redis裡面,你在請求第二台機器,第二台機器建立session,然後就不建立session去redis裡面取,redis就一份,搭建叢集資料也就一份,是以就導緻,把session的資料存到redis裡面,是以session現在用的就少了,我既然把資料存入到redis裡面了,我還用啥session,是以現在開發裡主要直接就拿redis用,是以session現在用的就少了,這也就面僅僅作為面試題

目前工作中 現在主要用令牌,登陸後産生令牌,把令牌标記存在redis中,同時把令牌傳回給前端,前端把令牌記下來,無論把你配置設定到哪台機器上無所謂,你配置設定到那台機器上都帶令牌,你帶令牌我去redis裡面校驗擷取,能校驗成功說明令牌有效,校驗不成功說明令牌無效,你已經登出了,是以你無論通路那台機器都無所謂,這是目前解決的方案

redis(緩存,重複通路的資料,共享資料,有效期資料 )

單機抗不住,可以主從複制 其實很多公司的redis都是單機的,小公司一台redis就夠用了,外包公司沒啥資料 外包公司不負責研發和維護項目

單機不夠加主從複制,主從複制就是在配置檔案中,masterselver開啟主從複制

也可以加哨兵,哨兵就是監控,保證主機的存活,

怎麼保證主庫存活呢?搭建主從複制時,是一主配三從,一個主庫配置三個從庫,有可能主庫崩了,怎麼辦,如果沒有哨兵,崩了就是崩了,主庫一般是寫庫,從庫一般是讀庫,為啥從庫多,主庫少呢,日常的請求是查詢多,寫入少,比如今天這件商品浏覽了很多次,就是沒有下單,那今天都是查詢,下單的機率很低,這就要求我們的查詢資料庫要多一點,查詢庫一般叫讀庫,一般隻負責讀取,那就用從庫代替,一般主庫少從庫多原因在這裡,那麼一主配三從,那如果主庫崩了,那就沒法寫東西了,那沒法寫東西就有問題了,那怎麼辦呢,redis官方給了一種解決方案叫哨兵,哨兵,比如,找個人一直監視着,不斷的巡視,哨兵就是監控,監控資料庫是否正常運作,心跳連結 它間隔5s給主庫發一次消息,主庫回複消息,如果主庫沒有回複消息,說明主庫有可能挂了,然後他在發一次消息,确認下,還是沒有消息,那主庫就是挂了,然後它給是以的從庫發消息,你們聯系主庫,給我個響應,他們也聯系不上,就說明主庫崩了,崩了怎麼辦?

哨兵開始幹活,他不斷的監控,監控出了問題,他會自動切換,怎麼切換,兄弟們咱們的隊長沒了,不能沒有隊長,從三個從庫裡面用投票選舉發擇出一個作為主庫,這樣的話,選出一個作為主庫,從庫就變成兩個,另外兩個從庫就連上了他,master的位址就變成這台電腦,哨兵幫他變位址,無論主庫和從庫都連結有哨兵隻要他監控到,他選擇的主庫,兩外就是從庫,原來那個主庫就自動變成了從庫,如果崩了,就變不成從庫了,因為他就連不了,自動該配置檔案,哨兵改的,如果三個主庫都崩了,那運維就。。。,隻有主庫有問題運維一點會發現,運維是搭建環境和監控的,監控每台伺服器運作的狀态,不可能出問題才報警,隻有到預警值就報警了,運維就該處理了,大屏,郵件,短接通知,找原因,準備備用機,主機是不放在一起的,避免他們一起出問題,保障系統有效穩定的運作,這就是哨兵的作用。一台肯定有極限,那就搭建叢集,多主多從10配90 這種叢集成本是不可想象的,一台redis伺服器至少4核8G記憶體,一年成本将近一萬多,搭建100多台redis要100多萬,redis要100多萬,這個項目至少1000多萬,資料很大,mysql也要搭建叢集,硬體就不少錢了,應用伺服器都是錢,一般項目用不到,這種項目不可能做外包,隻會做自研,後期還要維護,小項目,或者其他項目

redis可以搭建叢集 一般都是運維做的,量太大了

ElasticSearch快速搜尋,海量存儲 可以用ElasticSearch伺服器

如果單機不夠,也可以搭建叢集成本更高,伺服器要求高

資料三大件, 減輕mysql壓力,三者資料互相互動,高并發項目這幾個技術就夠用了。