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

时间:2011-06-27 16:55:06

标签: java architecture java-ee high-load

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

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

My current architecture

现在最大的问题是如何设计包含业务逻辑的大型“Jetty”作品。我已经知道我需要使用MVP模式。但仍存在一些重大问题:

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

1 个答案:

答案 0 :(得分:1)

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