在不久之前發布了一篇“項目分布式部署那些事(1):ONS消息隊列、基於Redis的Session共享,開源共享”,因為一些問題我們使用了阿里雲的OCS,下面就來簡單的介紹和分享下相關的解決方案和心得。
為什么放棄Redis?
因為我們Redis是需要自己部署的,而自己部署意味着要花經歷去維護這樣一套Redis的方案,而一開始我們以為一台簡單的服務器簡單的安裝配置一下Redis就可以負荷我們現在的應用了(我們的應用目前只有Session使用了它),可事與願違再部署上去的過程中經常出現redis服務掛掉,啟動不起來的情況,隨后我們咬了咬牙決定使用阿里雲的OCS(開放緩存服務)來構建我們的Session共享和分布式緩存。
OCS的缺點
然而阿里雲的OCS在我眼中並不完美,下面我們來看看它的缺點。
- 外網無法訪問(意味着我們不能在本地開放環境中進行測試調試)
- 阿里雲官方沒有提供針對於.NET/C#的SDK(需要使用第三方的,但我們使用的第三方SDK無法支持阿里雲OCS控制台中 緩存數據管理 - 視圖操作)
- 價格其實並不便宜
關於第一點,不像ONS那樣可以在外網訪問,但不承諾穩定性,至少我們可以在開放環境進行調試,這一點是比較不能忍受的,現在我們只能在本地部署Memcached進行開放環境的調試。
關於第二點OCS兼容了Memcached所以我們可以使用任何關於Memcached的SDK,而我們使用的是:Enyim.Caching。
關於第三點,它是按小時收費的。。具體看圖吧(我們開通了並沒有幾天)
關於Session共享的方案
分布式相關開源地址:https://github.com/RabbitTeam/Distributed
在NuGet
地址:https://www.nuget.org/packages/Distributed.SessionProvider.Memcached/1.0.0-beta2
安裝命令:Install-Package Distributed.SessionProvider.Memcached –Pre
使用方式
1.設置相關配置
MemcachedServerAddress 為服務器地址(記得加上端口號哦)
MemcachedSessionKey 為Session在Memcached中占用的Key,防止沖突。
2.配置sessionState
寫在最后
項目分布式以來一切還算順利,雖然有一次到第二天早晨8點,有一次到晚上11點,但相比這么大的變動還算順利,所以項目的架構還是非常重要的,如果大伙的項目有做大做強的可能就不要放棄前期優良的架構。
QQ群:384413261(RabbitHub)
Email:majian159@live.com