解析OpLog订阅MongoDB的数据变更就这么简单

解析OpLog订阅MongoDB的数据变更就这么简单

前言 我们开源了一个订阅分发mysql的binlog的项目,一直用的非常好,忽然有天开发说能不能支持MongoDB的数据订阅呢,MongoDB的使用度也挺广泛的。安排。经过简单的了解后发现MongoDB也有类似binlog的机制,最终花了两天时间把功能完成,并统一抽象集成到binlog开源项目中,使用和binlog同一套订阅分发模型管理MongoDB数据源。整个过程非常顺利,比整mysql的binlog要简单的多了。 binlog数据订阅...

阅读全文 »

浅析jetcd中的KeepAlive实现

浅析jetcd中的KeepAlive实现

前言 Etcd的Java客户端有很多开源实现,Jetcd是Etcd官方仓库的Java客户端,整体api接口设计实现和官方go客户端类似,简洁易用。其中,租期续约的接口提供了两个分别是keepAliveOnce和keepAlive。功能如其名,keepAliveOnce是单次续约的接口,如果要保持租约,需要手动触发这个接口,所以这个接口基本不用。而keepAlive是自动续约保活的接口。大多数场景下,使用keepAlive即可,但是针对不同的场...

阅读全文 »

Raft分布式共识算法动画演示

Raft分布式共识算法动画演示

前言 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可理解性,Raft 将一致性算法分解成了几个关键模块,如领导人选举、日志复制。这个演示动画就是为了方便理解这几个关键模块而设计的。 Raft 动画演示中文版: http://www.kailing.pub/raft/index.html 动...

阅读全文 »

腾讯消息中间件TubeMQ开源了

腾讯消息中间件TubeMQ开源了

TubeMQ总体介绍 TubeMQ是腾讯大数据在2013年开始研发的分布式消息中间件系统(MQ),专注服务大数据场景下海量数据的高性能存储和传输。经过近7年上万亿的海量数据沉淀,较之于众多的开源MQ组件,TubeMQ在海量实践(稳定性+性能)和低成本方面有一定的优势。博文转载自官方的文档,博主花了半天搭建开发环境到运行,到发送消息接收消息体验下来,发现不管是腾讯的TubeMQ,还是rocke...

阅读全文 »

etcd选主实现故障主备秒级切换高可用架构

etcd选主实现故障主备秒级切换高可用架构

什么是Etcd? etcd是一个强大的一致性的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器群访问的数据。它优雅地处理网络分区期间的领导者选举,并且可以容忍机器故障,即使在领导者节点中也是如此。从简单的Web应用程序到Kubernetes,任何复杂的应用程序都可以读取数据并将数据写入etcd。这是官方对Etcd的描述,基于这些特性,Etcd常用于分布式配置、分布式...

阅读全文 »

Windows下安装Etcd集群及etcd-viewer

Windows下安装Etcd集群及etcd-viewer

前言 最近在研究etcd,用于解决一个服务的主备切换的问题,工欲善其事必先利其器,先把本地所需的所有环境搭建好。涉及到本地Windows环境的etcd集群的搭建,以及etcd可视化web工具etcd-viewer的搭建。etcd使用go语言开发的,在Windows平台上最终编译成了可执行的exe文件,部署非常容易。 安装etcd集群 下载etcd 下载地址: https://github.com/etcd-io/etcd/releases 选择对应的版本下载即可,Windows版本...

阅读全文 »

Soul Api网关技术选型

前言 最近公司中台api有用到网关的需求,特整理了下网关的基本功能以及Soul网关系统的功能架构设计, 记录于此。 最终选择了Soul网关系统还是因为其架构设计清晰,基于spring boot而且提供了Admin管理后台,而且底层使用spring webflux响应式编程,基于zk的本地缓存设计支持分布式多实例部署,性能问题就不无需多虑了 网关有哪些功能需求? 网关需求 限流 为了保护后端服务的稳定,不...

阅读全文 »