关于Couchbase 3.0版本后提供的DCP协议,是couchbase内部用来做节点间,集群间数据复制和传输的协议;有了DCP后,couchbase可以和许多其他大数据处理系统进行集成,例如和分布式消息系统Kafka的集成connector就是使用DCP client;这篇博客从原理和代码示例结合,展示一下DCP的魅力!
Couchbase从3.0版本之后,使用DCP协议来处理bucket的数据变化(bucket是用来存储数据的容易,可以类比到其他系统的数据库database的概念);Couchbase内部重要组件也用到了DCP:集群内部节点间的数据复制(HA);跨数据中心间的数据复制(DR-把一个数据中心的数据顺序的复制到另一个数据中心);索引查询引擎(couchbase内部为实现数据查询功能而提供的索引机制)—所以有了DCP,文档的更新可以通过内存复制快速的同步给数据索引,在没有DCP之前,文档的更新要等到存储到磁盘上之后,才会被XDCR或者index引擎获得。
有两个重要的概念,需要先被理解:
1)DCP 客户端: 将一个或多个couchbase服务器节点上数据变更信息以数据流的形式读入;
2) 变更(Mutation):一个Mutation是一个事件,当一个指定的文档被删除,或更改时就会触发这个事件;所以文档的增删改,过期都会产生一个