分布式一致性协议 - EPaxos

总结

epaxos作为paxos族中的一员,并不是单独存在的。所以我在文中开篇给出总结,罗列与basic-paxos、mutli-paxos之间的区别。带着目的学习,可能相对容易理解一些。

阅读全文

ControllerAdvice拦截Filter抛出的异常

场景还原

@ControllerAdvice在spring中用于全局的异常拦截和处理。Filter则过滤请求,多用于请求鉴权。它们之间的关系如下:

                                        

阅读全文

分布式一致性协议 - Gossip

前面我们讲过CAP定理、Paxos、Raft,那么试想几个场景:

  • 我们要实现一个完全的AP系统。即集群中只有一个节点存活,也能向外提供服务。在此基础上,我们如何保证数据最终一致性?
  • 在一个庞大的集群中,对某个数据修改后,如何同步到其他节点?
  • 在一个去中心化的集群中,各节点都是对等节点。如何同步数据,使保证各节点数据达到一致?

阅读全文

分布式一致性协议 - CAP、BASE、NWR

这篇文章着重点不在于科普,毕竟关于CAP、BASE的理论的文章,网上很多。所以本文科普篇幅尽量小(只包含概念描述)。主要从几个侧面的问题来描述CAP,进而描述ACID、BASE理念。然后加入一点点调料,如何动态的切换一致性强度。

本文通过以下几个问题,从侧面描述。文中个人观点较多,看官理性对待。

阅读全文

分布式一致性协议 - Raft

学习raft之前,给大家推荐一个网站,这个网站动画描述raft运行过程。在看文章时对照该网站,可以帮助更好的理解raft。
http://thesecretlivesofdata.com/raft/

阅读全文

深入理解jvm03 - 垃圾收集器与内存分配策略

本系列博客为《深入理解Java虚拟机 - JVM高级特性与最佳实践》读书笔记。本书大量干货,适合初学jvm的人员,也适合为应付面试人员,比较推荐的一本书。本系列只为记录书中精髓,方便查阅与记忆。如有错误,欢迎指出 O(∩_∩)O

基于书中第二章总结,程序计数器、java虚拟机栈、本地方法栈随线程的生命周期创建和销毁,自然不用过多的考虑进行垃圾回收。而java堆、方法区则不一样,这一块的分配和回收是动态的,那本章的内容也是基于这两块的内容。

阅读全文

深入理解jvm02 - java内存区域与内存泄露异常

本系列博客为《深入理解Java虚拟机 - JVM高级特性与最佳实践》读书笔记。本书大量干货,适合初学jvm的人员,也适合为应付面试人员,比较推荐的一本书。本系列只为记录书中精髓,方便查阅与记忆。如有错误,欢迎指出 O(∩_∩)O

运行时数据区域

在启动java程序时,我们会给jvm分配指定的内存大小。而jvm则对该部分内存划分为若干区域。其中有的区域以来用户线程的启动和结束而建立和销毁,有的区域随jvm进程的启动而存在。
运行时数据区域

阅读全文

分布式一致性协议 - ZAB

ZAB 背景

学习ZAB,非常有必要聊聊它诞生的背景。因为在paxos的光芒下,还有必要折腾这样类似的算法吗?这个问题是我们初步了解ZAB关键。

阅读全文

分布式一致性协议 - Paxos

paxos 科普

分布式算法,不得不提paxos。它是目前公认的解决分布式共识问题最有效的算法之一,甚至可以说过去几十年里一切分布式一致性算法都来源于它。
那么要学习paxos,我们首先得认识它。一般描述它,都会包含两个词:分布式容错、分布式共识算法。那么它们是指什么呢?paxos又解决了什么样的问题呢?

阅读全文

分布式一致性协议 - 2PC, 3PC

在分布式系统中,每一个机器节点虽然都能明确的知道自己在事务操作中的结果是成功或失败,但无法直接获取其他节点的操作结果。因此在分布式环境中,为了保持事务的ACID特性,就需要增加一个“协调者”来管理其他节点(“参与者”)事务的提交和回滚。基于这个思想,衍生出二阶段提交和三阶段提交两种协议。

阅读全文