Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何在多后端系统之间使用RESTful/Web/HTTP API同步数据?_Database_Api_Rest_Web - Fatal编程技术网

Database 如何在多后端系统之间使用RESTful/Web/HTTP API同步数据?

Database 如何在多后端系统之间使用RESTful/Web/HTTP API同步数据?,database,api,rest,web,Database,Api,Rest,Web,对于一个场景,我有3个系统,分别命名为a、B和C。a是一个web服务,它将为用户提供RESTfulAPI 也将通过RESTful API调用B和C。B和C也是web系列,但在其实现中,每个都使用一种数据库,例如Elasticsearch或Mysql 因此,假设像createUser这样的API,用户首先调用a`screateUser,然后a将在其实现中调用B`s和C`screateUser,将用户信息分别存储到两个数据库中。但是如果B失败而C成功,B的API将返回一个HTTP状态码,比如500,

对于一个场景,我有3个系统,分别命名为a、B和C。a是一个web服务,它将为用户提供RESTfulAPI 也将通过RESTful API调用B和C。B和C也是web系列,但在其实现中,每个都使用一种数据库,例如Elasticsearch或Mysql

因此,假设像
createUser
这样的API,用户首先调用a`s
createUser
,然后a将在其实现中调用B`s和C`s
createUser
,将用户信息分别存储到两个数据库中。但是如果B失败而C成功,B的API将返回一个HTTP状态码,比如500,告诉a操作失败,数据尚未保存。C很好,数据已经保存。现在问题出现了,数据需要同步或回滚

在这种情况下,我可以通过调用类似于
removeUser
的API来删除C中的数据。但如果网络状况突然恶化,这也可能失败。所以我必须为这个任务添加一些重试逻辑和一个后台队列。它很快变得过于复杂

所以我想问的是,有没有更好的方法或标准解决方案来解决RESTful/Web/HTTP API之间的同步问题?谢谢