Tag: 可伸缩性

数据库可扩展性适用于高负载应用?

我已经看到应用程序有集群Web服务器(如10到20服务器)具有可扩展性,他们可以在Web服务器之间分配负载。 但我总是看到所有使用单个数据库的网络服务器。 现在考虑任何电子商务或铁路网络应用程序,其中有数百万用户在任何时间点击应用程序。 要在Web服务器端进行扩展,我们可以进行服务器集群,但我们如何扩展数据库? 因为我们不能像多个网络服务器一样拥有多个数据库,因为一个dB将具有与其他一个不同的状态:) 更新: –在关系型DBMS中扩展数据库是不可能的,但只在像mongo db等的无SQL数据库中?

用于运行Java Web应用程序的单个服务器的可伸缩性

我希望获得有关部署到单个Tomcat实例的单服务器Java Web应用程序可以处理的工作负载规模的更多信息。 特别是,让我假装我正在开发一个类似维基百科的使用模式的Wiki应用程序。 如果我将服务器部署在具有以下配置的计算机上,我的服务器可以在内存不足之前可以同时处理多少请求,或者显示压力过大的迹象: 4核高端Intel Xeon CPU 8GB RAM RAID-1中的2个HDD(无SSD,无基于PCIe的固态存储) RedHat或Centos Linux(64位) Java 6(64位) MySQL 5.1 / InnoDB 另外,我们假设MySQL DB安装在与Tomcat相同的机器上,并且所有Wiki数据都存储在DB中。 此外,让我们假装Java应用程序构建在以下堆栈之上: SpringMVC为前端 Hibernate / JPA用于持久化 DI和安全等的spring 如果你没有使用确切的配置,但有评估类似架构的可扩展性的经验,我也会非常有兴趣听到这个。 提前致谢。 编辑 :我想我没有正确地表达我的问题。 我用最多的选票标记答案作为最佳答案,我将在社区维基区域重写我的问题。 简而言之,我只想了解您在Java应用程序能够在一台物理服务器上处理的工作负载规模的经验,以及有关应用程序本身的类型和体系结构的一些描述。

如何扩展Quartz调度程序?

我计划使用Quartz调度程序,因为我阅读了许多关于它的好意见。 我的问题如下:在任何给定时间,我将有数千个触发器存在于系统中。 大多数触发器只触发一个事件而死亡。 此外,我很可能在分配后取消许多工作(基于新输入)。 石英可以扩展到这个吗? 建议使用哪个JobStore? 我打算在mysql上使用JDBC。 补充信息 :我的工作将通过HTTP发送电子邮件或将数据发布到其他服务(通过WAN)。

分布式事务和/或群集中共享数据的Java解决方案

集群/分发Java服务器应用程序的最佳方法是什么? 我正在寻找一种方法,允许您通过添加更多的应用程序服务器和更多的数据库服务器来横向扩展。 您会建议采用哪些技术(软件工程技术或特定技术)来解决此类问题? 您使用哪些技术来设计持久层以扩展到许多读取器/写入器扩展应用程序事务并扩展对共享数据的访问(最佳方法是消除共享数据;可以应用哪些技术来消除共享数据)。 似乎需要使用不同的方法,具体取决于您的事务是读取还是写入繁重,但我觉得如果您可以优化“写入”繁重的应用程序,这对于“读取”也是有效的 “最佳”解决方案允许您为单个节点编写Java应用程序,并希望“隐藏”访问/锁定共享数据的大部分细节。 在分布式环境中,最困难的问题总是归结为多个事务访问共享数据。 似乎有两种常见的并发事务方法。 显式锁 (在分布式系统中的多个节点之间极易出错并且协调速度很慢) 软件事务内存 (STM)AKA乐观并发,如果事务发现共享状态已更改(并且稍后可以重试事务),则在提交期间回滚事务。 哪种方法可以更好地扩展,在分布式系统中有哪些权衡取舍? 我一直在研究扩展解决方案(以及提供如何扩展的示例的一般应用程序),例如: Terracotta – 通过使用Java的并发锁定机制(synchronized,ReentrantReadWriteLocks)扩展Java内存模型以包含分布式共享内存,提供“透明”扩展。 Google App Engine Java – 允许您编写Java(或python)应用程序,这些应用程序将分布在“云”服务器中,您可以在其中分发服务器处理事务,并使用BigTable存储持久数据(不确定访问共享的事务的方式)数据或处理锁定争用,以便能够有效扩展) Darkstar MMO服务器 – Darkstar是Sun的开源MMO(大型多人在线)游戏服务器,它们以线程事务方式扩展事务,允许给定事务仅运行一定量并提交,如果需要很长时间,它将回滚(有点像软件事务内存)。 他们一直在研究支持多节点服务器设置以进行扩展。 Hibernate的乐观锁定 – 如果你使用的是Hibernate,你可以使用它们的乐观并发支持来支持软件事务内存类型的行为 Apache CouchDB应该自然地以网状配置“扩展”到许多读写器DB。 (有一个很好的例子,说明如何管理锁定数据或确保事务隔离?): JCache – 通过将结果缓存到您可以在Google appengine中使用的常见查询来扩展“读取”繁重的应用程序,以访问memcached并缓存其他经常读取的数据。 Terracotta似乎是最完整的解决方案,因为您可以“轻松”修改现有服务器应用程序以支持扩展(在定义@Root对象和@AutLockRead / Write方法之后)。 问题是真正从分布式应用程序中获得最大的性能,分布式系统的优化实际上并不是真的,你必须设计它,知道对象访问可能被网络I / O阻止。 为了正确扩展,似乎总是归结为分区数据和负载平衡事务,例如给定的“执行单元”(cpu core – > thread – >分布式应用程序节点 – > DB主节点) 似乎通过群集使任何应用程序正确扩展,您需要能够根据其数据访问读/写对事务进行分区。 […]

开源替代oracle一致性?

是否有任何开源替代oracle一致性? (顺便说一下,连贯性的成本是多少?)