B树和B+树的总结

B树

为什么要B树

磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写。那么这就存在一个定位到磁盘中的块的过程,而定位是磁盘的存取中花费时间比较大的一块,毕竟机械运动花费的时候要远远大于电子运动的时间。当大规模数据存储到磁盘中的时候,显然定位是一个非常花费时间的过程,但是我们可以通过B树进行优化,提高磁盘读取时定位的效率。

为什么B类树可以进行优化呢?我们可以根据B类树的特点,构造一个多阶的B类树,然后在尽量多的在结点上存储相关的信息,保证层数尽量的少,以便后面我们可以更快的找到信息,磁盘的I/O操作也少一些,而且B类树是平衡树,每个结点到叶子结点的高度都是相同,这也保证了每个查询是稳定的。 Continue reading “B树和B+树的总结”

Go序列化反序列化二进制包

二进制操作示例:

可以做一下封装,简化操作,其中需要注意的是,二进制的打包与解包,需要传入确定的数据类型变量,以便binary包能自动识别变量长度:

 

 

 

 

dister的使用示例

这一节我们来演示搭建一个dister集群,为简单起见,我们这个集群只有3个节点:192.168.2.15、192.168.2.63、192.168.2.114,名称分别设置为node1、node2、node3。

一、dister选举流程

node1:

node2:

node3:

Continue reading “dister的使用示例”

dister的安装及使用

一、dister的安装

dister采用了go语言进行开发,因此dister具有优异的跨平台性能,dister是开源的、免费的,采用GPLv3协议进行发布。

dister的开源项目地址:https://gitee.com/johng/gluster

 

安装方式1(推荐):

dister提供了各个平台预编译好的二进制版本,下载地址是:https://gitee.com/johng/dists/tree/master/dister/

dister不需要任何的运行环境依赖,用户根据自己运行的平台选择对应的二进制文件下载运行即可。

 

安装方式2:

您也可以自行下载源代码进行编译安装,所使用到的编译环境除了go语言开发环境外,还包括dister使用到的轻量级框架gf,开源项目地址:https://gitee.com/johng/gf

如果预编译的常用平台版本中没有您需要的版本,那么您可以选择自行进行编译安装。 Continue reading “dister的安装及使用”

dister的介绍及设计

一、dister的介绍

dister(Distribution Cluster)是一款轻量级高性能的分布式集群管理软件,实现了分布式软件架构中的常用核心组件,包括:
1、服务配置管理中心
2、服务注册与发现
3、服务健康检查
4、服务负载均衡
dister的灵感来源于ZooKeeper及Consul,它们都实现了类似的分布式组件,但是dister更加的轻量级、低成本、易维护、架构清晰、简单实用、性能高效,这也是dister设计的初衷。

二、dister的特点

1、开源、免费、跨平台;
2、使用RAFT算法实现分布式一致性;
3、使用通用的REST协议提供API操作;
4、使用分布式KV键值存储实现服务的配置管理;
5、超高读写性能,适合各种高并发的应用场景;
6、支持集群分组,不同的集群之间数据相互隔离;
7、配置管理简单,且仅提供实用的API接口以及终端管理命令,轻量级、低成本、易维护; Continue reading “dister的介绍及设计”