标签: horizontal-scaling

水平缩放Postgres

假设您在postgresql数据库之上运行您的业务.经过一段时间后,你会得到如此多的流量,以至于单个postgresql实例无法处理它,所以你想要添加更多实例(水平扩展)以便能够处理增长.

您的数据是关系型的,因此可能无法切换到某些键/值解决方案.

你会如何用postgresql做到这一点?

PS.Postgresql版本:9.5

database postgresql horizontal-scaling

23
推荐指数
1
解决办法
1万
查看次数

关系数据库可以横向扩展

经过一些谷歌搜索我发现:

来自mysql文档的注意事项:

MySQL Cluster可以跨节点自动分割(分区)表,使数据库能够在低成本的商用硬件上水平扩展,以便为读取和写入密集型工作负载提供服务,从SQL和直接通过NoSQL API访问.

关系数据库可以横向扩展吗?它会以某种方式基于NoSQL数据库吗?

有人有任何现实世界的例子吗?

如何在这样的数据库中管理sql请求,事务等?

mysql scalability transactions nosql horizontal-scaling

19
推荐指数
4
解决办法
1万
查看次数

如何在水平扩展写入时避免并发问题?

假设有一个工作服务从队列接收消息,从文档数据库中读取具有指定Id的产品,根据消息应用一些操作逻辑,最后将更新的产品写回数据库(a).

水平缩放写入

在处理不同的产品时,这项工作可以安全地并行完成,因此我们可以横向扩展(b).但是,如果多个服务实例在同一产品上运行,我们最终可能会遇到并发问题或数据库中的并发异常,在这种情况下我们应该应用一些重试逻辑(并且仍然可能会再次失败,等等) .

问题:我们如何避免这种情况?有没有办法可以确保两个实例不能在同一产品上运行?

示例/使用案例:在线商店在productA,productB和productC上有很好的销售,一小时结束,数百名客户正在购买.对于每次购买,都会将消息排入队列(productId,numberOfItems,price). 目标:我们如何运行我们的工作服务的三个实例,并确保productA的所有消息最终都在instanceA,productB到instanceB和productC到instanceC(导致没有并发问题)?

注意:我的服务是用C#编写的,作为工作者角色托管在Azure上,我使用Azure队列进行消息传递,我正在考虑使用Mongo进行存储.此外,实体ID是GUID.

它更多的是关于技术/设计,所以如果你使用不同的工具来解决问题,我仍然感兴趣.

scalability sharding azure horizontal-scaling microservices

9
推荐指数
1
解决办法
1051
查看次数

微服务:数据库和微服务实例

假设我们有微服务A和B.B有自己的数据库.但是B必须水平缩放,因此我们最终有3个B实例.数据库会发生什么?它是否相应地扩展,是否为3 B实例保持相同(集中)数据库,它是否成为分布式数据库,会发生什么?

instances horizontal-scaling microservices

9
推荐指数
1
解决办法
2322
查看次数

如何在Elixir/Phoenix群集中分发持久连接?

所以这个问题困扰着我,我实际上并不需要这种规模,我只是好奇.最近,Chris Mccord使用Elixir/Phoenix在一个盒子里获得了200万个持久连接.如果我在一个集群中有3个盒子,每个盒子处理200万个持久连接:

  1. 这是否意味着负载均衡器必须保留600万个持久连接,或者是否可以将连接转发到后端服务器并关闭负载均衡器上的连接?
  2. 我是否必须使用客户端中的某些逻辑来分发连接并避免单个入口点?喜欢的东西box1.foo.com,box2.foo.com,box3.foo.com并告诉客户端连接到其中的一个?

我知道答案可能是特定于应用程序的,但是请您举例说明如何实现这种规模?同样,这只是一个思考练习,我无法在任何地方找到答案,我对水平缩放感兴趣.

谢谢.

erlang load-balancing cluster-computing elixir horizontal-scaling

8
推荐指数
1
解决办法
922
查看次数

扩展Windows服务

我正在寻找有关如何扩展当前在我公司运行的Windows服务的一些输入.我们正在使用.NET 4.0(可以并且将来会在某个时候升级到4.5)并在Windows Server 2012上运行它.

关于服务
该服务的工作是查询日志表中的新行(我们正在使用Oracle数据库),处理信息,创建和/或更新其他5个表中的一堆行(让我们称之为跟踪表) ),更新日志表并重复.

日志记录表具有大量XML(每行最多可达20 MB),需要在其他5个跟踪表中进行选择和保存.始终以每小时500,000行的最大速率添加新行.
跟踪表的流量要高得多,从最小的一行中的90,000个新行到每小时最大表中可能有数百万行.更不用说那些表也有更新操作.

关于正在处理的数据
我觉得这一点对于根据这些对象的分组和处理方式找到解决方案非常重要.数据结构如下所示:

public class Report
{
    public long Id { get; set; }
    public DateTime CreateTime { get; set; }
    public Guid MessageId { get; set; }
    public string XmlData { get; set; }
}

