【发布时间】:2012-02-05 23:29:45
【问题描述】:
我们有一个 JAVA 网络应用程序,它使用 postgres(带有从属的单个数据库)来存储所有重要数据。
我们现在正在从单一服务器设置转移到多台服务器,因此我需要进行一些更改以满足新要求。
1) 用于负载平衡和分区容错的非粘性会话 ID。
2) 可从所有 Web 服务器访问的频繁读取数据的缓存(内存/Memcache 替代方案)。
3) 队列(电子邮件、短信、要在集群上执行的任务)。通常,所有这些都必须通过 xml api 或屏幕抓取来执行。
避免重复处理任务很重要,但有时可能会发生:-)
4) API 请求和响应的持久存储(大量 XML、大量行但少量列)。 (可能通过删除旧的请求和响应来归档以保持数据集较小)。
5) 登录到一个共同的地方。该表将继续增长。此外,我需要一个工具来访问生产日志而不停止它们。应该可以根据时间和/或搜索字符串进行某种搜索。
我想要一个单一的解决方案来满足所有这些要求,并将 redis、mongo 和 hazelcast(按照我的个人喜好)作为可能的替代方案。
其他重要注意事项: 1) 减少对我们代码的侵入。 2) 简单的备份/复制策略。至少是主从。 3) 可管理性、社区性和久经考验(在生产中运行)。
哪个能够执行所有或大部分这些功能和要求?
编辑 - 我做了什么
- Redis 支持的 tomact 会话管理器。
- Redis 用于缓存
- 由 Redis 支持的 Jesque(Respue 的 java 版本)。
- Postgres
- 由 Log4j2 支持的 SLF4J
【问题讨论】:
标签: java mongodb redis hazelcast