便携式持久性队列 - >上传

时间:2012-06-04 16:30:19

标签: java objective-c mobile architecture

我需要实现一个磁盘支持的队列,该队列可以接受来自多个线程的实时分析数据,然后通过可能有故障的传输上传该数据。最初针对Java但是长期我们需要在Objective-C,Flash,JavaScript中使用相同的机制。针对Android Java和桌面。

这将包含在单个进程中,因此MQ解决方案可能已经解决。性能是一个重要的考虑因素,这意味着我们会为性能交换一些可靠性。

Architecture Diagram

我很好奇两件事:

  1. 鉴于上述架构,是否有任何可用的技术可以完全或部分解决这个问题?
  2. 鉴于最终在不同平台上重新实现或理想地重新使用这种机制的目标,有没有办法以一种可以很容易地用于Objective-C& Android Java?
  3. 这个架构看起来怎么样?

1 个答案:

答案 0 :(得分:0)

如果您想保留有限数量的数据(循环日志),并且能够为其保留固定数量的持久性内存,那么最有效的解决方案是memory-mapped buffers。 Persister只是几个缓冲区的缓存,同时为分析队列和上传器提供服务。

当在其他平台上重新实现它时,平台可能没有映射工具。在这种情况下,可以直接读取和写入缓冲区。这可能比映射到内存效率低,但效率仍然低于其他解决方案(例如嵌入式数据库)。

对于体系结构,图片不反映从persister读取数据的情况(或者需要什么样的persister?)。然后,分析队列实际上包含整个数据(包括持久性),并且命名为分析队列的是主内存中的缓冲区,它们可能不是连续的,因此更好的名称是缓冲区缓存而不是队列。