Net分布式系統之二:CentOS系統搭建Nginx負載平衡(下)

來源:互聯網
上載者:User

標籤:store   nbsp   target   view   memcache   儲存   asp   image   代碼   

上一篇文章介紹了VMWare12虛擬機器、Linux(CentOS7)系統安裝、部署Nginx1.6.3代理服務做負載平衡。接下來介紹通過Nginx將請求分發到各web應用處理服務。

 

一、Web應用開發

  1、asp.net mvc5開發

  (1)建立一個MVC5工程,建立一個Controller,在Index方法實現將目前時間儲存到Session["mysession"],並寫Cookies["mycookies"]儲存主機名稱和目前時間。

123456789101112131415 public ActionResult Index()        {            if (this.HttpContext.Session["mysession"] == null)            {                this.HttpContext.Session["mysession"] = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");            }             this.HttpContext.Response.Cookies.Add(new HttpCookie("mycookies")                {                    Expires = DateTime.Now.AddDays(1),                    Value = HttpContext.Server.MachineName + "||" + DateTime.Now.ToString()                });             return View();        }

  (2)在Controller中新增第二個方法GetSession,顯示Session和Cookies的值。

123456789101112131415 public ActionResult GetSession()        {            if (this.HttpContext.Session["mysession"] != null)            {                ViewBag.DD = this.HttpContext.Session["mysession"].ToString();                ViewBag.SCode = this.HttpContext.Session["mysession"].GetHashCode().ToString();                ViewBag.SID = this.HttpContext.Session.SessionID;            }             ViewBag.CVAL = System.Web.HttpContext.Current.Request.Cookies["mycookies"].Value;            ViewBag.CID = System.Web.HttpContext.Current.Request.Cookies["mycookies"].Name;            ViewBag.CDO = System.Web.HttpContext.Current.Request.Cookies["mycookies"].Domain;             return View();        }

  (3)將session和cookies資訊在頁面顯示,GetSession視圖代碼如下:

@{    ViewBag.Title = "GetSession";}<h2>網站:A -- GetSession</h2><span>網站:A</span><br /><span>Session Value: @ViewBag.DD</span><br/><br /><span>Session SCode: @ViewBag.SCode</span><br /><br /><span>Session ID: @ViewBag.SID</span><br /><br /><span>Cookies ID: @ViewBag.CID</span><br /><br /><span>Cookies Values: @ViewBag.CVAL</span><br /><br /><span>Cookies Values: @ViewBag.CDO</span>

   以上實現session和cookies讀寫,為了驗證負載平衡下,每次請求處理是否保持一致,接下來重要內容,做負載平衡如何如何保持session一致,對於asp.net技術session原理此處不做介紹,網上搜尋下大把。

 

  2、Session共用技術

   .Net平台對支援幾種session儲存模式:

  (1)InProc 模式

    session儲存於當前網站在同一個進程內,修改web.config或者bin中檔案更新,會導致session丟失。此模式為預設模式。

  (2)aspnet state 模式 

    aspnet state是將session儲存在狀態服務中,需要啟動ASP.NET State Service,能看到進程aspnet_state.exe。還需要在web.config配置此模式。

  (3)SQLServer 模式 

    此模式需要SQL Server配置相關資訊,啟動代理服務、資料庫帳號及表,並將web.config指向資料庫。

  (4)第三方擴充 模式 

    本架構採用此模式,將session儲存到其他儲存,比如:Memcached、redis緩衝中,達到共用session的目的。可以通過實現ASP.NET中的SessionStateStoreProviderBase這個抽象類別擴充。本系統採用將session儲存在redis緩衝中,通過引入  RedisSessionStateProvider組件。

Install-Package Microsoft.Web.RedisSessionStateProvider

 

  3、Nginx服務狀態情況

  在centos終端輸入命令service nginx status 查看情況,確保服務正常運行。

 

  4、Web網站部署

  部署兩個網站分別為:

  網站A:連接埠為8081,

  網站B:連接埠為8082,

  

 

二、功能效果展現

   (1)瀏覽器訪問Index方法,http://192.168.119.128/demo,顯示如下:

        

 

  (2)瀏覽器訪問GetSession方法,http://192.168.119.128/demo/getsession,顯示如下:

     

 

  通過以上驗證,擷取到的session和cookies都是一致。

 

 

作者:andon 
出處:http://www.cnblogs.com/Andon_liu 
關於專註於微軟平台項目架構、管理。熟悉設計模式、領域驅動、架構設計、敏捷開發和專案管理。現主要從事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的項目開發、架構、管理工作。 如有問題或建議,請一起學習討論! 

Net分布式系統之二:CentOS系統搭建Nginx負載平衡(下)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.