java - 需要帮助为 SaaS 聊天设计快速且可扩展的服务器架构

标签 java architecture jakarta-ee high-load

<分区>

我想开发一个 SaaS 聊天,用户可以将其嵌入到他们的网站上,并且还会有一个桌面聊天客户端。类似于 Live Chat 的东西.问题是我从来没有开发过服务器或数据库程序。我也是 Java 的新手,但在桌面 C# 编程方面有一些经验(开发了一些 gui 应用程序)。事实上,我是一名学生,并没有那么多经验。

我正在尝试为我们的服务器设计一个良好的可扩展架构,但在谷歌搜索和阅读维基百科几天后,我对如此大量的信息感到不知所措。服务器需要简单,因为它不包含任何表示代码,但它必须非常快,因为如果服务变得流行,我预计会有很高的流量。现在我已经选择了我将要使用的大部分技术。这是我的服务器架构版本:

My current architecture

现在最大的问题是如何设计这个包含业务逻辑的大型“jetty ”。我已经了解到我需要使用 MVP 模式。但是仍然存在一些主要问题:

  1. 如何正确使用数据库?制作静态 DatabaseManager 类,可以将对象加载和保存到数据库?或者在类上创建特殊的静态 SaveToDbLoadFromDb 方法?我认为必须有一个已经为这些事情开发的框架(这对于服务器来说一定是非常常见的任务)
  2. 如何设计事件系统?如何正确通知“聊天室”中的所有客户他们有新消息?我无法简单地将所有客户端订阅到聊天室的 NewMessage 事件,因为大多数客户端都在数据库中,而不是在内存中。
  3. 如果您发布一些主要类的简化设计将会有很大帮助:MessageUserChat room。消息从用户发送到聊天室,聊天室是订阅用户的集合。这将是对前两个问题的某种回答。

如果您向我指出适当的技术或设计模式,那将是非常好的。

最佳答案

您缺少的是 ORM(对象关系映射器)的概念。查看什么是 ORM,以及它如何帮助您解决 Jetty 层中的业务逻辑问题。正如评论中提到的,Hibernate 是一个很棒的 ORM;那里有很多 ORM。研究一下 ORM 可以为您做什么;我相信这是您所遗漏的难题的一部分。

关于java - 需要帮助为 SaaS 聊天设计快速且可扩展的服务器架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6496226/

相关文章:

java - 为什么一个方法引用了 "throws"... 也抛出的 ctor?

java - jars和其他文件的Maven打包

重写方法上的 Java Class.getMethods() 行为

architecture - DDD - 域或应用程序层中的存储库接口(interface)?

java - javarabbitmq客户端v3.4.3中的getReplyQueue方法不再可用?

java - 将从文本文件读取的字符串拆分为二维字符数组

performance - 生产应用程序的监控和警报

variables - CPU 如何在 32 位内存和 32 位处理器中访问单个字节的内存

java - 为什么我应该使用 JAAS 来对抗手写安全性?

java - PrimeFaces 3.2 selsectOneMenu valueChangeListener 不起作用