我正在开发一个新的应用程序(应用程序 2),我已经有一个现有的应用程序(应用程序 1)具有不错的用户群。
应用程序 2 针对相同的用户群,用户可以使用任何一个应用程序或两者都使用,我如何跨应用程序共享用户数据(多实体)?
选项 1 - 共享数据库听起来是个坏主意,因为我最终会在 2 个不同的地方编写验证规则。
选项 2 - 中央服务和数据存储将意味着重新编写大部分运行良好且代码库非常庞大的应用程序 1。
选项 3 - 将 App 1 数据存储区视为中央数据存储区并将其公开为 API。App 2 可以使用它来读取和写入数据。对于这个解决方案,我仍然有几个问题 -
- 应用 2 现在依赖于应用 1,这意味着应用 1 问题会影响应用 2。我可以通过在应用 2 中缓存数据来解决这个问题。这会导致其他问题。
- App 1 中更改的数据不会立即反映在 App 2 中,这是要求之一。我可以通过 App 1 和 App 2 之间的发布/订阅模型来解决这个问题。
- 应用程序 2 始终使用 API 将数据写入应用程序 1 数据存储区,我可以将数据推送回应用程序 2,但它并不一致,而是最终一致。
- App 2 将数据写入自己的数据存储区,然后异步推送到 App 1。这会导致数据冲突问题。
我如何在不给我的两个应用程序引入巨大复杂性的情况下处理这个问题。