php - 将多个应用程序实例之间的多个数据库同步到一个集中式服务器
问题描述
我有一个在 PHP 上运行的 Web 应用程序,在 MySQL 中有数据库。每家公司都有自己的本地服务器和自己的应用程序实例(赛车场)和一个云服务器,也有自己的实例。
我有像用户、门票、比赛结果这样的表格。每个表都与其他表有某种关系。我需要的是在应用程序的云实例上保存用户、票证并将这些分发到其他大厅实例。RaceResults 只需上传到云端。
我有一个使用以下步骤执行此操作的想法:
- 我想在云上获取的每个表都需要有 cloud_id 列来记住保存在云上的记录的 ID。
- 我需要在客户端和服务器上创建一个 REST API - 每当我需要同步记录时,客户端都会向服务器发送 api 请求 - 云返回新 ID - 并在需要时将这些记录分发给其他客户端实例。
- 我要同步的每个表都有它自己的关系——需要在客户端或服务器上解决——例如,tickets.user_id 将与客户端实例不同——这些列中的每一个都需要在发送之前或接收之后进行更改命令
我不喜欢这种方法的是
- 在调试和错误处理过程中有很多问题——如果从票证中引用的这个特定用户在这里不存在怎么办?
- 如果我想集中删除驱动程序会发生什么 - 如果我在云数据库中删除他,它必须以某种方式在其他机器上处理
- 我同步的每个表都有自己的同步过程,自己的代码来更改将要发送的字段(例如,在发送到云之前,ticket.user_id 必须更改为 users.cloud_id)
- 如果我将另一个客户端实例(大厅)添加到堆栈中,我需要将所有票同步到新大厅。当我从同步堆栈中删除客户端实例时,我需要将它们删除。这一切都附带了很多我必须自己为每个特定案例编写的代码。
我的问题是,对于类似的事情,是否有一些可行的解决方案,还是我做错了?
解决方案
推荐阅读
- optimization - 现有的 MODX 延迟加载
- ruby-on-rails - 如何在 FastJsonAPI 中将参数从控制器传递到序列化程序?
- asynchronous - java.lang.ClassNotFoundException:使用 camelahc 组件时未找到 org.reactivestreams.Publisher
- python - 使用 raw_input() 时在目录中查找文件的 python 选项卡功能
- c# - 具有依赖关系的 AddTransient
- sql-server - TFS 数据库增长迅速
- android - 如何在迁移期间删除未被任何其他对象引用的 Realm 对象?
- javascript - 如何获取指向 javascript 对象属性的链接数
- r - 过滤(dplyr)数据帧的R str函数
- swift - Xcode设置标签的文本来自另一个viewController传递的变量导致崩溃