- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个完全用C语言编写的高性能系统(我想是这样,但还没有达到100%),我认为我在设计时犯了一些大的架构错误。原因是它不容易扩展。
虽然它目前运行得很好,但我想确保它在水平方向上可伸缩,以适应几个月后可能出现的销量增长。
该系统有大量的数据并发连接进入系统,经过处理后最终进入数据库。我们目前每分钟大约有300条记录/连接。
系统的架构是这样的。
整个系统托管在亚马逊的win 2003服务器8gb RAM/4vcpu基础设施上
C#Socket服务器,获取数据并放入MSMQ
用于数据和插入到sql server 2008数据库表的处理器。其中一个主表即使清除了周期性数据,也有大约3gb的数据。这有正确的索引,而且当前的报告速度相当快,甚至到了远程位置。
然后将处理后的数据发送到MQ,然后对MQ进行处理,以生成某些警报的规则
除了上面提到的,还有其他一些相关的程序
现在主要担心的是步骤(3)中处理器的可伸缩性和Sql server 2008的可伸缩性。随着并发连接的大小随着sql server数据的增加而增加,这将使我的生活更加艰难。
我想出了两个选择。其中一个是后端处理器的主要替代品,因为当前的系统完全基于微软技术。
对于所有选项,对于最大的主表,使用postgresql/pgpool III负载平衡(流复制)存储解决方案。其他表和模式仍将保留在sql 2008中。这给了我一个经济有效的数据库存储解决方案。
选项1:
-用JBOSS&HornetQ替换MSMQ
-将步骤3中的数据处理器放到JBOSS ejb容器中的容器管理的“消息驱动bean”中,它将为我提供负载平衡和集群的选项。
-此选项将需要我将解决方案的主要部分转移到unix/linux(我正在考虑fedora)
选择2:
-用ActiveMQ的队列替换MSMQ(集群和负载平衡)
-编写一个Java应用程序来处理队列消息并处理数据库持久性。
此选项将允许我使用activemq集群实例和java应用程序的新实例增加linux服务器的数量。
选择3:
-用ActiveMQ的队列替换MSMQ(集群和负载平衡)
-只使用当前的数据处理器(通过一些小的更改将数据推送到postgresql)
此选项将强制我保留Windows
请注意,该系统是一个实时系统。如果系统是99%防故障的就足够了。这不是一个交易系统,所以我可以承受少量的数据丢失。
不知道我是否已经把我想要的解释清楚了。但我欢迎任何问题,因为它们肯定会帮助我更好地解释。
请您提出宝贵的建议,为长期解决方案作出正确的选择。实际上我自己也反对选项3,但我不想把它从列表中删除而再次犯错。
穆图
增加澄清:
很抱歉没有说清楚。
一。问题实际上是架构的可伸缩性。尤其是横向可伸缩性。
2。目前的平均负荷约为每分钟300次,可能不会在一分钟内完全分散。
三。在接下来的8-12个月内,负荷可能会更容易地扩大到10倍。
问题是我们在一个月内销售了大约50台设备,而现在销售团队的增长太快了。我相信很快就会翻倍。
Sql server有大约8gb的数据,我们限制了每个设备的存储量,这有助于减小大小。目前最大的表被划分为每200个设备一个分区,查询是合理的。但我可以看到Sql方面的一个瓶颈,即可伸缩性。
因此,即使将Sql server放在另一台服务器上,我在Sql server上可以同时执行的更新量也将受到限制。我看不到Sql server负载平衡的水平可伸缩性选项(尽管它支持集群的高可用性选项)。我是否在负载平衡方面误解了MS Sql?
最佳答案
根据连接数的不同,每个连接每秒5次更新的次数并不多。你没说你有多少人脉,只是希望有。
在Java中,我在您的情况下(我想在任何技术中都一样简单)要做的就是使用成批的数据。
消息传递和数据库的性能问题通常与您执行的消息/事务的速率有关。我将拥有一个任务/线程,它接收所有挂起的消息,并将这些消息滚动到一个批处理、一条MQ消息、一个数据库事务中。此解决方案的优雅之处在于,MQ消息传递越慢,批处理越大,处理每个连接消息的效率也越高。剩下的问题是,消息/数据库能否处理数据的带宽。
关于java - 性能和可伸缩性的架构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4637991/
是否可以简化在裸机上运行的这条链: 具有随时间变化的副本数的 StatefulSet 服务 使用 proxy-next-upstream: "error http_502 timeout invali
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我需要为应用程序制定架构。它专为销售产品而设计。 系统每天将接受大约 30-40k 的新产品。它将导致在表 product 中创建新记录。 系统应保留价格历史记录。用户应该能够看到产品 A 的价格在去
我需要一些帮助来理解 PHP 的内部工作原理。 还记得,在过去,我们曾经写过 TSR(Terminate and stay resident)例程(pre-windows 时代)吗?一旦该程序被执行,
1.Nginx 基础架构 nginx 启动后以 daemon 形式在后台运行,后台进程包含一个 master 进程和多个 worker 进程。如下图所示: master与
本文深入探讨了Kubernetes(K8s)的关键方面,包括其架构、容器编排、网络与存储管理、安全与合规、高可用性、灾难恢复以及监控与日志系统。 关注【TechLeadCloud】,
我知道 CNN 的工作原理,包括每一层的用途(Dropout、Pooling 等)。但是,在为新数据集设计 CNN 时,我不知道要使用多少个 Conv-Relu-Pool 层,在最终获得输出之前我应该
在基于 REST 的架构中,资源和方法之间有什么区别。有吗? 最佳答案 资源是您的应用程序定义的东西;它们与物体非常相似。方法是 HTTP 动词之一,例如 GET、POST、PUT、DELETE。它们
我想用 oneOf仅在 xyType 的值上不同的模式属性(property)。我想要其中两个:一个是 xyType设置为 "1"第二个在哪里xyType是 任何其他值 .这可以使用 json 模式完
寻求 PHP 架构师的建议! 我对 PHP 不是很熟悉,但已经接管了一个用该语言编写的大型分析包的维护工作。该架构旨在将报告的数据读取到大型键/值数组中,这些数组通过各种解析模块传递,以提取每个模块已
这些存在吗? 多年来,我一直是大型强类型面向对象语言(Java 和 C#)的奴隶,并且是 Martin Fowler 及其同类的信徒。 Javascript,由于它的松散类型和函数性质,似乎不适合我习
我已经阅读了 Manning 的 Big Data Lambda Architecture ( http://www.manning.com/marz/BD_meap_ch01.pdf ),但仍然无法
在过去的几年里,我做了相当多的 iOS 开发,所以我非常熟悉 iOS 架构和应用程序设计(一切都是一个 ViewController,您可以将其推送、弹出或粘贴到选项卡栏中)。我最近开始探索正确的 M
我有以下应用程序,我在其中循环一些数据并显示它。 {{thing.title}} {{thing.description}}
昨天我和我的伙伴讨论了我正在开发的这个电子购物网站的架构。请注意,我为此使用 ASP.NET。他非常惊讶地发现我没有将添加到购物车的项目保留在 ArrayList 或其他通用列表中,而是使用 LINQ
我正在使用在 tridion 蓝图层次结构中处于较低位置的出版物。从蓝图中较高级别的出版物继承的一些内容和模式不适合我的出版物,并且永远不会被我的出版物使用。 我将跟进添加这些项目的内部团队,并尝试说
我目前已经在 Cassandra 中设计了一个架构,但我想知道是否有更好的方法来做事情。基本上,问题在于大多数(如果不是全部)读取都是动态的。我构建了一个分段系统作为应用程序服务,读取动态自定义查询(
我正在按照 documentation 中给出的 icingaweb UI v 2.0 布局执行在服务器上设置 icinga 的步骤。 。我成功进入设置页面,该页面要求您输入 token ,然后按照步
我必须保存来自不同社交媒体的用户的不同个人资料。例如用户可能有 1 个 Facebook 和 2 个 Twitter 个人资料。如果我保存每个配置文件它作为新文档插入不同的集合中,例如 faceboo
我的团队使用 Puppet 架构,该架构目前可在多个环境(流浪者、暂存、生产)中容纳单个应用程序。 我们现在想要扩展此设置的范围以支持其他应用程序。他们中的许多人将使用我们已经定义的现有模块的子集,而
我是一名优秀的程序员,十分优秀!