1. 程式人生 > >tengine整合tomcat加上memcached實現高併發、負載均衡、可擴充套件架構

tengine整合tomcat加上memcached實現高併發、負載均衡、可擴充套件架構

1、高可用、負載均衡、可擴充套件架構的需要背景

2、系統架構

3、系統規劃及說明

4、系統部署及測試

5、總結

1、高可用、負載均衡、可擴充套件架構的需要背景

    從網際網路誕生以來,網站架構隨著網際網路的快速發展發生著巨大的變化,現今,資料每天都在以爆炸式的增長,大資料、雲端計算等概念被業內炒得沸沸揚揚,這些前沿技術也在各行各業落地開花。每一種新技術的提出幾乎都會或多或少影響著IT的基礎架構,面對資料的快速增長、我們急需一套高可用、負載均衡、可擴充套件的架構來作為支撐。

2、系統架構

    此次博文介紹一套高可用、負載均衡、可擴充套件的系統架構方案,此方案能滿足多數企業需要,並能隨著業務的變化進行系統擴充套件,並儘量避免單點故障,發架設在此係統上的應用能實現365*7*24服務不中斷。架構上對應用進行了拆分,如下的架構圖:

技術分享

第一層:負載均衡層,此層是使用者的入口,此處的伺服器擔任director的角色,它把使用者的請求根據其排程演算法排程到後端的伺服器上,能勝任排程器的開源軟體有LVS、Haproxy、Nginx、Tengine等,為了避免單點故障,director需要做高可用,在開源軟體有Hertbeat、keepalived等;

第二層:web應用層,這一層是部署具體web應用的,一般常見的web應用有httpd、php、tomcat、nginxt等,這個層次把具有各種不同的運用劃分成一個組,這個組能提供相同的web服務,配合第一層就能實現負載均衡和故障隔離的效果;

第三層:資料庫層,這裡是在提供動態站點時程式與資料庫互動資料的地方,在這個層次上一般所用的開源軟體有mysql、mariadb、redis、nosql類的資料庫等,資料庫的設計上也應該考慮到高可用性,負載均衡功能,比如mysql的主從架構,MMM架構,或為了實現讀寫分離,引入中介軟體淘寶的amoeba、奇虎360的Atlas;

第四層:分散式檔案系統層,這個系統主要是為解決web應用資料共享的,當然資料庫層中需要持久化的資料也可以放在分分散式檔案系統中,開源軟體有MooseFs、MgileFS、GlusterFS、FastDFS、GFS、TFS等。

如果網站隨著使用者的增多,web應用伺服器和資料庫伺服器的壓力越來越大,那就需要考慮加入快取層,在web應用程式前端可加入快取web靜態資料的快取層,開源解決方案有squid、varnish、ats等,ats是yahoo向ASF貢獻的一個專案;在資料庫層的前端也可加入快取層,用來快取web應用程式從資料庫中查詢的資料,可以把查詢的sql語句和結果存放在一個快取中,一般所用的服務是memcached。

3、系統規劃及說明

    此次博文不會把涉及系統部署的全部過程都描述,只是把重要的部分進行記錄與講解。

此次測試中所使用的伺服器資訊整理如下表:

技術分享

說明:此次用兩主機配置成tomcat容器提供jsp程式的執行環境,並且在主機上安裝httpd,用反向代理的方式向前端的tengine反向代理提供服務,測試環境中mysql伺服器只有規劃了一臺,在實際生產環境下請用主從架構或MMM等有架構,nod1和nod2主機上還部署了memcached服務,它主要是在為了給tomcat中的session資訊作高可用的,此次採用是MSM(Memcached Session Manager)方案實現tomcat中對session的高可用;nod3與nod4利用tengine提供反向代理的功能,keepalived實現tengine的高可用,以避免單點故障。

4、系統部署及測試

    雖說在系統部署上沒有嚴格要求有什麼先後順序,但按照一定的順序來部署會讓工作變得簡單有序,這讓你對整個專案有了全域性觀,對專案管理人員來說能更好的協調人員,能更好的掌握控制專案的進度。一般按照以下順序來部署:

