Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Microservices 微服务跨数据库引用完整性_Microservices - Fatal编程技术网

Microservices 微服务跨数据库引用完整性

Microservices 微服务跨数据库引用完整性,microservices,Microservices,我们有一个管理代码的数据库,例如有效货币列表、国家代码列表等(以下称为CodesDB) 我们还有多个微服务,在一个单一的app+数据库中,它们对CodesDB表中的行具有外键约束 当microservice收到修改数据的请求时,我有哪些选项可以确保请求中传递的代码有效 我目前倾向于让CodesDB微服务在服务总线上发布事件,宣布何时添加或修改代码,然后让其他微服务对该类型代码感兴趣(国家/货币/等)然后可以向CodeDB微服务发出API请求,以获取其所需的状态并在其本地数据库中反映更改。这样,我

我们有一个管理代码的数据库,例如有效货币列表、国家代码列表等(以下称为CodesDB)

我们还有多个微服务,在一个单一的app+数据库中,它们对CodesDB表中的行具有外键约束

当microservice收到修改数据的请求时,我有哪些选项可以确保请求中传递的代码有效

我目前倾向于让CodesDB微服务在服务总线上发布事件,宣布何时添加或修改代码,然后让其他微服务对该类型代码感兴趣(国家/货币/等)然后可以向CodeDB微服务发出API请求,以获取其所需的状态并在其本地数据库中反映更改。这样,我们就可以在每个微服务数据库中获得引用完整性


这是正确的方法吗?还有其他推荐的方法吗?

异步基于事件的通知是micro services world中常用的一种模式,用于确保最终的一致性。根据您的一致性要求有多严格,您可能必须确保进行额外的检查

另一种可能的方法是使用

使用的只读数据存储。这是一种模式,其中来自多个服务的数据以非规范化形式存储在只读数据存储中。使用上述方法异步更新数据。消费者无需查询多个服务即可快速访问数据


缓存—根据性能或一致性要求,您也可以使用分布式或复制

基于事件的异步通知是微服务世界中常用的一种模式,用于确保最终的一致性。根据您的一致性要求有多严格,您可能必须确保进行额外的检查

另一种可能的方法是使用

使用的只读数据存储。这是一种模式,其中来自多个服务的数据以非规范化形式存储在只读数据存储中。使用上述方法异步更新数据。消费者无需查询多个服务即可快速访问数据

缓存—根据性能或一致性要求,您也可以使用分布式或复制