資料庫的讀寫分離,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開啟主從複製
也可以加哨兵,哨兵就是監控,保證主機的存活,
哨兵開始幹活,他不斷的監控,監控出了問題,他會自動切換,怎麼切換,兄弟們咱們的隊長沒了,不能沒有隊長,從三個從庫裡面用投票選舉發擇出乙個作為主庫,這樣的話,選出乙個作為主庫,從庫就變成兩個,另外兩個從庫就連上了他,master的位址就變成這台電腦,哨兵幫他變位址,無論主庫和從庫都鏈結有哨兵只要他監控到,他選擇的主庫,兩外就是從庫,原來那個主庫就自動變成了從庫,如果崩了,就變不成從庫了,因為他就連不了,自動該配置檔案,哨兵改的,如果三個主庫都崩了,那運維就。。。,只有主庫有問題運維一點會發現,運維是搭建環境和監控的,監控每台伺服器執行的狀態,不可能出問題才報警,只有到預警值就報警了,運維就該處理了,大屏,郵件,短接通知,找原因,準備備用機,主機是不放在一起的,避免他們一起出問題,保障系統有效穩定的執行,這就是哨兵的作用。一台肯定有極限,那就搭建集群,多主多從10配90 這種集群成本是不可想象的,一台redis伺服器至少4核8g記憶體,一年成本將近一萬多,搭建100多台redis要100多萬,redis要100多萬,這個專案至少1000多萬,資料很大,mysql也要搭建集群,硬體就不少錢了,應用伺服器都是錢,一般專案用不到,這種專案不可能做外包,只會做自研,後期還要維護,小專案,或者其他專案
redis可以搭建集群 一般都是運維做的,量太大了
elasticsearch快速搜尋,海量儲存 可以用elasticsearch伺服器
如果單機不夠,也可以搭建集群成本更高,伺服器要求高
資料三大件, 減輕mysql壓力,三者資料相互互動,高併發專案這幾個技術就夠用了。
資料庫儲存
sqlite資料庫儲存 android 系統竟然是內建了資料庫的,sqlite 是散輕量級的關係型資料庫,它的運算速度非常快,古用資源很少,通常只需要幾百kb的記憶體就足夠了,因而特別適合在移動裝置上用。sqlite不僅支援標準的sol語法,還遵循了資料庫acid事務,所以只要你以前使用過其他的關係...
資料庫的儲存過程
什麼是儲存過程,儲存過程的作用及好處 儲存過程 stored procedure 是一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫。中使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是sql 語句和可選控制流語句的預編譯集合,以乙個名稱儲存並作為乙個單元...
資料庫的儲存過程
儲存過程?這個說的真不是乙個過程,它是一組為了完成特定功能的sql語句集,在初次建立時編譯一次,之後呼叫就不需要編譯,使用者通過指定儲存過程的名字以及給出相關引數來執行。寫個小離子 create procedure process p id int,p total int output assele...