在为支持全球分布式设备的IoT系统调试后端应用程序时,解决方案架构师注意到,过时的数据有时会发送到用户设备.设备通常共享数据,并且在大多数情况下,过时的数据不会引起问题.但是,当设备在更新后读取陈旧数据时,设备操作会中断.全局系统在不同的AWS区域中部署了多个相同的应用程序堆栈.如果用户设备不在其本地地理区域内旅行,它将始终连接到地理位置最接近的AWS区域以写入或读取数据.使用AmazonDynamoDB全局表在所有受支持的AWS区域中都可以使用相同的数据.应该进行哪些更改以避免引起设备操作中断()
A.更新后端以使用高度一致的读取.更新设备以始终写入和读取其本地AWS区域
B.在DynamoDB全局表上全局启用强一致性.更新后端以使用强一致性读取
C.将后端数据存储区切换到具有跨区域副本的Amazon AuroraMySQL.更新后端以始终写入主端点
D.选择一个AWS区域作为主区域并仅在该AWS区域中执行所有写入.更新后端以使用高度一致的读取
A、更新后端以使用高度一致的读取.更新设备以始终写入和读取其本地AWS区域
解析:DynamoDB不支持跨区域的高度一致的读取.因此,如果您写入一个Region并从另一个Region读取,则读取的响应可能包含过时的数据,这些数据不能反映该另一个Region中最近完成的写入的结果."一个应用程序可以读取数据并将其写入任何副本表.如果您的应用程序仅使用最终一致的读取,并且仅对一个AWS区域发出读取,则它无需任何修改即可工作.但是,如果您的应用程序需要高度一致的读取,则它必须执行DynamoDB不支持跨区域的高度一致的读取.因此,如果您写入一个区域并从另一个区域读取,则DynamoDB不支持跨区域的高度一致的读取.其他区域最近完成写入的结果.如果应用程序大约同时更新不同区域中的同一项目,则可能会发生冲突.为了帮助确保最终的一致性,DynamoDB全局表使用并发更新之间的最后一个写入者赢取对帐,在这种情况下,DynamoDB会尽最大努力确定最后一个写入者.使用此冲突解决机制,所有副本将就最新更新达成一致,并收敛到它们都具有相同数据的状态."