a)、部署分散式檔案系統,此次博文不討論這部分;

b)、資料庫系統部署;

c)、應用伺服器部署;

d)、director部署;

當然有些是有交集的,但基本要遵循“先後端再前端”的大原則,即先部署後端的服務應用,再去部署前端面的服務和應用。

4.1、分散式檔案部署

    這個可以根據自己熟悉的開源系統來部署。MooseFS是一個不錯的選擇。部署過程此博文不討論,略。。。。

4.2、資料庫及memcached部署

資料庫搭建好後,建立一個供測試的資料庫,並建立一個使用者供測試站點的使用。

memcached直接用yum源中進行安裝(nod1與nod2安裝方式相同):

[[email protected] ~]# yum -y install memcached
[[email protected] ~]# service memcached start
[[email protected] ~]# netstat -tnl | grep 11211
tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      
tcp        0      0 :::11211                    :::*                        LISTEN

4.3、apache+tomcat部署

nod0與nod2上tomcat與httpd的部署相同,只是在配置引數上有點不同。

jdk安裝配置:

[[email protected] msm]# pwd
/root/software/msm
[[email protected] msm]# rpm -ivh jdk-8u45-linux-x64.rpm
[[email protected] msm]# vim /etc/profile.d/java.sh
JAVA_HOME=/usr/java/jdk1.8.0_45
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME
[[email protected] msm]# source /etc/profile.d/java.sh
[[email protected] msm]# java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

tomcat安裝配置:

[[email protected] msm]# tar -xf apache-tomcat-7.0.62.tar.gz -C /usr/local/
[[email protected] local]# ln -sv apache-tomcat-7.0.62 tomcat
[[email protected] local]# vim /etc/profile.d/tomcat.sh
CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
export CATALINA_HOME
[[email protected] local]# source /etc/profile.d/tomcat.sh
[[email protected] local]# catalina.sh version
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_45
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.62
Server built:   May 7 2015 17:14:55 UTC
Server number:  7.0.62.0
OS Name:        Linux
OS Version:     2.6.32-358.el6.x86_64
Architecture:   amd64
JVM Version:    1.8.0_45-b14
JVM Vendor:     Oracle Corporation
[[email protected] msm]# vim /etc/rc.d/init.d/tomcat   #服務指令碼
#!/bin/sh
#Description: This shell script manage apache tomcat.
#Author: zhaochj
#Time: 2015-4-21
#Version: 1.0
case $1 in
    ‘start‘)
        /usr/local/tomcat/bin/catalina.sh start
        ;;
    ‘stop‘)
        /usr/local/tomcat/bin/catalina.sh stop
        ;;
    ‘restart‘)
        /usr/local/tomcat/bin/catalina.sh stop
        sleep 3
        /usr/local/tomcat/bin/catalina.sh start
        ;;
    *)
        echo "Usage:`basename $0` {start|stop|restart}"
        exit 1
        ;;
esac
[[email protected] msm]# chmod +x /etc/rc.d/init.d/tomcat

至此,jdk與tomcat安裝完畢。

配置server.xml檔案,使其再提供一個<Service>元素,這個不是必須,我只是為了保留原始server.conf的配置,通過增加一個<Service>元素可以讓tomcat以一種協議監聽在不同的埠,而tomcat例項又只有一個,在配置資料夾的</Service>後增加如下程式碼:

<Service name="Catalina2">
    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8444" />
        <Engine name="Catalina2" defaultHost="192.168.0.200" jvmRoute="jvm200">
            <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                   resourceName="UserDatabase"/>
            </Realm>
              <Host name="192.168.0.200"  appBase="/tomcat/app"
                    unpackWARs="true" autoDeploy="true">
                  <Context path="" docBase="mysite"/>
                  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                         prefix="nod0_access_log." suffix=".txt"
                         pattern="%h %l %u %t &quot;%r&quot; %s %b" />
              </Host>
        </Engine>
  </Service>

這個<Service>中擁有自己的http聯結器,自己的虛擬主機,為了安全可以把預設的聯結器註釋掉,也可用mod_jk的方式通過ajp13協議與tomcat結合,但我在嘗試這樣做時,用mod_jk模組能夠正常載入,但就是無法發現後端tomcat中的“jvmRoute=jvm200”引擎,所以才用proxy_module中的proxy_http_module的方式與tomcat整合。

