本文转自互联网
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
https://github.com/h3pl/Java-Tutorial
引用>喜欢的话麻烦点下明星哈
文章首发于我的个人博客:
www.how2playlife.com引用>
本文是微信公众号【Java技术江湖】的《探索复述,设计与实现》其中一篇,本文部分内容来源于网络,为了把本文主题讲得清晰透彻,也整合了很多我认为不错的技术博客内容,引用其中了一些比较好的博客文章,如有侵权,请联系作者。
该系列博文会告诉你如何从入门到进阶,复述,基本的使用方法,复述的基本数据结构,以及一些进阶的使用方法,同时也需要进一步了解复述的底层数据结构,再接着,还会带来复述,主从复制,集群,分布式锁等方面的相关内容,以及作为缓存的一些使用方法和注意事项,以便让你更完整地了解整个复述,相关的技术体系,形成自己的知识框架。
如果对本系列文章有什么建议,或者是有什么疑问的话,也可以关注公众号【Java技术江湖】联系作者,欢迎你参与本系列博文的创作和修订。
转自网络,侵删
早期的RDBMS被设计为运行在单之个CPU上,读写操作都由经单个数据库实例完成,复制技术使得数据库的读写操作可以分散在运行于不同CPU之上的独立服务器上,复述,作为一个开源的,优秀的键值缓存及持久化存储解决方案,也提供了复制功能,本文主要介绍复述的复制原理及特性。
复述,复制方式
复述的复制方式有两种,一种是主(主)——从(奴隶)模式,一种是从(奴隶)——从(奴隶)模式,因此复述的复制拓扑图会丰富一些,可以像星型拓扑,也可以像个有向无环:
复制优点
通过配置多个复述,实例,数据备份在不同的实例上,主库专注写请求,从库负责读请求,这样的好处主要体现在下面几个方面:
2、高性能
在一个复述,集群中,主负责写请求,奴隶负责读请求,这么做一方面通过将读请求分散到其他机器从而大大减少了主服务器的压力,另一方面奴隶专注于提供读服务从而提高了响应和读取速度。
复制缺点
复制提供了高可用性的解决方案,但同时引入了分布式计算的复杂度问题,认为有两个核心问题:
<李>数据一致性问题,如何保证主服务器写入的数据能够及时同步到奴隶机器上。李> <李>编程复杂,如何在客户端提供读写分离的实现方案,通过客户端实现将读写请求分别路由到主人和奴隶实例上。李>
上面两个问题,尤其是第一个问题是复述,服务实现一直在演变,致力于解决的一个问题。
复制实时性和数据一致性矛盾
复述,提供了提高数据一致性的解决方案,本文后面会进行介绍,一致性程度的增加虽然使得我能够更信任数据,但是更好的一致性方案通常伴随着性能的损失,从而减少了吞吐量和服务能力。然而我们希望系统的性能达到最优,则必须要牺牲一致性的程度,因此复述的复制实时性和数据一致性是存在矛盾的。
探索复述,设计与实现10:复述的事件驱动模型与命令执行过程