分布式事务的基本概念
分布式环境的事务复杂性 当本地事务要扩展到分布式时,它的复杂性进一步增加了。 存储端的多样性。 首先就是存储端的多样性。本地事务的情况下,所有数据都会落到同一个DB中,但是,在分布式的情况下,就会出现数据可能要落到多个DB,或者还会落到Redis,落到MQ等中。 存储端多样性, 如下图所示: 事务链路的延展性 本地事务的情况下,通常所有事务相关的业务操作,会被我们封装到一个S...
分布式环境的事务复杂性 当本地事务要扩展到分布式时,它的复杂性进一步增加了。 存储端的多样性。 首先就是存储端的多样性。本地事务的情况下,所有数据都会落到同一个DB中,但是,在分布式的情况下,就会出现数据可能要落到多个DB,或者还会落到Redis,落到MQ等中。 存储端多样性, 如下图所示: 事务链路的延展性 本地事务的情况下,通常所有事务相关的业务操作,会被我们封装到一个S...
一、简述 截至到目前 (2019.04),HBase 有两个主要的版本,分别是 1.x 和 2.x ,两个版本的 Java API 有所不同,1.x 中某些方法在 2.x 中被标识为 @deprecated 过时。所以下面关于 API 的样例,我会分别给出 1.x 和 2.x 两个版本。完整的代码见本仓库: Java API 1.x Examples Java API 2.x ...
一、HBase过滤器简介 Hbase 提供了种类丰富的过滤器(filter)来提高数据处理的效率,用户可以通过内置或自定义的过滤器来对数据进行过滤,所有的过滤器都在服务端生效,即谓词下推(predicate push down)。这样可以保证过滤掉的数据不会被传送到客户端,从而减轻网络传输和客户端处理的压力。 二、过滤器基础 2.1 Filter接口和FilterBase抽象类 ...
一、集群规划 这里搭建一个 3 节点的 HBase 集群,其中三台主机上均为 Region Server。同时为了保证高可用,除了在 hadoop001 上部署主 Master 服务外,还在 hadoop002 上部署备用的 Master 服务。Master 服务由 Zookeeper 集群进行协调管理,如果主 Master 不可用,则备用 Master 会成为新的主 Master。 ...
一、基本概念 一个典型的 Hbase Table 表如下: 1.1 Row Key (行键) Row Key 是用来检索记录的主键。想要访问 HBase Table 中的数据,只有以下三种方式: 通过指定的 Row Key 进行访问; 通过 Row Key 的 range 进行访问,即访问指定范围内的行; 进行全表扫描。 Row Key 可以是任意字符串,存储时...
一、安装前置条件说明 1.1 JDK版本说明 HBase 需要依赖 JDK 环境,同时 HBase 2.0+ 以上版本不再支持 JDK 1.7 ,需要安装 JDK 1.8+ 。JDK 安装方式见本仓库: Linux 环境下 JDK 安装 1.2 Standalone模式和伪集群模式的区别 在 Standalone 模式下,所有守护进程都运行在一个 jvm 进程/实例中; ...
HBase简介 一、Hadoop的局限 HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统。 要想明白为什么产生 HBase,就需要先了解一下 Hadoop 存在的限制?Hadoop 可以通过 HDFS 来存储结构化、半结构甚至非结构化的数据,它是传统数据库的补充,是海量数据存储的最佳方法,它针对大文件的存储,批量访问和流式访问都做了优化,同时也通过多副本...
🏗️ 建造者模式 (Builder Pattern) 深度解析 1. 模式动机与定义 1.1. 模式动机:分离复杂对象的构建与表示 在现实世界和软件系统中,存在许多复杂的对象,它们由多个组成部分构成(例如一辆汽车包含车轮、发动机、方向盘等)。 问题:对于大多数用户而言,他们只需要一个完整的对象(一辆汽车),而不需要知道这些部件的装配细节,也不能随意更改组装顺序,因为某些属性的赋...
📢 观察者模式 (Observer Pattern) 深度解析 1. 模式动机与定义 1.1. 模式动机:建立松耦合的一对多依赖 在软件系统中,经常需要建立一种对象与对象之间的依赖关系:当一个对象(观察目标/Subject)发生改变时,需要自动通知其他一个或多个对象(观察者/Observer),并让它们做出相应的反应。 核心需求: 低耦合:观察目标不应该知...
📝 适配器模式 (Adapter Pattern) 深度解析 🚀 1. 模式动机 (Motivation) 在软件开发中,我们常常遇到这样的情况:现有的类已经实现了所需的功能,但它提供的接口(方法名、参数等)与客户端期望的接口不兼容,导致客户端无法直接使用。 适配器模式的设计灵感来源于现实中的电源适配器或读卡器: 它定义一个包装类(适配器 Adapter),去包装那个接口不兼容...