2017-06-02 59 views
0

,因为我已经在开发可横向扩展的Web应用零经验,我需要有经验的人指导我在正确的方向。如何管理分布式数据库中的用户会话?

我有困难找出存储在数据库中的登录会话的正确方法,所以我来到了问题是,即使正确将它们存储在数据库中,当我刨日后使用复制?如果不是什么交替?

我需要不同的客户端(安卓,Windows中,...)连接到服务器与同一用户自己的会话,我使用:

1 - 美分-OS操作系统作为

2 - 的PostgreSQL如DBMS

3 - Tomee作为HTTP服务器和Servlet容器

4 - 分区表(在PostgreSQL的继承表),以提高性能,在存储器索引扫描机会,防止碎片和等

我的问题加薪的事实,我需要检查从客户端的每个接收到的请求会话可用性(每一届都有自己的加密密钥),并有可能有几百万的会话,在分布式环境中我不能确保创建的会话将在正确的时间在复制数据库中可用。

感谢您的帮助

回答

0

存储在关系数据库中的用户会话将evantually减少应用程序的perfermance。您应该查看分布式缓存机制来存储和读取用户会话。我强烈推荐用于用户会话的NoSQL数据库解决方案,例如Redis,它使您可以在键值对中对内存进行存储,并以非常高的速度响应。另外,您可以调整配置文件以将内存中的键值对存储到磁盘以实现持久性。您还需要关注跨多个NoSQL实例和内部数据结构(如HashMaps)分配键值对。您可以使用自己的散列算法将键值对分布到多个实例上,从而实现高可用性。你应该记住,水平shardening您的数据会导致一些问题,你可以参考CAP theorem - Availability and Partition Tolerance脱颖而出细节。