配置tomcat,使其成為MSM環境:

[[email protected] msm]# ls msm_kryo_serializers/
asm-3.2.jar                memcached-session-manager-1.8.3.jar      msm-kryo-serializer-1.8.3.jar
kryo-1.04.jar              memcached-session-manager-tc7-1.8.3.jar  reflectasm-1.01.jar
kryo-serializers-0.11.jar  minlog-1.2.jar                           spymemcached-2.11.1.jar

把這些jar包全部拷貝到$CATALINA_HOME/lib目錄下

[[email protected] msm]# scp msm_kryo_serializers/* /usr/local/tomcat/lib/

再去編輯$CATALINA_HOME/conf/context.xml檔案,使其配置memcached的相應功能(這裡是以粘性的session的方式配置)

[[email protected] msm]# vim /usr/local/tomcat/conf/context.xml
<Context>
......
<!-- sticky session.-->
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
             memcachedNodes="memcached1:192.168.0.201:11211,memcached2:192.168.0.202:11211"
             failoverNodes="memcached1"
             requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
             transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
....
</Context>

最後把jsp測試程式拷貝到server.xml配置檔案中虛擬主機的網站目錄“/tomcat/app/mysite”下,這次測試我用的是shopxx這個jsp程式。

一切準備好後就可以記動tomcat進行測試站點的安裝了。這裡我是把tomcat中該配置的都配置完後再啟用的tomcat,其實在真正的實施過程中,你應該每修改一次配置檔案你都要一邊監控著日誌輸出,再去啟用tomcat服務,看啟動的過程中是否有警告、錯誤的資訊,不要等你把配置檔案修改得過多,一啟動服務報錯,而報的錯又不是很好定位時,那你就只能慢慢排查了,然而,當我更改了一部份配置檔案,只要此修改會改變tomcat的執行屬性,那我就去啟動一下tomcat,看日誌是否有問題,沒有問題再去做別的修改,這樣即使有問題也比較好排查。

httpd反向代理tomcat部分:

先註釋掉中心主機,即在http.conf配置檔案中註釋掉“DocumentRoot /var/www/html”這一行,再啟用一箇中心主機配置檔案

[[email protected] msm]# vim /etc/httpd/conf.d/virtual.conf 
<VirtualHost *:80>
    DocumentRoot /tomcat/app/mysite
    ServerName www.test.com
    ProxyVia Off
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8081/
    ProxyPassReverse / http://127.0.0.1:8081/
</VirtualHost>

經過上邊對tomcat與httpd的配置後,開啟瀏覽器直接訪問"http://nod0ipaddress"就可以訪問我們部署的網站。

在另外的nod2節點上也按照上邊的操作進行配置,只是有幾點值得注意,如果是以mod_jk的方式反向代理tomcat,那server.xml中的"jvmRoute="jvm200""這裡的值可不能與nod0上配置一樣,還有這是nod2上jsp網站程式的安裝問題,直接把nod0上的已安裝過的站點程式拷貝過來就行了,不要再試著去連線資料進行安裝(這樣是錯誤的操作)。

4.4、Tengine+Keepalived部署

    taobao對nginx做了眾多的改進,在nginx中有些需要打第三方補丁才能實現的功能,而Tengine自身就自帶了,還有在nginx的wiki中明明看到能使用的指令,但你配置後,語法檢測是無法通過的,如果檢查語法無誤後,那這個指令只供商業訂閱才支援的,只是在官方wiki中沒有說明,老版本的文件中有此說明,不過好在都可以通過一些第三方模組實現相應的功能。而Tengine就不樣,沒有商業訂閱這一說,而且Tengine還引進了更好的記憶體管理機制,即jemalloc,所以你完全可以選擇Tengine來代替nginx。

