做过分布式session管理的请进

manica 2009-01-14 04:04:51
最近在优化系统,主要是让系统将来能水平自由扩展,目前我的session的管理方式是使用进程外的一个remoting的一个服务进行管理,但是目前还不能实现分布式管理,也就是当一台机器达到最大容量后可以水平的扩展服务,没有做过类似的系统所以也没有什么经验,也没有什么明确的思路,请高手帮忙提供思路,请不要说个大概,最好能阐述的详细点,我需要的是可行性的解决方案

现在最关键的是 如何根据客户端的sessionid去定位其所在的remoting服务地址,sessionid是无规则无序的,也就是找到一个高效的算法能实现快速定位服务地址
或者有其他好的解决方案也可以提供参考下

ms stateserver和sqlserver的解决方案暂不考虑,除非能有很好的优化的解决方案
...全文
541 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
A海阔天空 2009-02-12
  • 打赏
  • 举报
回复
学习了
MAOGE1987 2009-01-22
  • 打赏
  • 举报
回复
来学习的~~谢谢
SATAN1122 2009-01-22
  • 打赏
  • 举报
回复
UP···
xhan2000 2009-01-22
  • 打赏
  • 举报
回复
State Server模式可以考虑
sunshine_anycall 2009-01-22
  • 打赏
  • 举报
回复
mark
archu 2009-01-16
  • 打赏
  • 举报
回复
其实你可以完全不用State Server/SQL server,直接采用In-process Mode的模式也没多大关系,而且效率最高

不管你使用软件Load Balance或者是硬件的,都有一种叫做"Single Affinity"的模式(或者叫做Session sticky),比如Microsoft的NLB,默认就是这种模式。
在这种情况下,只要是同一个IP地址过来的请求,都会提交到同一台server上进行处理,直到那台server宕掉为止。对于一般的应用来讲,偶尔丢失一次session的现象时可以允许的,所以不必太在意,毕竟效率上面比起采用state server高多了。而且,我也不认为你自己实现的一种remoting的管理模式稳定性会高到永远不丢失session。

这里有篇关于NLB下面session问题的参考:
http://technet.microsoft.com/en-us/library/cc738968.aspx
wangzhenyue 2009-01-16
  • 打赏
  • 举报
回复
顶吧。。
supremeholy 2009-01-16
  • 打赏
  • 举报
回复
顶~
bj890 2009-01-15
  • 打赏
  • 举报
回复
up
sunhongliang100 2009-01-15
  • 打赏
  • 举报
回复
没用过 在帮顶一下吧
jzywh 2009-01-14
  • 打赏
  • 举报
回复
ASP.NET 的 State Server 本来就支持分布式

ASP.NET Session State Partitioning
http://blog.maartenballiauw.be/post/2008/01/23/ASPNET-Session-State-Partitioning.aspx

ASP.NET load balancing and ASP.NET state server
http://blog.maartenballiauw.be/post/2007/11/ASPNET-load-balancing-and-ASPNET-state-server-(aspnet_state).aspx


你自己用Remoting实现的session state server也好做分布式

用tcp channel就可以允许远程来连接了。

多台state server的话可以根据 SessionID 来分配到到底用哪一个state server, 不如说 SessionID 第一个字母的asccii码 / state server的数量





62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