摘要:由于时间安排上的原因,这次的代码写的稍微有些简略,只能算是自己对RAFT协议的一个巩固。 实现定义2个节点,使用读取配置文件来获取IP和端口以及节点ID 网络使用boost同步流程 一个线程收 一个线程发送 1 收的线程根据接受的数据 判断是心跳包还是选举请求还是选举请求回复 来更新自己的时间逻辑编
阅读全文
摘要:1 // Copyright 2014 Google Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in com
阅读全文
摘要:一旦Leader选定之后,我们将复制所有的操作到每个节点上。 这个是通过心跳包中的Append Entries message结构体来进行实现的 客户端发送一个操作到Leader中(即使客户端发送操作到Follower,操作也会被转发到Leader处理) Leader将操作附加到自己的Log日志中
阅读全文
摘要:Raft官网 官方可视化动画1 官方可视化动画2 官方可视化动画1 官方可视化动画2 论文中文翻译 论文英文地址 感觉作为paxos的升级精简版 Raft在设计之初就以容易理解为目标 看完资料 脑海里都有了大概的轮廓。 有了这些详细的资料甚至是动画演示在前 起始都没多少好说的,本篇知识作为记录下学习
阅读全文
摘要:redis在游戏服务器中的使用初探(一) 环境搭建redis在游戏服务器中的使用初探(二) 客户端开源库选择redis在游戏服务器中的使用初探(三) 信息存储redis在游戏服务器中的使用初探(四) redis应用 在学习分布式对象存储的期间,有这么一个需求 "多个接口服务(本文当作客户端Cline
阅读全文
摘要:上节的代码无法区分同一个对象的不同版本,为了记录对象版本以及其他一些元数据,本节中会加入一个新组件:元数据服务 元数据服务就是提供对元数据的存取功能的服务。元数据指的是对象的描述信息,比如对象的名字、版本、大小以及散列值. 新增加服务后的结构图如下 需要新安装一个ElasticSearch搜索引擎。
阅读全文
摘要:上一节编写了一个使用REST服务进行对象存取得单机程序 本节接续对其进行扩展,为了满足加入新的节点就可以自由扩展服务器集群的需求,我们需要将单机版的接口与数据存储进行解耦. 让接口与数据存储成为互相独立的服务节点,两者互相合作提供对象存储服务。这样节点就可以按照需要添加,并且分布在不同的服务器上。
阅读全文
摘要:这是 <分布式对象存储 原理架构及Go语言实现>的学习笔记的第一篇 我们简单的实现一个REST(表述性状态传递,英文:Representational State Transfer)服务接口,用来单机存储对象 单机版的REST接口极其简单 只提供对象的PUT和GET方法 顾名思义 就是对象的存取方法
阅读全文
摘要:入遇到这样的需求 “有不定数量的游戏选项和不定的游戏人数选项给用户选择,我们按照 游戏人数<<24 | 游戏规则A<<16 | 游戏规则B<<8 | 游戏规则C 游戏规则D<<24 | 游戏规则E<<16 | 游戏规则F<<8 | 游戏规则G ........ 来生成所有规则可能选中和未选中的游戏码
阅读全文
摘要:todo 差不多看到第二章 环境和代码编译验证 已经确认到了第四章节 全书能正常编译测试执行完毕应该是没问题了,剩下的就是消化吸收的问题了 近日开始着手编写验证日志 读书笔记 该书籍使用的GO语言作为示例 经过验证 windows下运行curl rabbitmq ElasticSearch 等软件都
阅读全文
摘要:四处寻觅开源代码学习,适合的代码非常稀少,不适合的原因却千奇百怪。 不是使用语言特性过于老旧(c++03) 就是使用的冷僻语法(template<T> enable_share_from_this<T> 居然还搞个继承) 要么就是需要强大的系统背景知识(图形引擎,加密代码等) 或者无法但不调试,不能
阅读全文