我试图设计一个系统,通过Web服务向数据库报告活动事件。 Web服务和数据库已经建好(COTS软件) - 我所要做的就是提供事件源。请帮我设计这个事件报告系统
但是,捕捉的是事件源需要容错。我们有多个可以与之交谈的复制数据库,因此如果我所说的Web服务或数据库出现故障,该软件可以快速切换到另一个正在运行的数据库。
虽然在所有数据库都关闭的情况下,我需要帮助。我已经设计了一个队列,可以在事件堆积时保留这些事件(并且在连接恢复后将其突发出去),但队列是内存结构:如果我的应用在此状态下崩溃,或者如果电力丢失等,则队列中的所有事件都将丢失。这是无法接受的。我需要的是一种持久化事件的方式,以便在数据库恢复联机时,即使发生断电或崩溃,我也可以发送一连串排队事件。
我知道我不想重新实现队列本身来使用文件系统作为后备存储。这将工作(我已经尝试过了) - 但是这种方法会显着降低系统速度,因为硬盘成为瓶颈。除此之外,我想不出一种设计这个系统的方法,只有当访问数据库不可用时,所有事件才安全地存储在硬盘上。
有没有人有任何想法? =)
使用文件系统作为后备存储时,您需要什么样的吞吐量?你使用的是什么样的硬盘? “客户端”正在运行的计算机的规格是什么? –
他们是非常便宜的商品机器,旨在运行操作系统和我们的软件。 –