Database 在Laravel中使用数据库读/写集群时,如何保证模型的一致性?

Database 在Laravel中使用数据库读/写集群时,如何保证模型的一致性?,database,laravel,concurrency,Database,Laravel,Concurrency,我们有一个数据库群集设置,其中包含多个读取数据库主机和一个数据库写入主机 如果我们更新一个Laravel模型,它会立即写入写入主机,然后在数据从写入主机传播到读取主机之前会有一个小的延迟 如果我们再次对模型进行读取,则会使用读取数据库,因此在数据传播的一定时间内,无法保证读取得到的是更新的数据 是否有一种解决方法可以保证在再次执行读取之前更新已传播到只读主机?我刚刚遇到了同样的问题 基本上,我决定的唯一简单方法是为同一个数据库添加两个数据库连接,一个使用集群端点,它自动将写操作定向到主数据库,将

我们有一个数据库群集设置,其中包含多个读取数据库主机和一个数据库写入主机

如果我们更新一个Laravel模型,它会立即写入写入主机,然后在数据从写入主机传播到读取主机之前会有一个小的延迟

如果我们再次对模型进行读取,则会使用读取数据库,因此在数据传播的一定时间内,无法保证读取得到的是更新的数据


是否有一种解决方法可以保证在再次执行读取之前更新已传播到只读主机?

我刚刚遇到了同样的问题

基本上,我决定的唯一简单方法是为同一个数据库添加两个数据库连接,一个使用集群端点,它自动将写操作定向到主数据库,将读操作定向到从数据库,另一个专门使用writer端点


然后,对于热重新加载的情况,例如,$model->save->fresh不要这样做,而是,$model->save,然后model::connection'writer->where->首先重新加载它。

您有什么数据库引擎,为什么这样做


如果它是MySQL的主从配置,那么我会尝试通过代理所有查询:

我仍然面临的问题是故障转移。如果集群在读写器之间发生故障,那么您必须更改写器的DNS或更改代码中的DNS。这看起来很棒。我们正在使用AWS RDS。有没有整合的方法?我会在EC2上使用MySQL,这样你就有了灵活性