我开始尝试使用CouchDB,因为它看起来像是我们遇到的某些问题的完美解决方案.鉴于所有工作都将在一个没有遗留依赖关系的全新项目上,您建议使用哪个客户端库,为什么?
如果我们使用的操作系统有任何重叠,这将更容易.FreeBSD只在其ports集合中提供了py- simplecouchdb,但该库的项目网站表示要使用CouchDBKit.这些都没有Ubuntu,它只与CouchDB一起发布.由于这两个操作系统没有共同的库,我可能会从源代码安装一些东西(如果我有时间的话,希望能够将软件包提交给Ubuntu和FreeBSD人员).
对于那些感兴趣的人,我想使用CouchDB作为在各种服务之间传递的数据的方便的中间存储位置 - 考虑消息总线系统但不太正式.例如,我们有守护进程下载和解析网页,然后将有趣的位发送到其他守护进程以进行进一步处理.很多这些对象在运行时都是不明确的("这里有一些HTML,加上一组元数据,还有一些在其上运行的动作").而不是将其序列化为ad-hoc本地网络协议或将其粘贴在PostgreSQL中,我宁愿使用为此目的而设计的东西.我们目前正在使用NetWorkSpaces这个角色,但它几乎没有广泛的支持或CouchDB的用户社区.
我需要一些实施建议.我有一个MYSQL数据库,它将被远程写入以便在本地处理任务,我需要用PHP编写的应用程序,以便在进入时执行这些任务.
但当然我的PHP应用程序需要被告知何时运行.我想过使用cron作业,但我的应用程序是在Windows机器上.其次,我需要每隔几秒钟不断检查一次,而cron只能每分钟检查一次.
我想过编写一个PHP守护进程,但我正在接受它的工作,如果它甚至是一个好主意!
我很感激有关最佳方法的任何建议.
我正在重构一个将进行大量计算的分析系统,我需要一些关于可能的架构设计的想法,以解决我面临的数据一致性问题.
当前架构
我有一个基于队列的系统,其中不同的请求应用程序创建最终由工作者使用的消息.
每个" 请求应用程序 "将大型计算细分为较小的部分,这些部分将被发送到队列并由工作人员处理.
当所有部分都完成后,原始的"请求应用程序"将合并结果.
此外,工作者使用来自集中式数据库(SQL Server)的信息来处理请求(重要:工作人员不会更改数据库上的任何数据,只会消耗它).

问题
好.到现在为止还挺好.当我们包含更新数据库信息的Web服务时,就会出现问题.这可能在任何时候发生,但至关重要的是,源自相同"请求应用程序"的每个"大计算"在数据库上看到相同的数据.
例如:
我不能让工人W2使用数据库的状态S1.为了使整个计算保持一致,它应该使用先前的S0状态.
思考
一种锁定模式,用于防止Web服务器在工作者消耗数据时更改数据库.
在数据库和worker(通过req.app控制db缓存的服务器)之间创建新层
我正在等待第二个解决方案,但对此并不十分自信.
有什么好主意吗?我设计错了,还是错过了什么?
OBS:
architecture sql-server distributed message-queue distributed-caching