目錄
?
一,nginx
二,tomcat
tomcat中有三個容器
三,Redis
1優缺點
2關系型和非關系型的資料庫區別
3什么是事務?
4分布式鎖
5,RDB!!!!
6觸發條件
7淘汰策略
8主從復制原理
9哨兵模式原理
四,MySQL之MHA
五,keepalived
一,nginx
nignx是一個高性能的http和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務,
傳統的web服務器體系結構中,每個客戶端訪問時候都要單獨的行程或者執行緒進行處理,隨著訪問網站的人越來越多,并發連接的數量越來越大,web服務器就變得緩慢,從而降低了用戶體驗,
單獨的行程/執行緒都會消耗記憶體和CPU時間,
NGINX開發的目標是實作10倍以上的性能,優化服務器資源的使用,同時也能夠擴展和支持網站的動態增長, 因此,NGINX成為最知名的模塊化,事件驅動,異步,單執行緒Web服務器和Web代理之一,
二,tomcat
Tomcat 是由 Apache 開發的一個 Servlet 容器,實作了對 Servlet 和 JSP 的支持,并提供了作為Web服務器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等,由于 Tomcat 本身也內含了一個 HTTP 服務器,它也可以被視作一個單獨的 Web 服務器,但是,不能將 Tomcat 和 Apache HTTP 服務器混淆,
tomcat中有三個容器
web容器:我們講到servlet可以理解服務器端處理資料的java小程式,那么誰來負責管理servlet呢?這時候我們就要用到web容器,它幫助我們管理著servlet等,使我們只需要將重心專注于業務邏輯,
jsp容器:jsp容器基于web容器管理,將Java檔案翻譯成二進制檔案,系統能夠識別的語言
serverlet容器:處理客戶端的請求并填充response物件
Servlet容器實作了Container介面,在Tomcat中有4種級別的容器:Engine,Host,Context和Wrapper,
Engine:整個Catalina Servlet引擎;
Host:包含一個或多個Context容器的虛擬主機;
Context:表示一個Web應用程式,可以包含多個Wrapper;
Wrapper:表示一個獨立的Servlet;
三,Redis
1優缺點
優點:Redis基于記憶體運行并支持持久化(記憶體運行:處理高熱資料優秀,不占用多的行程)
資料讀取的速度最高可達110000次/s,資料寫入速度最高可達81000次/s
原子性:redis所有操作都是原子性的,支持資料備份,即master-salve模式的資料備份
缺點:不具自動容錯和恢復功能,資料庫容易受到物理記憶體的限制,不能作為海量資料的高熱性能讀寫,
用法:在資料庫前面做分壓,三大分為主從模式,哨兵,集群模式,是一個非關的資料庫,
2關系型和非關系型的資料庫區別
(1)存盤方式不同MySQL以記錄為行,欄位為列,形成表格方式存盤
(2)非關資料庫資料型別哈希,字串,串列等
按照擴展方式不同:
(1)關系型:水平擴展(節點擴容,可以多一個節點)資料庫中進行分庫分表
(2)非關:垂直擴展(硬體資源進行擴展CPU,磁盤,或者直接升級服務器)
Redis集群沒有使用一致性hash,而是使用了哈希槽的方式,redis集群有16384個哈希槽,每個key通過一點過演算法后,會決定放在那個槽內,(每個槽大小大概512),平均分配!!

注意:默認情況下是平均分配!!!實際生產中需要看節點性能!!
對事物的支持不同:
(1)關系型資料庫:特別適合高事務性要求和需要控制執行計劃的任務
(2)非關系:此處會稍顯弱勢,其價值點在于高擴展性和大資料量處理方面
關系型資料庫和非關系型資料庫都有各自的特點和應用場景,兩者相結合將會給web2.0的資料庫帶來新的思路,
MySQL 前置快取資料庫--》redis
為前端服務快取一些后臺--》為nginx快取圖片(就是i/o和網路資源壓力大點)
MySQL 高熱資料庫 --》redis
ps:非關資料庫不需要手動創建資料庫和集合(本身非關資料庫中含有0-15,一共16個數)
redis服務器程式是單行程還是多行程
采用epull機制執行單行程實行高并發的一個操作,但是redis在提高高并發處理能力時候,會給服務器的cpu造成很大壓力,生產中建議開啟2個行程:
1備份
2抗高并發的同時盡量不給cpu造成壓力
3什么是事務?
事務就是一個單獨的隔離操作:事務中所有的命令都會被序列化,按照順序執行,執行程序中,不會被其它客戶端發來的資訊打斷,
Redis 事務的本質是通過MULTI、EXEC、WATCH等一組命令的集合,事務支持一次執行多個命令,一個事務中所有命令都會被序列化,在事務執行程序,會按照順序串行化執行佇列中的命令,其他客戶端提交的命令請求不會插入到事務執行命令序列中,
總結說:redis事務就是一次性、順序性、排他性的執行一個佇列中的一系列命令,

客戶在訪問程序中,由于網頁沒有加載,客戶不停的重繪,會建立相同的會話,訪問redis時候,會出現重復的會話,可以對redis做session會話池控制,
redis有豐富的特性-redis還支持publish(發布訊息)/subscribe(訂閱),通知,設定key有效期等特性,
redis概念穿透,擊穿,雪崩
4分布式鎖

一個行程進來后,第一條執行緒會在redis中處理,此時會在第一條地方加一個鎖,防止后面的行程進入導致擁塞,這邊有個watch dog監控鎖,如果請求處理完,會自動解鎖(比如30s之后自動斷開,鎖的自動釋放時間),如果規定時間沒有處理完,watch dog不會解鎖,等待完成手動或者自動執行解鎖,再放入下一個行程進行處理,
核心技術:setnx+分布式鎖
5,RDB!!!!