[[email protected] tengine]# pwd
/root/software/tengine
[[email protected] tengine]# tar -xf jemalloc-3.6.0.tar.bz2 -C /usr/local/   #jemalloc只需要解壓出來,不需要安裝
[[email protected] tengine]# yum -y install pcre-devel gd-devel  #先處理依賴關係
[[email protected] tengine]# tar xf tengine-2.1.0.tar.gz
[[email protected] tengine]# cd tengine-2.1.0
[[email protected] tengine-2.1.0]# ./configure --prefix=/usr/local/tengine \ 
--sbin-path=/usr/local/tengine/sbin/nginx --conf-path=/etc/tengine/nginx.conf --error-log-path=/var/log/tengine/error.log --http-log-path=/var/log/tengine/access.log --pid-path=/var/run/tengine.pid --lock-path=/var/lock/subsys/tengine --user=nginx --group=nginx --with-file-aio --with-http_ssl_module --with-http_spdy_module --with-http_image_filter_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_image_filter_module=shared --with-http_sub_module=shared --with-http_flv_module=shared --with-http_mp4_module=shared --with-http_rewrite_module=shared --with-http_fastcgi_module=shared --http-client-body-temp-path=/var/tmp/tengine/client --http-proxy-temp-path=/var/tmp/tengine/proxy --http-fastcgi-temp-path=/var/tmp/tengine/fastcgi --http-uwsgi-temp-path=/var/tmp/tengine/uwsgi --with-pcre --dso-path=/usr/local/tengine/dsomodule/dso --dso-tool-path=/usr/local/tengine/dsomodule/dsotool --with-jemalloc --with-jemalloc=/usr/local/jemalloc-3.6.0
[[email protected] tengine-2.1.0]# make
[[email protected] tengine-2.1.0]# make dso_install
[[email protected] tengine-2.1.0]# make install
[[email protected] tengine-2.1.0]# mkdir -pv /var/tmp/tengine/{proxy,fastcgi,uwsgi}
[[email protected] tengine-2.1.0]# /usr/local/tengine/sbin/nginx -v
Tengine version: Tengine/2.1.0 (nginx/1.6.2)

編譯配置檔案,例其成為反向代理伺服器:

[[email protected] tengine-2.1.0]# vim /etc/tengine/nginx.conf  #配置檔案中確保有以下程式碼
......
http {
.......
    upstream be_server1 { 
        consistent_hash $request_uri; 
        server 192.168.0.200:80 id=1000 weight=1;
        server 192.168.0.202:80 id=1001 weight=1;
        check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        check_http_send "HEAD / HTTP/1.0\r\n\r\n";
        check_keepalive_requests 100;
        check_http_expect_alive http_2xx http_3xx;
        }
    server {
        listen 80;
        servern_ame www.test.com;
        location / {
            proxypass / http://be_server1;
            }
        location /status {
            check_status;
            access_log off;
            allow 192.168.0.0/24;
            deny all;
        }
    }
........
}

註釋:tengine在upstream模組中引進了一致性hash演算法來實現對上游伺服器的負載均衡,nginx好像只有ip hash,least_conn、sticky cookie三種方式。

配置好後就可以啟動tengine

[[email protected] tengine-2.1.0]# /usr/local/tengine/sbin/nginx   #啟動tengine
[[email protected] tengine-2.1.0]# /usr/local/tengine/sbin/nginx -t  #測試配置檔案
[[email protected] tengine-2.1.0]# /usr/local/tengine/sbin/nginx  -s {stop|quit||reopen|reload|}

測試通過訪問tengine的IP看能否訪問到我們在tomcat上部署的網站,還可以打來tengine的狀態頁面檢視上游伺服器的狀態,如下:

技術分享

以同樣的方法在nod4上完成部署。

最後來部署keepalived讓tengine具有高可用性:

[[email protected] ~]# yum -y install keepalived  #以yum方式安裝
[[email protected] ~]# rpm -qa keepalived
keepalived-1.2.13-5.el6_6.x86_64
[[email protected] ~]# vim /etc/keepalived/keepalived.conf

保配置檔案中有以下程式碼,主要是vrrp_instance例項的程式碼段

! Configuration File for keepalived
global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id TENGINE_203
}
 
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 123
    priority 180
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.111
    }
}

而nod4中的程式碼段如下:

[[email protected] keepalived]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id TENGINE_204
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 123
    priority 179
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.111
    }
}

兩個節點的keepalived配置好後就啟動keepalived服務,虛擬Ip應該是配置在MASTER節點上的,測試時把MASTER節點的keepalived服務關閉,再觀察虛擬ip是否會被BACKUP節點搶佔。

5、總結

    此套系統部署完後,有以下優點:

a)、使用者的接入端面實現了高可用,一個負載均衡器出現故障不會影響業務;

b)、web應用層可根據訪問壓力伸縮伺服器;

c)、資料庫層如果壓力大了,只要jsp程式支援,可以加memcached快取緩解mysql的壓力,如果多讀壓力還大時,如果後端伺服器的讀壓力還是大,那就加讀寫分離的中介軟體;

d)、分佈檔案系統也可隨著業務的變化而進行擴容、減容。

最後此套系統還差一套報警監控系統,時時監控各伺服器的執行狀態,一旦有伺服器負載過高或發生宕機,可以直接通知管理人員,以便處理故障。

監控可以從以下幾個維度來描述:

第一、上班時間可以開啟一個監控頁面時時檢視;

第二、開啟郵件客戶端,定時重新整理以收取報警郵件;

第三、下班後手機24小開機,可以通過簡訊貓的形式接收報警簡訊。

相關推薦

tengine整合tomcat加上memcached實現併發負載均衡擴充套件架構

1、高可用、負載均衡、可擴充套件架構的需要背景 2、系統架構 3、系統規劃及說明 4、系統部署及測試 5、總結 1、高可用、負載均衡、可擴充套件架構的需要背景     從網際網路誕生以來,網站架構隨著網際網路的快速發展發生著巨大的變化,現今,資料每天都在以爆

lvs+keepalived+memcached+varnish+LNMP 實現可用的負載均衡排程伺服器

實驗環境: web1 :eth0 192.168.4.11     web2 : eth0192.168.4.12    兩臺web伺服器需要配置VIP                    排程器Lvs1: eth0 192.168.4.5    排程器Lvs2: eth

Redis實現併發下的搶購秒殺功能

歡迎大家關注我的其他Github部落格和簡書,互相交流! 博主最近在專案中遇到了搶購問題!現在分享下。 搶購、秒殺是如今很常見的一個應用場景,主要需要解決的問題有兩個: 1 高併發對資料庫產生的壓力 2 競爭狀態下如何解決庫存的正確

Keepalived+Nginx+Redis+Tomcat實現可用web負載均衡

一、系統環境 作業系統:CentOS 7 tomcat 8.0.47 Nginx 1.12.2 Redis 4.0.2 192.168.124.128 tomcat1+Nginx+Redis 192.168.124.130 tomcat2

Nginx + Memcached 實現Session共享的負載均衡

new 解決 class read 庫存 sta 簡單 登錄 dma session共享   我們在做站點的試試,通常需要保存用戶的一些基本信息,比如登錄就會用到Session;當使用Nginx做負載均衡的時候,用戶瀏覽站點的時候會被分配到不同的服務器上,此時如果登錄後S

nginx反向代理tomacat+keepalived實現動靜分離負載均衡可用

時間 超時 error css 權限命令 上傳 轉發 onf ioc 本文的動靜分離主要是通過nginx+tomcat來實現,其中nginx處理圖片、html、JS、CSS等靜態文件,tomcat處理jsp、servlet等動態請求 服務器名稱

lvs+keepalived+nginx實現性能負載均衡集群 性能jsp集群

檢查 檢測 查詢 ref status onf tsp download inux LVS-master:192.168.254.134LVS-backup:192.168.254.135LVS-VIP:192.168.254.88nginx+tomcat:192.168.

Tomcat一步步實現反向代理負載均衡記憶體複製

Tomcat是一個開源的Java EE伺服器,想弄明白其中原理還有很長路要走,但是對於有Apache,Nginx經驗的我們來說部署它還是沒有問題的,下面我們來一步步的構建這些基本的功能吧。 實驗環境:rhel 5.8,SElinux已經關閉 一.構建一個基

