<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • 理解web服務(wù)器和數(shù)據(jù)庫的負(fù)載均衡以及反向代理

            但是若該網(wǎng)站平均每秒的請求是200多次,那么問題就來了:這已經(jīng)是最好的web服務(wù)器了,我該怎么辦?同樣的情景也適用于數(shù)據(jù)庫。要解決這種問題,就需要了解“負(fù)載均衡”的原理了。成都網(wǎng)站建設(shè)公司

            10年積累的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有燈塔免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

            web服務(wù)器如何做負(fù)載均衡

            為web服務(wù)器做負(fù)載均衡適用的的較多的方式是DNS重定向和反向代理,其他的方式原理也是很類似。

            我們多次ping一下百度,會發(fā)現(xiàn)回復(fù)的IP會有所不同,例如第一次的結(jié)果為:成都服務(wù)器托管

            復(fù)制代碼代碼如下:

            正在 Ping baidu.com [220.181.111.86] 具有 32 字節(jié)的數(shù)據(jù):
            來自 220.181.111.86 的回復(fù): 字節(jié)=32 時間=27ms TTL=51
            來自 220.181.111.86 的回復(fù): 字節(jié)=32 時間=27ms TTL=51
            來自 220.181.111.86 的回復(fù): 字節(jié)=32 時間=27ms TTL=51

            過一會再Ping一次,結(jié)果可能就變了:成都服務(wù)器托管

            復(fù)制代碼代碼如下:

            正在 Ping baidu.com [220.181.111.85] 具有 32 字節(jié)的數(shù)據(jù):
            來自 220.181.111.85 的回復(fù): 字節(jié)=32 時間=27ms TTL=51
            來自 220.181.111.85 的回復(fù): 字節(jié)=32 時間=27ms TTL=51
            來自 220.181.111.85 的回復(fù): 字節(jié)=32 時間=29ms TTL=51

            使用nslookup命令可以看到多個ip與baidu.com對應(yīng)。在這里用到的就是DNS重定向技術(shù),原理很簡單:DNS服務(wù)器保存某域名對應(yīng)的多個IP,客戶端發(fā)出DNS請求時DNS服務(wù)器根據(jù)算法將IP發(fā)回給客戶端;發(fā)送回的一般是一個IP地址集合,但是每次的排序不同,第一次的第一個IP為201.11.11.1,第二次的第一個可能是201.11.11.2,客戶端使用的是第一個IP——簡單地說,就是客戶端每次獲取的域名的IP可能不同。不同的IP對應(yīng)不同的web服務(wù)器,但是這些web服務(wù)器的內(nèi)容應(yīng)該是一樣的。


            我們從下圖理解反向代理:成都服務(wù)器托管

            客戶端向反向代理發(fā)送HTTP請求報文(若該網(wǎng)站有域名,域名的IP是反向代理服務(wù)器的外網(wǎng)IP),反向代理將請求報文隨機發(fā)送給一個web服務(wù)器,web服務(wù)器將HTTP響應(yīng)報文發(fā)送給反向代理,反向代理再將這報文返回給客戶端。既然這樣簡單,我們就可以著手實現(xiàn)一個簡單的反向代理。

            在linux mint 15 下安裝apache和nginx服務(wù)器,在apache的80端口的文檔根目錄下創(chuàng)建文件index.html,內(nèi)容如下:成都服務(wù)器托管

            復(fù)制代碼代碼如下:

            <html>
            <head>
            <title>index</title>
            </head>
            <body>
            <h1>hello, i am apache</h1>
            </body>
            </html>

            在nginx的8080端口的文檔根目錄下創(chuàng)建文件index.html,內(nèi)容如下:成都服務(wù)器托管

            復(fù)制代碼代碼如下:

            <html>
            <head>
            <title>index</title>
            </head>
            <body>
            <h1>hello, i am nginx</h1>
            </body>
            </html>

            創(chuàng)建源文件simple_reverse_proxy.py,內(nèi)容如下:成都服務(wù)器托管

            復(fù)制代碼代碼如下:

            #!/usr/bin/python
            #-*-encoding:utf8-*-
            '''
            這是一個簡單的反向代理服務(wù)器
            '''
            import BaseHTTPServer
            import urllib2
            HOST_NAME = '127.0.0.1'
            PORT_NUMBER = 8081 #端口
            SERVER_URL=('http://127.0.0.1:80','http://127.0.0.1:8080')
            server_choice = 0
            class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
            def do_GET(s):
            """response to a GET request"""
            global server_choice
            url = SERVER_URL[server_choice]
            print url
            server_choice = (server_choice + 1) % 2
            headers = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
            try:
            req = urllib2.Request(url, None, headers)
            response = urllib2.urlopen(req)
            html = response.read()
            #print html
            s.send_response(200);
            s.send_header("Content-type", "text/html")
            s.end_headers()
            s.wfile.write(html)
            except:
            s.send_response(404);
            s.send_header("Content-type", "text/html")
            s.end_headers()
            s.wfile.write('<h2>404</h2>')
            if __name__ == '__main__':
            server_class = BaseHTTPServer.HTTPServer
            httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
            try:
            httpd.serve_forever()
            except KeyboardInterrupt:
            pass
            httpd.server_close()

            啟動apache、nginx,并運行simple_reverse_proxy.py。我們在瀏覽器中打開http://127.0.0.1:8081,我們可以看到:

            刷新一下可以看到:成都服務(wù)器托管


            而simple_reverse_proxy.py會有以下信息輸出:成都服務(wù)器托管

            復(fù)制代碼代碼如下:

            bash >> ./simple_reverse_proxy.py
            http://127.0.0.1:80
            127.0.0.1 - - [05/Sep/2013 19:25:02] "GET / HTTP/1.1" 200 -
            http://127.0.0.1:8080
            127.0.0.1 - - [05/Sep/2013 19:25:43] "GET / HTTP/1.1" 200 -

            當(dāng)然,開源世界里已經(jīng)有很多優(yōu)秀的反向代理服務(wù)器了,例如Nginx。


            只要理解了反向代理的原理,更復(fù)雜的架構(gòu)也容易去實現(xiàn)。

            數(shù)據(jù)庫的負(fù)載均衡

            對于大型網(wǎng)站,一個數(shù)據(jù)庫系統(tǒng)肯定會遇到無法負(fù)擔(dān)大量的讀請求、寫請求的情況。那么我們怎么來通過負(fù)載均衡來實現(xiàn)高并發(fā)的讀寫請求呢?

            這其中一個很好的方法就是讀寫分離:將原本針對一個數(shù)據(jù)庫服務(wù)器的讀寫請求分成讀請求和寫請求,向一個(或者多個)數(shù)據(jù)庫服務(wù)器發(fā)送寫請求,向另外一個(或多個)服務(wù)器發(fā)送讀請求,這可以明顯的提高響應(yīng)時間。不過其中有一個難點,就是必須保持多個數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)是一致的,不用擔(dān)心,很多數(shù)據(jù)庫系統(tǒng)已經(jīng)實現(xiàn)了這個功能。下面是一個架構(gòu)示例:

            上圖中其實有一個寫寫沖突的問題,想象以下場景:成都服務(wù)器托管

            該系統(tǒng)用于存放某網(wǎng)站的用戶注冊信息,該網(wǎng)站不允許用戶名相同,且以用戶名為唯一主鍵,所以在單數(shù)據(jù)庫架構(gòu)中必須涉及到事務(wù)的處理?,F(xiàn)在在這個負(fù)載均衡的數(shù)據(jù)庫架構(gòu)中,用戶A要注冊用戶名為xiaoming,這個寫請求分配給了db server 1;與此同時用戶B同樣注冊用戶名xiaoming,如果寫請求分配給了db server1,就不會有問題發(fā)生,可是如果分配給db server 2呢?兩個db server分別存放了不同用戶的用戶名相同的用戶信息!成都小程序開發(fā)公司解決的方法很簡單,寫請求的分配不能用隨機算法,應(yīng)該使用哈希映射,例如注冊的用戶名首字母為x時,寫請求分配各 db server2,其他寫請求一律分配給db server 1。

            另外一個問題,這種架構(gòu)為開發(fā)應(yīng)用提供了很大的靈活性,就是這種架構(gòu)不適用于某些ORM框架,解決方法就是在這個架構(gòu)上再加上一層——“數(shù)據(jù)庫代理”。例如對于MySQL,就有MySQL Proxy這樣的解決方案。

            當(dāng)前標(biāo)題:理解web服務(wù)器和數(shù)據(jù)庫的負(fù)載均衡以及反向代理
            網(wǎng)站地址:http://www.jbt999.com/article44/ssdee.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作網(wǎng)站改版、網(wǎng)站收錄網(wǎng)站內(nèi)鏈、外貿(mào)網(wǎng)站建設(shè)微信公眾號

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

            手機網(wǎng)站建設(shè)

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 韩国av三级片麻豆 | 成人精品免费无码毛片 | 九九精品国产 | 亚洲天堂三区 | 欧美做受高潮白 |