public class Message
{
    public Guid Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
  • 报告是我需要选择和处理的记录数据
  • 对于每条消息,平均有5个报告.在某些情况下,这可以在1到数百之间变化.
  • 消息有很多其他集合和其他关系,但它们与问题无关.

今天Windows服务我们几乎没有管理16核服务器上的负载(我不记得完整的规格,但可以肯定地说这台机器是野兽).我的任务是寻找扩展和添加更多机器的方法,这些机器将处理所有这些数据而不会干扰其他实例.

目前,每个Message都有自己的Thread并处理相关报告.我们批量处理报告,按其MessageId分组,以便在处理数据时将数据库查询的数量减少到最少.

限制

  • 在这个阶段,我可以使用我认为合适的任何架构从头开始重新编写此服务.
  • 如果实例崩溃,其他实例需要能够接收崩溃的实例.没有数据可以丢失.
  • 此处理需要尽可能接近插入数据库的报告的实时性.

我正在寻找有关如何构建此类项目的任何意见或建议.我假设服务需要是无状态的,还是有办法以某种方式同步所有实例的缓存?我应该如何在所有实例之间进行协调,并确保它们不处理相同的数据?如何在它们之间平均分配负载?当然,如何处理实例崩溃而不完成它的工作?

编辑
删除了无关的信息

c# windows-services scalability horizontal-scaling

7
推荐指数
2
解决办法
2306
查看次数

水平扩展和 cron 作业

我最近被迫将我的应用程序转移到亚马逊并使用自动缩放,我偶然发现了 cron 作业和自动缩放的问题。

我有一个每 15 分钟运行一次的 cron 作业,它检查订阅是否应该收费,查询选择所有过期的订阅,并尝试对它们收费。它一旦处理就会改变它们的状态,但是它们是批量获取的,并且该过程需要 1-3 分钟。

如果我有多个具有相同 cron 作业的实例,它可能会同时触发并对订阅进行多次收费。这种事其实已经发生过一次了。

这里最好的方法是什么?以某种方式锁定桌子?

我正在使用 Amazon elastic beanstalk 和 symfony3。

distributed-computing horizontal-scaling symfony amazon-elastic-beanstalk

7
推荐指数
1
解决办法
5086
查看次数

为什么sql是垂直可扩展的而nosql是水平可扩展的

我是 NoSQL 新手,并试图理解它的含义。

我在许多不同的网站上看到许多文章重复这样一个事实:“SQL 数据库是垂直扩展的(通过添加 CPU/内存),而 NoSQL 数据库是水平扩展的(通过添加更多可以执行分布式计算的机器)”。

例如这些文章:
http://dataconomy.com/sql-vs-nosql-need-know/
http://www.thegeekstuff.com/2014/01/sql-vs-nosql-db/

问题是我不明白为什么。

据我所知,SQL 和 NoSQL 之间的主要区别(除了可扩展性问题)是 SQL 存储在表中,而 NoSQL 以不同的方式存储(Key-Value/Graph/xml 等)。

我似乎无法理解这两个事实(可扩展性和存储策略)之间的联系。这些对我来说似乎是无关的事情(可能是由于缺乏理解)。

sql scalability nosql horizontal-scaling

6
推荐指数
1
解决办法
9026
查看次数

Kubernetes 水平 pod 自动缩放初始延迟?

它们是 Kubernetes 水平 pod 自动缩放中的配置,用于指定在向上/向下扩展之前运行或创建 pod 的最小延迟吗?

例如像这样的东西:

# I am looking for a flag like this
--horizontal-pod-autoscale-initial-upscale-delay=5m0s

# Similar to these existing flags
--horizontal-pod-autoscaler-downscale-delay=2m0s
--horizontal-pod-autoscaler-upscale-delay=2m0s
Run Code Online (Sandbox Code Playgroud)

结果是:

  • 在任何高档发生之前等待 5 分钟
  • 5 分钟后,最多每 2 分钟执行一次降级

我有一种情况,即 Pod 在启动时消耗大量资源进行引导(这是预期的),但我不希望它在此期间扩展,一旦引导完成,它可能有资格进行自动扩展。

horizontal-scaling kubernetes

6
推荐指数
1
解决办法
3158
查看次数

Kubernetes Horizo​​ntal Pod Autoscaler 如何计算多容器 Pod 的 CPU 利用率?


问题 1.)
给定一个多容器 pod 的场景,其中所有容器都有一个定义的 CPU 请求:
Kubernetes Horizo​​ntal Pod Autoscaler 如何计算多容器 pod 的 CPU 利用率?
它是平均的吗?(((500m cpu req + 50m cpu req) /2) * X% HPA 目标 cpu 利用率
是否添加它们? ((500m cpu req + 50m cpu req) * X% HPA 目标 cpu 利用率
是否单独跟踪它们?( 500m cpu req * X% HPA 目标 cpu 利用率 = 目标 #1,50m cpu req * X% HPA 目标 cpu 利用率 = 目标 #2。)

问题 2.)
给定多容器 pod 的场景,其中 1 个容器具有为其他容器定义 CPU 请求和空白 CPU 请求:
Kubernetes …

api containers horizontal-scaling autoscaling kubernetes

6
推荐指数
1
解决办法
2130
查看次数