【问题标题】:What does middleware mean for Twitter and Scala?中间件对 Twitter 和 Scala 意味着什么?
【发布时间】:2010-10-31 00:44:36
【问题描述】:

参考 another SO question 我收到了 this article 关于 Twitter 从 Rails 迁移到 Scala 的信息,文章中有这样的评论:

到今年年底,佩恩说, Twitter希望拥有它的全部 中间件基础设施及其 API 移植到新语言。红宝石将 仍然存在,但仅在前端。 “我们仍然对 Rails 感到满意 构建面向用户的功能... 性能方面,对人们来说很好 点击网页。这是 繁重的,异步处理 我们搬走的东西 来自。”

中间件在这里是什么意思?在前端使用 Ruby 到底意味着什么?这是否意味着前端的导轨很少使用 ORM?它如何与 scala“相遇”?这条评论是什么意思?

只是想了解架构。谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby architecture scala twitter


    【解决方案1】:

    它是N-Tier Architecture 的一种形式。最初,大多数站点将作为 2 层架构开始,具有 Web 服务器和数据库。网络服务器将提供用户看到的页面,而数据库由这些动态页面访问。

    当一个架构被分成多层时,通常你会在前端有一个 Web 应用程序,并带有某种 Web 应用程序将调用的应用程序服务器。此应用程序服务器包含业务逻辑并使应用程序正常运行。应用程序的“面孔”只是让事物看起来很漂亮,并对其进行格式化以显示给用户。

    应用程序服务器,或“中间件”,只是 Web 服务器可以调用的函数的集合。对于像 twitter 这样的网站来说,中间件必须是强大的,因为大部分活动都在发送消息,访问该网站的人没有那么多活动。

    层之间的互连可能是一种标准的 Web 服务技术,但也可能是一种自定义的东西,可能是 REST 或其他类型的 Web 服务,其中 Web 应用程序(Ruby on Rails)可以访问应用程序数据。

    在这种类型的架构中,Rails 无疑将所有 ORM 和数据管理都交给了中间件。

    中间件也是一个模糊的术语,可以由许多层组成,因此他们称之为 N-Tier。我敢打赌,Twitter 的中间件有一个不同的部分专门用于消息传递,而另一部分则用于管理帐户、获取消息等。

    这个想法是能够通过添加硬件来向上扩展,您可以在其中拥有一个服务器集群来提供网页服务,另一个集群处理消息传递,然后是一个支持所有这些的数据库服务器集群。这不是一门精确的科学,每种架构都不同,但一般来说,可以这样想。

    【讨论】:

    • 仍然是一个很好的答案。谢谢。
    【解决方案2】:

    尝试在谷歌上搜索“ruby twitter scala payne”,您将获得比您可能需要的更多信息。

    我(可能不完整)的理解是,Twitter 的大部分“后端”编码都不是特别好(请参阅Obie Fernandez' post,其中挑选了一些 Alex Payne 引用)。这似乎至少部分源于该应用程序最初的快速破解性质,该性质已被事件所取代,随着该应用程序的使用开始呈指数增长,他们正在经历相当大的痛苦。当时有很多人指责 Twitter(以及关联的 Rails)“未能扩展”。

    Twitter 严重依赖消息队列,据我了解,这部分是用 Scala 编写的,这可能是(没有个人经验)工作的一个非常好的语言选择。

    【讨论】:

      【解决方案3】:

      我的理解是,他们迁移到 Scala 的是消息“队列”:从 Ruby-ORM-DB 支持的解决方案到使用 Scala 的分布式消息传递系统。 具有 Twitter 量的服务有特殊要求,他们创建了自己的消息解决方案。叫“红隼”

      【讨论】:

        【解决方案4】:

        本例中的消息传递基础架构。他们可能从一些基于 ruby​​ 的自定义解决方案切换到了 JMS 解决方案。

        【讨论】:

        • JMS?对不起。我在这里迷失了我的首字母缩略词。
        猜你喜欢
        • 2016-05-18
        • 1970-01-01
        • 2015-04-24
        • 1970-01-01
        • 1970-01-01
        • 2012-10-10
        • 1970-01-01
        • 2011-12-28
        • 2020-10-12
        相关资源
        最近更新 更多