Keepalive+Amoeba+Mysql 實現可用,負載均衡及讀寫分離

一:實驗環境   寫:寫入的介面是keepalive配置的虛擬IP(192.168.1.60),而這個VIP指向雙主複製中的兩個節點。 讀:slave1(該slave1指向的是master1)。 二:實驗目的 Master1與master2實現高可用,master1

什麼是分散式併發叢集負載均衡可用

網圖 是指將不同的業務分佈在不同的地方(應用伺服器)。 叢集cluster: 一群機器的集合。 負載均衡(叢集):(Load balance cluster, LBC) (負載均衡器)根據規則(平均)分配各請求到一個叢集各個機器。 高可用(叢集):(H

keepalived+nginx+mysql實現可用及負載均衡

最近搗鼓了一下mysql資料庫的高可用方案。藉助mysql官方的InnoDB Cluster 以及nginx+keepalived。能夠輕易的做到。效果及穩定性令人滿意。 前言: 首先這裡預設你已

java併發負載均衡

一個小型的網站,比如個人網站,可以使用最簡單的html靜態頁面就實現了,配合一些圖片達到美化效果,所有的頁面均存放在一個目錄下,這樣的網站對系統架構、效能的要求都很簡單,隨著網際網路業務的不斷豐富,網站相關的技術經過這些年的發展,已經細分到很細的方方面面,尤其對於大型網站

分散式架構學習之:Keepalived+Nginx實現可用Web負載均衡

一、場景需求 二、Keepalived 簡要介紹 Keepalived 是一種高效能的伺服器高可用或熱備解決方案,Keepalived 可以用來防止伺服器單點故障的發生,通過配合 Nginx 可以實現 web 前端服務的高可用。 Keepalived 以 VRRP

主題:分散式架構可用架構_Keepalived+Nginx實現可用Web負載均衡

一、場景需求 二、Keepalived 簡要介紹 Keepalived 是一種高效能的伺服器高可用或熱備解決方案,Keepalived 可以用來防止伺服器單點故障的發生,通過配合 Nginx 可以實現 web 前端服務的高可用。 Keepalived 以 VRRP

15套java互聯網架構並發集群負載均衡可用數據庫設計緩存性能優化大型分布式 項目實戰視頻教程

二階 並發 支持 線程並發 important http 系統架構 四十 mongodb入門 * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架構師、集群、高可用、高可擴

分布式集群負載均衡可用的概念

活性 百萬 ava RF lan 最好 壓力 消息傳遞 我們 分布式(不一定有集群):   是指將不同的業務分布在不同的地方(應用服務器)。 集群cluster: 一群機器的集合。 負載均衡(集群):(Load balance cluster, LBC)

dubbo可用之zookeeper宕機Dubbo直連負載均衡服務降級叢集容錯

之前我們說了dubbo超時重試啟動檢查等配置,接下來我們說一下dubbo高可用的一些配置 1. zookeeper宕機 我們接下來討論一下如果zookeeper宕機對我們的服務提供者消費者有什麼影響 現象:zookeeper註冊中心宕機,還可以消費dubbo暴露的服務。 原因

Keepalived熱備(處理單點故障,可用) Keepalived+LVS(可用,負載均衡) HAProxy伺服器(負載均衡

keepalived概述 keepalived執行原理 Top NSD CLUSTER DAY03 案例1:Keepalived高可用伺服器

資料庫水平切分的實現原理—分庫分表讀寫分離負載均衡主從複製

水平切分資料庫的目的 其主要目的是為突破單節點資料庫伺服器的 I/O 能力限制,解決資料庫擴充套件性問題  通過一系列的切分規則將資料水平分佈到不同的DB或table中,在通過相應的DB路由或者table路由規則找到需要查詢的具體的DB或者table,以進行Query操作

Spring Cloud Eureka 分散式開發之服務註冊中心負載均衡宣告式服務呼叫實現

介紹 本示例主要介紹 Spring Cloud 系列中的 Eureka,使你能快速上手負載均衡、宣告式服務、服務註冊中心等 Eureka Server Eureka 是 Netflix 的子模組,它是一個基於 REST 的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。 服務註冊和發現對於微服務架