3

我即将开始一个新的 XPage 项目,该项目将在全球范围内使用。我有点担心,因为他们担心性能,因此正在考虑将此应用程序与负载均衡器或集群一起使用。我一直在环顾四周,发现范围变量可能存在问题(例如,用户在一台服务器上启动会话,然后发送到另一台服务器,某些范围变量丢失)。我也看过这篇精彩的文章,它专注于性能,但没有真正提到任何关于集群环境的内容。

只是一点额外的信息:并发用户不应高于 600,但可能会随着时间的推移而增长,总共大约有 3000 个用户。XPage 应用程序将成为两个数据源(一个活动数据库及其存档)的门户。

我的问题是:作为一名开发人员,在开发可能在负载均衡器或集群环境中运行的应用程序时,我必须密切注意什么?

谢谢你的时间!

4

1 回答 1

2

这不是一个真正的答案......但我不能把它放在评论中。

我们面临一个非常相似的问题。

我们有一个已投入生产 2-3 年的 xpage SPA(单页应用程序)应用程序,可变用户负载高达 300-400 个登录 8 小时会话的并发用户,我们有 4 个集群 Domino 服务器,1 个是运行所有预定作业的“主力”和 3 个专用 HTTP 服务器。

我们在 Domino 中使用 SSO,并且有 3 个 HTTP 服务器参与,因此用户只需验证一次即可访问所有 HTTP 服务器。我们使用反向代理,所以所有用户都会访问 www.ourapp.com,但会被重定向到 servera.ourapp.com、serverb.ourapp.com 等,一旦他们被定向到服务器,rev 代​​理就会向客户端。这为他们被定向到的任何服务器提供了一个“粘性”会话,并且 rev 代​​理只会在他们所在的服务器不可用时将他们移动到不同的服务器。

我们使用“用户”托管会话 bean 来存储每个用户的配置,因此如果用户移动服务器,如果用户的 bean 不存在,它将被创建。但他们的关键点是:由于会话粘性,只有当我们关闭服务器或服务器发生故障时,用户才会移动。由于我们的应用程序是一个 SPA,很多用户“配置”存储在客户端,所以如果他们被引导到不同的服务器(对用户来说,他们仍然指向 www.ourapp.com),没有什么真正改变。

到目前为止,这对我们来说非常有效。

该应用程序也可以通过“离线”外部应用程序访问,它指向 rev 代​​理 (www.ourapp.com),但我们最初确实遇到了问题,因为该应用程序没有传回 Rev 代理“粘性”cookie 令牌,所以 1 台设备正在向代理发送请求,该请求被路由到服务器 A,然后 1 秒后到服务器 B,然后是 A..B..C,各种令人头疼的......因为集群可能需要几秒钟的时间同步,如果向同一个文档发送请求...冲突。一旦我们让外部应用程序为每个会话传回 rev 代​​理令牌,问题就解决了。

我不太明白的一点是:“...XPage 应用程序将成为单个数据库(无副本)和存档数据库(无副本)的门户。”这是否意味着该门户将是集群,但连接的数据库用户不会被集群?

与应用程序位于一台服务器上的情况相比,我们的编码并没有任何不同,因为用户的会话“卡”在一台服务器上。我们确实需要跨所有服务器的持久文档锁定。我们最初使用本地文档锁定,但是 $writers 没有集群,所以我们必须实现我们自己的......我们在 doc 上设置一个字段,以便“锁定”集群(我们还必须实现单锁存储...... .sigh,可以再谈)。由于需求,我们必须在 3 个应用程序数据库中维护近 100 万个文档,我们生成大量审计数据,但我们将其推送到 SQL。

所以我会说这更像是一个管理员的头痛(我也是这个项目的管理员,所以在我们的例子中我可以确认这一点!)而不是设计师的头痛。

我也很想听听其他人对此主题的看法。

于 2013-11-06T09:01:39.550 回答