一旦觸發save,子行程的所有任務都會被阻塞
觸發方式:
1手動觸發:直接執行bgsave持久化命令
2自動觸發:按照規定周期執行的陳述句的數量來觸發,組態檔中例如save m n -----》save 90 10
bgsave執行時,會控制RDB紫禁城再執行的位置創建.rdb檔案,特性是,RDB持久化生產的檔案,只記錄的結果
有點偏于全量備份,為了提高處理速度和減少落地在磁盤中占用體積,RDB的資料會進行壓縮處理,
記憶體中資料消失了,一旦資料加載失敗,會啟動失敗
特殊的觸發方式:主動的關閉redis,但RDB持久化優先級較低
應用場景:
1主動關閉時,觸發RDB(redis 默認開啟RDB)
2主從復制時,master同步給SLAVE時,,會觸發RDB(全量復制),然后觸發AOF的增量復制
3在redis重啟時,當AOF未開啟時候,才會基于RDB檔案進行恢復資料,運行redis,

追加的是每一天追加記錄,把緩沖區的資料同步到磁盤中,再加以持久化,
6觸發條件
1always 每產生一條,就同步一條 可能造成資料壓力大,導致頻繁的寫入,每寫到緩沖區導致i/o占用過大,
還有追加部分導致緩沖區爆滿,同步率變低,(生產中幾乎不用)
2no 不自動觸發
3everysecond 每秒同步一次 在一定層度上可以減少壓力,但也可能導致緩沖區爆滿
再redis前面分流:
1令牌桶演算法(就是一個桶放慢令牌,一次打給能放100個令牌,設定放令牌速度決定通過)
2漏桶演算法(容量100,會填充,可以控制填充和下落速度),限流,
3防火墻控制流量或者次數
4 lru演算法,控制再記憶體中高熱資料的保存時間(redis在作為MySQL快取資料庫時候,存的都是高熱資料,)
7淘汰策略
默認是惰性洗掉
隨即淘汰
淘汰近期命中較少的資料 隨著時間的推移,命終值會減少,所謂的資料中,在做高熱資料的前提下是或者,套題近期命中較少的資料(相對而言不是重要的資料),
定期洗掉————》保證兩種持久化完成的情況下,同時業務不繁忙/終止業務的時候,洗掉為了解決快取壓力過功能模塊:AOF的持久化,
8主從復制原理

9哨兵模式原理
1哨兵是有自己的組態檔,只要去指向master節點IP時候就可以了
2哨兵節點會和配置的主節點建立起兩條連接命令連接和訂閱連接
PS:redis發布訂閱(pub/sub)是一種資訊通信模式:發送者發訊息,訂閱者接收訊息
3哨兵會通過命令連接每10s發送一次INFO命令,通過INFO命令,主節點會回傳自己的run_id和自己的從節點資訊,
4哨兵會對這些從節點建立兩條連接命令,連接和訂閱連接
5哨兵通過命令連接向從節點發送INFO命令,獲取到他的一些資訊:
run id(redis服務器id)
role(職能)
從服務器的復制偏移量offset
其它
6通過命令連接向服務器的sentinel:hello頻道發送一條資訊,內容包括自己的IP埠,run_id,配置(后續投票的時候會用到等)
7通過訂閱連接物件服務器的sentinel:hello頻道做了監聽,所以所有的向該頻道發送的哨兵的訊息都能被接受到
8決議監聽到的訊息,進行分析提取,就可以知道還有哪些別的哨兵服務節點也在監聽這些主從節點了,更新結構體將這些哨兵節點記錄下來
9向觀察到的其他的哨兵節點進行監聽
四,MySQL之MHA
它為 MySQL主從復制架構提供了 automating master failover (自動化主故障轉移)功能,MHA 在監控到 master 節點故障時,會提升其中擁有最新資料的 slave 節點成為新的master 節點,在此期間,MHA 會通過于其它從節點獲取額外資訊來避免一致性方面的問題,MHA 還提供了 master 節點的在線切換功能,即按需切換 master/slave 節點,
五,keepalived
keepalived是基于vrrp協議的一款高可用軟體,keepalived有一主服務器和多臺備份服務器,在主和備上部署相同的服務配置,當諸如武器出現故障,虛擬IP地址會自動漂移到備份服務器,
VRRP(虛擬路由器冗余協議)
VRRP是為了解決靜態路由的高可用,
1,資料庫概念(讀取方式)
臟讀:事務A可以讀到事務B修改過還沒提交的資料,此時事務B一旦回滾,事務A再次讀就讀不到了,
幻讀:a和b都在讀取資料庫,a進行更改資料庫保存,b按照相同的路徑再讀取的時候會發現多出來一些內容,
不可重復讀::一個事務先后讀取同一條記錄,而事務在兩次讀取之間該資料被其它事務所修改,則兩次讀取的資料不同,我們稱之為不可重復讀,
2,資料庫事務的四大特性
(1)原子性:事務包含的所有資料庫操作要么全部成功,要么全部失敗回滾
(2)一致性:一盒事務執行之前和執行后都必須處于一致狀態,
(3)隔離性:事務的隔離性是多個用戶并發訪問資料庫時,資料庫為每一個用戶開啟的事務,不能被其他事務的操作資料所干擾,多個并發事務之間要相互隔離,
(4)持久性:一個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來即使資料庫發生故障也不應該對其有任何影響,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/396158.html
標籤:其他

