Java 服务器端应用程序,如何?

标签 java apache-mina

我正在用 Java 构建一个可扩展的服务器端应用程序,但我需要知道“该做的和不该做的”。

该应用程序需要客户端通过 TCP 套接字连接到服务器,我听说过很多关于 Apache MINA 的好消息,所以我想尝试一下并围绕它进行构建。我还需要该应用程序与数据库进行通信,并根据请求或推送向客户端发送合适的数据。

我会管理自己的家庭服务器,这样即使是在我的控制之下。

我对以下几点有疑问:

  • 服务器端是否需要有一个 GUI,报告状态、连接 和异常(exception)情况。如果是这样我该怎么办 实现这个,我应该使用 Swing 吗?
  • MINA 正在处理连接,但是 我如何处理数据库(MySQL)?
  • 我如何测试这个应用程序 可扩展性,我该如何模拟 客户端与服务器的连接。
  • 有没有什么框架可以做到 以上所有内容还是我必须这样做 处理好各个方面。

最佳答案

How could I test this app for scalability, how can I simulate client connections to the server.

对于可扩展性测试,我建议 Apache JMeter 。它是一个优秀、免费且相当简单的工具,用于创建和测量应用程序的负载。您可以获得有关响应时间、每秒事务数、服务器负载等信息。

我在 HTTP 应用程序中经常使用它。对于您的 TCP 应用程序,它有一个 TCP Sampler,但使用您已经编写的连接代码为其 Java Sampler 创建实现可能会更容易。我还建议将其与 rstatd sampler plugin 结合使用这样您就可以在测试过程中测量服务器CPU/内存。

可能需要几天时间才能熟悉该工具,但它对我来说非常有用。

Does a Server side need to have a GUI, to report status, connectivity and exceptions.

老实说,服务器端的 GUI 可能有点矫枉过正。当然,如果有某种带有一堆闪烁的红灯和绿灯以及滚动日志的控制台就好了,但归根结底,这些都只是 YAGNI 的项目。

只要您的服务器正在为您想要跟踪的事务和事件写入日志和审核信息,就足够了。拥有 GUI 只会增加服务器的复杂性,可能会产生更多错误。另外,如果您有效地使用日志,则可以插入其他监视/警报机制(例如 SNMP)。

how do I handle the database(MySQL)?

其他答案有一些很好的建议;这个话题本身可能就已经被更好地涵盖了,并且已经有很多关于它的问题被问到。我建议对 ORM+Java 进行一些搜索以获得一些好的意见。这里有一些不错的链接:

您可以找到对所有不同 ORM 的不同意见,以及根本不使用它们的拥护者。我本身没有意见 - 在研究选项后,只需使用您认为适合该工作的内容即可。

Is there any framework that can do all of the above or do I have to handle each aspect.

值得怀疑,如果有的话,它可能太通用了,无论如何你最终都会为它编写一堆代码。对于 ORM + GUI(如果您确实使用 GUI),有一些在 JVM 上运行的开箱即用的 MVC+数据库 Web 解决方案,如 Grails 。但您的大多数问题都涉及不同的问题领域,每个问题领域都需要自己单独的解决方案。

关于Java 服务器端应用程序,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1815736/

相关文章:

java - 从 BufferedReader 获取 null 返回

java - Hibernate 由 : java. sql.SQLException 引起:ORA-00942:表或 View 不存在

android - 如何在 Android Pie 上运行 Apache-Mina SSHD-Server (2.2.0)?

java - Maven:主线程中的 NoClassDefFoundError

java - 如何向 ioBuffer 分配和检索无符号 Long 值

java - 从 Java 运行时为 Linux 运行命令

mysql - 在嵌套集合模型 Java/MySQL 中复制一个子树

java - 在 Apache Derby Embedded 上调用 last_insert_id() 时出现 Hibernate 异常

java - Apache Mina SSHD 1.0 服务器立即退出

java - 在SPRING服务器中使用JAVA NIO框架