- 博客(21)
- 资源 (8)
- 收藏
- 关注
原创 Ratis学习(五): StateMachine
StateMachine 负责执行分布式系统中的命令和操作,确保在不同节点上的数据状态保持一致。它通过在各个节点上应用相同的操作序列来达到这一目的。分布式系统中的节点可以接收来自客户端或其他节点的命令和操作请求。StateMachine 会根据这些命令执行相应的操作,然后将结果应用到本地状态中,从而确保系统在不同节点上的状态保持一致。在分布式系统中,节点可能会发生故障,因此需要能够进行故障检测和恢复。StateMachine 能够在节点故障后重新同步状态,确保数据的一致性和完整性。
2023-08-10 15:27:51 362
原创 Ratis学习(四):StateMachineUpdater
具体来说,StateMachineUpdater 在 Raft 中扮演以下角色:日志应用:Raft 算法通过日志的复制和应用来确保一致性。Leader 节点将客户端的请求转换为日志条目,并将这些日志条目复制到其他节点。一旦大多数节点都确认接收并持久化了日志,Leader 就可以提交这些日志。StateMachineUpdater 接收提交的日志,将其应用到本地状态机中,从而实现状态机的状态更新。确保一致性:Raft 算法保证了复制日志的一致性,这意味着所有节点最终会在相同的日志条目上达成共识。
2023-07-20 16:07:08 201
原创 Ratis学习(三): Raft Log管理
为了记录集群中所有操作的状态变化,确保状态机可以保证一致性。在 Raft 中,集群中的每个节点都维护一个日志,用于记录节点接收到的指令或命令。这些指令可能来自客户端的请求或其他节点的广播。日志的内容是有序的,并且按照顺序进行追加。每个日志条目都包含一个索引和对应的指令。Raft 算法通过日志来保持一致性。当节点收到新的指令时,它将指令追加到自己的日志末尾,并向其他节点发送追加日志的请求。一旦大多数节点都确认接收了该指令并将其追加到自己的日志中,该指令被视为已提交。
2023-06-21 14:11:15 371
原创 Ratis学习(二): Ratis peer身份管理
ratis服务中,每一个节点可能有三种身份,Leader,Candidate,Follower. Ratis在org.apache.ratis.server.impl.RoleInfo中实现身份管理。
2023-06-20 14:33:53 314
原创 ratis学习(一):Ratis客户端
Client是一个发起请求到服务端的模块,ratis是嵌入在系统中运行的,要想使用ratis中的功能,就需要继承ratis的类文件,实现其中的方法。ratis的源码RATIS中给出了几个使用的例子,如Counter, Arithmetic, Filestore等,本文中我们可以从简单的Counter例子入手来观察和使用ratis。
2023-06-19 14:10:43 511
原创 Ratis介绍
基于Raft实现的共识协议还有许多种,例如有各种语言的实现方案如 jraft,goraft,还有许多KV数据库同样使用了raft协议,但目前看来,ratis的实现和使用更为普遍,Ozone项目中就使用了ratis做为HA的实现方案,并且还作为DN 副本之间的数据同步。StateMachine: 是Ratis Server上层构筑的状态机,实现了多个接口的Api,负责处理和返回客户端的请求,如读写数据等等,statemachine中的数据是由updater负责更新的。client: 用于发起不同的数据请求。
2023-06-15 11:25:49 590
原创 ozone集成fuse的使用方式
使用fuse挂载磁盘,将数据存储到ozone集群上。1.安装fuse1)下载安装包(从github上下载)https://github.com/libfuse/libfuse/releases 下载随意版本2)解压安装包 tar -zxvf lib fuse***.tar.gz3)安装fuse 进入解压后的路径执行 ./configure makelsmod | grep fuse 查看fuse是否安装成功modprobe fuse 挂载成功...
2021-06-23 17:24:09 278
原创 ansible使用记录
近期使用了ansible,在这简单记录一下ansible的使用使用ansible-playbook的方式执行,首先编写剧本,定义好剧本中需要的变量ansible-playbook -i vars test.ymltest.yml剧本中编写详细的操作,例如- name:first ansible hosts: all gather_facts: no tasks: - name: mkdir # become: yes # become_user: "test"
2021-04-20 17:51:55 642
原创 hadoop、ozone或者其他的java项目的debug远程调试
开发中,使用IDEA远程调试测试集群可以方便快速的定位问题,为了实现本地IDEA调试向上或者测试集群的机器一般都会在jvm的参数配置中加上-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1234(port)来实现。但是在配置好之后还是不能远程debug,甚至服务启动失败。记录下报错信息以及解决方案:Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactA...
2021-04-09 17:31:01 441
原创 computeIfAbsent() 的使用
变成中经常遇到这种数据结构,判断一个map中是否存在这个key,如果存在则处理value的数据,如果不存在,则创建一个满足value要求的数据结构放到value中。以前常用的方法如下:public class TestComputeIfAbsent { static HashMap<String, Set<String>> hashMap = new HashMap<>(); public static void main(String[] args) {.
2020-12-03 14:40:28 91178 10
原创 HADOOP 编译过程中报错
1.java: 程序包com.sun.javadoc不存在出现这个错误考虑本地环境中使用的jdk版本问题出现这个问题后我从jdk11换成了jdk8,这个错误成功跳过2 Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M1:enforce (enforce-banned-dependencies) on project hadoop-client-check-test-invariants: S
2020-09-24 18:14:25 1063 1
原创 MAC解决连接服务器,一段时间不操作导致断开连接,卡顿一段时间的问题。
mac上进行如下操作:cd /etc/sshvim ssh_config在最后插入两条命令ServerAliveInterval 30ServerAliveCountMax 2操作完成,愉快的开始coding吧!!!!!
2020-09-24 11:52:35 1188 2
原创 关于页眉的奇偶页不同设置和奇数页页眉展示每一章名称的设置方法
在论文的写作中可能会遇到对于页眉的格式要求:比如奇偶页不同,奇数页页眉显示每一章的章节名称,偶数页固定显示********学位论文等等...经过简单的研究之后,总结以下步骤:以下为wps的设置方法,office应该也是大同小异1.先选择页眉页脚选项,勾选奇偶页不同2.当前能展示奇偶页页眉不同,接下来设置奇数页的页眉。选择插入---》分页----》连续分节符3.点...
2020-03-27 09:38:05 7209
原创 idea中上方类名的tab的多行展示
为了方便类文件的多行展示,防止调程序的过程中打开的类文件转眼间就被其他类文件给顶掉了设置如下:1)在类文件右击,如图取消单行展示但此时默认最多显示10个类文件,所以需要再设置点击file->setting->editor->General->Editor Tabs如图:至此设置成功,马上开始愉快的编程吧!!!...
2019-09-09 17:08:50 4124 2
原创 算法——反转链表
链表的反转并输出每个节点:方法一:递归法public ListNode reverseList(ListNode head) { if (head == null || head.next == null) { return head; } ListNode next = head.next; ListNode newHead = reve...
2019-07-19 10:25:26 174
原创 设计模式之代理模式(静态代理)
代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。废话少说,先上代码,码上说话!!!// 一个service的接口public interface ISomeService { String doFirst(); void doSecond();}// 接口的实现类,其中实现了两个方...
2019-04-26 10:34:25 158
原创 剑指offer算法题,输入一个链表,反转链表后,输出新链表的表头。
链表的算法题一直做的浑浑噩噩的,为了避免忘记以及能够及时的温故知新,所以将本次的解答记录如下:话不多说,先贴代码:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class ...
2019-03-04 11:13:06 158
原创 散列(hash)表以及解决冲突的方式
把查找表中的关键字映射成该关键字对应地址的函数,散列函数可能会把两个或两个以上的不同关键字映射到同一地址,称这种情况为冲突,这些发生碰撞的不同关键字成为同义词。1散列函数的构造方法 1)直接定址法 直接取关键字的摸个现行函数值为散列地址,散列函数为H(key)=a*key+b,其中a和b是常数,这种方法最简单,并且不会产生冲突,适合关键字分布基本连续的情况。 2)除留余数法 ...
2018-05-30 10:24:42 935
原创 快速排序算法java
快速排序算法public static void quickSort(int[] arr){ qsort(arr, 0, arr.length-1);}private static void qsort(int[] arr, int low, int high){ if (low < high){ int pivot=partition(arr, low,...
2018-05-23 17:56:53 161
原创 冒泡排序的for循环
最近打算找找实习岗位,当然算法这样的基本功可不能松懈,首先上手就是人尽皆知的冒泡算法,看了好多的冒泡算法感觉每个人写的for循环都不一样(当然中心思想还是一样的), 清楚算法思想固然重要,但是搞清楚for循坏同时也是十分必要的,所以查看了网上的资源之后再次总结几种for循坏的方式,方便以后自己查看学习:第一种:(个人最喜欢用,比较容易记)for(i=0;i<n;i++){ f...
2018-05-23 16:45:40 2921
java开发实战1200例
2018-05-21
java入门经典
2018-05-21
兼职offer题目及源代码(java)
2018-05-21
软件工程考试题库
2018-04-16
Python Deep Learning - Valentino Zocca
2018-03-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人