项目分布式部署那些事(2):基于OCS(Memcached)的Session共享方案
在不久之前发布了一篇“项目分布式部署那些事(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