
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
读写分离解决的是高并发写操作加锁导致的性能下降问题,作为一种编程思想,体现在JDK中是Copy-On-Write写时复制容器,它支持并发的读,如果是写操作,那么会创建一个新的容器,在新的容器中完成写操作,在这个过程中,读操作依然读的是旧容器中的值。
完成写操作之后,还会把新容器的引用指向原有容器的引用。这样做的好处就是,可以支持并发的读,而不需要加锁,因为当前容器不会添加或者删除元素。所以Copy-On-Write容器是一种读写分离容器,体现了读写分离的思想。广泛应用在系统软件架构上,如DDD领域中的CQRS。
CQRS本身只是一个读写分离的思想,全称是:Command Query Responsibility Segregation,即命令查询职责分离。一个命令表示一种意图,表示命令系统做什么修改,命令的执行结果通常不需要返回;一个查询表示向系统查询数据并返回。另外一个重要的概念就是事件,基本对应DDD中的领域事件。CQRS架构的核心出发点是将整个系统的架构分割为读和写两部分,从而方便我们对读写两端进行分开优化。架构图如下:
从图上可以看到,当 command 系统完成数据更新的操作后,会通过「领域事件」的方式通知 query 系统。query 系统在接受到事件之后更新自己的数据源。所有的查询操作都通过 query 系统暴露的接口完成。在数据库领域,Mysql、Redis、Mongodb等都通过事件溯源方式实现主从复制从而达到读写分离的应用目标。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请添加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。