最近在研究分布式系統架構方面的知識,包括負載均衡,數據庫讀寫分離,分布式緩存redis等。本篇先從負載均衡服務架構入手,關于負載均衡百度百科的定義如下:負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。
我的解釋:一項任務交由一個開發人員處理總會有上限處理能力,這時可以考慮增加開發人員來共同處理這項任務,多人處理同一項任務時就會涉及到調度問題,即任務分配,這和多線程理念是一致的。nginx在這里的角色相當于任務分配者。
閱讀目錄
nginx安裝
站點搭建及配置
問題分析
總結
一、nginx安裝
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler(俄文:Рамблер)使用。其特點是占有內存少,并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、新浪、網易、騰訊等。
最新版本的nginx版本為1.9.3,我這下載的是window版本的,一般實際場景都是安裝在linux系統下的,由于linux系統目前正在摸索中這里就不介紹。官方下載地址:nginx-1.9.3.zip 。下載完成之后解壓運行nginx.exe就啟動了nginx了,啟動后會在進程里面看到nginx。
要實現負載均衡需要修改conf/nginx.conf的配置信息,修改配置信息之后重新啟動nginx服務,可以通過nginx -s reload指令實現。這里我們使用 Ants 提供的一個批處理來操作。
將nginx.bat文件放到nginx.exe相同文件夾下,直接運行就行了。文章結尾會提供本文用到的所有文件。
二、站點搭建及配置
1.搭建兩個iis站點
站點下只有一個簡單的index頁面,用來輸出當前服務器信息。由于我沒有兩臺機器,所以將兩個站點都部署到本機了,分別綁定了8082和9000兩個端口。
protected void Page_Load(object sender, EventArgs e) { Label0.Text = "請求開始時間:"+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); Label1.Text = "服務器名稱:" + Server.MachineName;//服務器名稱 Label2.Text = "服務器IP地址:" + Request.ServerVariables["LOCAL_ADDR"];//服務器IP地址 Label3.Text = "HTTP訪問端口:" + Request.ServerVariables["SERVER_PORT"];//HTTP訪問端口" Label4.Text = ".NET解釋引擎版本:" + ".NET CLR" + Environment.Version.Major + "." + Environment.Version.Minor + "." + Environment.Version.Build + "." + Environment.Version.Revision;//.NET解釋引擎版本 Label5.Text = "服務器操作系統版本:" + Environment.OSVersion.ToString();//服務器操作系統版本 Label6.Text = "服務器IIS版本:" + Request.ServerVariables["SERVER_SOFTWARE"];//服務器IIS版本 Label7.Text = "服務器域名:" + Request.ServerVariables["SERVER_NAME"];//服務器域名 Label8.Text = "虛擬目錄的絕對路徑:" + Request.ServerVariables["APPL_RHYSICAL_PATH"];//虛擬目錄的絕對路徑 Label9.Text = "執行文件的絕對路徑:" + Request.ServerVariables["PATH_TRANSLATED"];//執行文件的絕對路徑 Label10.Text = "虛擬目錄Session總數:" + Session.Contents.Count.ToString();//虛擬目錄Session總數 Label11.Text = "虛擬目錄Application總數:" + Application.Contents.Count.ToString();//虛擬目錄Application總數 Label12.Text = "域名主機:" + Request.ServerVariables["HTTP_HOST"];//域名主機 Label13.Text = "服務器區域語言:" + Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"];//服務器區域語言 Label14.Text = "用戶信息:" + Request.ServerVariables["HTTP_USER_AGENT"]; Label14.Text = "CPU個數:" + Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS");//CPU個數 Label15.Text = "CPU類型:" + Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER");//CPU類型 Label16.Text = "請求來源地址:" + Request.Headers["X-Real-IP"]; }
新聞熱點
疑難解答