【问题标题】:Tomcat vs Vert.xTomcat 与 Vert.x
【发布时间】:2014-07-18 12:34:05
【问题描述】:

在过去的几天里,我一直在阅读 Vert.x 文档。我知道 Vert.x 是多语言、单线程、非阻塞 IO、模块化架构、高可扩展性。

tomcat 和 Vert.x 之间还有其他主要区别吗?

还有什么时候应该使用tomcat,什么时候应该使用Vert.x?

【问题讨论】:

    标签: java tomcat webserver vert.x


    【解决方案1】:

    Tomcat 是一个 servlet 容器,因此它为您提供了一个平台,可帮助您开发和部署基于 HTTP 的应用程序,例如网站或 Web 服务。

    Vert.x 反而可以帮助您开发和部署任何类型的异步应用程序。诚然,现代版本的 Tomcat 支持异步 servlet,但 Vert.x 带有大量用户友好的异步 API 以及其他优点:

    • 完整的文件系统异步 API
    • TCP(服务器和客户端)
    • UDP(服务器和客户端)
    • HTTP(S)(服务器和客户端)
    • 共享数据服务(在多语言模块之间共享对象)
    • HA 和集群
    • 集群范围的消息传递(事件循环)
    • 事件总线桥(事件循环通过 SockJS 扩展到浏览器)
    • 不断发展的 Vert.x 模块生态系统
    • 可以在遗留代码中嵌入 Vert.x
    • 利用现有丰富而稳固的 Java 库生态系统(Vert.x 在 JVM 上运行,与 Node.js 不同)

    我个人认为学习 Vert.x 非常有用。在工作中,我成功地重用了相同的知识来实现​​三种截然不同的产品:零拷贝超快 Redis 代理、JPA 支持的 REST API 和反应式单页 Web 应用程序。

    看看example code,它非常简单,样板文件接近于零。

    还有一件事:你在哪里读到 Vert.x 是单线程的?这不是真的! Vert.x 有一个非常 neat concurrency model 确保所有内核均等使用(再次,与 Node.js 不同)。

    享受吧!

    【讨论】:

    • 关于“你在哪里读到 Vert.x 是单线程的?”,维基百科 (en.wikipedia.org/wiki/Vert.x) 指出“所有代码都是单线程的,释放免去多线程编程的麻烦”。也许我遗漏了一些东西,但这似乎与您在回答中所说的或您链接到的 Vert.x 多反应器模式的描述不兼容。维基百科是不正确的,还是它们的描述完全指的是其他东西?
    • “所有代码都是单线程的”表示没有verticle并发执行。但是你在一个应用程序中有很多 Verticle,在 Vert.x 中有很多线程。并发模型与您在 Akka 和 Erlang 中发现的 Actor 模式相差不远。
    【解决方案2】:

    Vert.x HTTP 服务器允许您同时监听多个端口。此外,如果您想将 HTTP 服务器与 http 客户端或其他任何东西结合起来,它的并发模型比任何基于线程池的方法都要好得多。它的性能也好得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      相关资源
      最近更新 更多