项目分布式部署那些事(2):基于OCS(Memcached)的Session共享方案

在不久之前发布了一篇“项目分布式部署那些事(1):ONS消息队列、基于Redis的Session共享,开源共享”,因为一些问题我们使用了阿里云的OCS,下面就来简单的介绍和分享下相关的解决方案和心得。

为什么放弃Redis?

    因为我们Redis是需要自己部署的,而自己部署意味着要花经历去维护这样一套Redis的方案,而一开始我们以为一台简单的服务器简单的安装配置一下Redis就可以负荷我们现在的应用了(我们的应用目前只有Session使用了它),可事与愿违再部署上去的过程中经常出现redis服务挂掉,启动不起来的情况,随后我们咬了咬牙决定使用阿里云的OCS(开放缓存服务)来构建我们的Session共享和分布式缓存。

OCS的缺点

然而阿里云的OCS在我眼中并不完美,下面我们来看看它的缺点。

  1. 外网无法访问(意味着我们不能在本地开放环境中进行测试调试)
  2. 阿里云官方没有提供针对于.NET/C#的SDK(需要使用第三方的,但我们使用的第三方SDK无法支持阿里云OCS控制台中 缓存数据管理 - 视图操作)
  3. 价格其实并不便宜

关于第一点,不像ONS那样可以在外网访问,但不承诺稳定性,至少我们可以在开放环境进行调试,这一点是比较不能忍受的,现在我们只能在本地部署Memcached进行开放环境的调试

关于第二点OCS兼容了Memcached所以我们可以使用任何关于Memcached的SDK,而我们使用的是:Enyim.Caching

关于第三点,它是按小时收费的。。具体看图吧(我们开通了并没有几天)

image

关于Session共享的方案

分布式相关开源地址:https://github.com/RabbitTeam/Distributed

开源地址:https://github.com/RabbitTeam/Distributed/tree/master/Distributed/Distributed.SessionProvider.Memcached

在NuGet

地址:https://www.nuget.org/packages/Distributed.SessionProvider.Memcached/1.0.0-beta2

安装命令:Install-Package Distributed.SessionProvider.Memcached –Pre

使用方式

        1.设置相关配置

               image

               MemcachedServerAddress 为服务器地址(记得加上端口号哦

               MemcachedSessionKey 为Session在Memcached中占用的Key,防止冲突。

        2.配置sessionState

              image

写在最后

项目分布式以来一切还算顺利,虽然有一次到第二天早晨8点,有一次到晚上11点,但相比这么大的变动还算顺利,所以项目的架构还是非常重要的,如果大伙的项目有做大做强的可能就不要放弃前期优良的架构。

QQ群:384413261(RabbitHub)

Email:majian159@live.com

posted @ 2015-10-30 10:18  KAnts  阅读(2108)  评论(8编辑  收藏  举报