首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同机器上的Webmachine机

不同机器上的Webmachine机
EN

Stack Overflow用户
提问于 2014-10-21 07:22:25
回答 1查看 93关注 0票数 1

我有一个webmachine REST服务器在一台机器上运行。由于预期会有更多这台机器无法处理的通信量,我需要扩展到其他cpu`s.上的其他节点。有办法配置这个吗?

如果不是什么是正确的分配方式在这里,我是否需要手动通过OTP,同时工作人员和主管?在那里产生了一个工人,并将请求发送到邻近的机器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-21 14:31:19

这在一定程度上取决于您的用例。最好的方法是观察你遇到问题的地方,并作出相应的反应。

您可以将应用程序看作是三个独立的部分。第一种是REST接口,第二种是业务逻辑(稍晚一点),第三种是数据本身(资源,让我们称它为数据存储,但它甚至可能只是另一种服务)。

数据

这个最简单。我假设您正在为此使用单独的服务(比如Riak集群),在这里您可以单独地进行缩放。您可以研究的一件事是确保Webmachine和数据存储之间的连接能够满足您的需要。

接口

如果您的服务器无法处理足够的请求,只需将另一个放在它旁边。您可以通过路由器将请求发送给两个therm,ans,因为它们将使用相同的数据存储,因此它们将保持“同步”。

REST基于http假设无状态通信。这意味着,任何两个请求(来自同一个用户或两个不同的用户)都不共享任何资源,可以由不同的应用程序处理(您也不必在Webmachine实例之间共享任何东西)。

域逻辑

理论上,REST服务器中不应该包含这些内容,但是还是让我们讨论一下这一点。

您的一些请求可能只需要服务内容就能完成更多的工作。您可能正在进行一些计算(比如提供需要生成的统计信息)。您可能正在更新一些资源,这些资源需要在一个地方更改更多的数据(可以将其视为事务)。它可能需要更多的计算能力,或状态同步,这将使扩展变得更加困难。

反过来,这将是将REST与这种逻辑分离开来。特别是引入微服务,您可以独立于Webmachine本身来扩展或缩小这些服务。

在Erlang中,您实际上可以引入单独的Erlang VM中的应用程序。通过使用分布式Erlang (以及本主题中的再多一点 )和工作人员的拉力(比如池童 ),可以再次扩展这些功能。我推荐这种方法用于start,因为它是最容易实现的,而且由于Erlang的异步特性,它总是可以很容易地移植到外部微服务中。

PS。系统资源

您还应该检查您的框是否能够处理此类流量。最常见的错误之一不是生产中的增加文件描述符的最大数量。但是,首先你应该观察这些问题,然后再对它们作出反应。在大多数情况下,过早的优化是没有效果的。

PS2什么和什么时候

您可以使用外测仪或更多的开箱即用WombatOAM等工具监视我们的应用程序和系统资源。

您可以(应该)使用宗庆林basho板凳等工具对应用程序进行压力测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26481047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档