摘要:一旦Leader选定之后,我们将复制所有的操作到每个节点上。 这个是通过心跳包中的Append Entries message结构体来进行实现的 客户端发送一个操作到Leader中(即使客户端发送操作到Follower,操作也会被转发到Leader处理) Leader将操作附加到自己的Log日志中
阅读全文
摘要:Raft官网 官方可视化动画1 官方可视化动画2 官方可视化动画1 官方可视化动画2 论文中文翻译 论文英文地址 感觉作为paxos的升级精简版 Raft在设计之初就以容易理解为目标 看完资料 脑海里都有了大概的轮廓。 有了这些详细的资料甚至是动画演示在前 起始都没多少好说的,本篇知识作为记录下学习
阅读全文
摘要:四处寻觅开源代码学习,适合的代码非常稀少,不适合的原因却千奇百怪。 不是使用语言特性过于老旧(c++03) 就是使用的冷僻语法(template<T> enable_share_from_this<T> 居然还搞个继承) 要么就是需要强大的系统背景知识(图形引擎,加密代码等) 或者无法但不调试,不能
阅读全文
摘要:zt http://www.cnblogs.com/captainl1993/p/4788236.html zt http://www.cnblogs.com/captainl1993/p/4788236.html 1、数据服务器详细设计 数据服务器在设计上采用三个层次的数据同步,实现玩家数据的高速
阅读全文
摘要:1 使用boost asio网络库 可参照boost asio的文档示例 (异步 同步) 可参考 boost asio 一个聊天的基本框架 asio的网络通讯代码练手 2 使用智能指针 bind function 简化编程 提升效率 参考本博客其他文章 可参考虚函数与bind 实现设计模式的练习 c
阅读全文
摘要:socket连接中需要判断超时 所以这几天看了看boost中计时器的文档和示例 一共有五个例子 从简单的同步等待到异步调用超时处理 先看第一个例子 1 // timer1.cpp: 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <ios
阅读全文
摘要:asio的网络基本模板(单例模式 消息队列 ) 1 // MyAsio.cpp: 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <iostream> 6 #include <assert.h> 7 #include "NetMgr.h"
阅读全文
摘要:最简单的kv db 最基本的网络连接 使用STL map存储key value 作为多线程互斥的简单例子。 以后有机会逐步优化添加功能 1增加ASIO 异步通讯 2优化存储空间 传递指针 避免过多的拷贝操作 3优化代码结构 4优化全局锁 操作map时候 锁定部分区域而不是锁全局 。(思路在之前博客有
阅读全文
摘要:示例代码 1 #include "Util.h" 2 #include "MyAsio.h" 3 #include "TcpConnectionManager.h" 4 #include "SocketMessageRecvDispatchManager.h" 5 /* 6 作 者: itdef 7
阅读全文
摘要:书接上文 继续分析Socket.h SocketMgr.h template<class T>class Socket : public std::enable_shared_from_this<T> 根据智能指针的使用规则 类中有使用本类自己的指针 必须继承自enable_shared_from_
阅读全文
摘要:trinitycore是游戏服务器的开源代码 许多玩家使用魔兽的数据来进行测试 ,使用它来假设魔兽私服。 官方网址 https://www.trinitycore.org/ 类似的还有mangos 和 kbengine 不过mangos使用庞大的ACE网络框架 kbengine使用自写网络库 两者均
阅读全文
摘要:debian9下mysql 替换成mariadb-server-10.1 不过两者类似 具体可见 《MySQL和mariadb区别》 http://ask.chinaunix.net/question/556 MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展My
阅读全文
摘要:学习计划清单 放在这里 督促自己执行 近期任务 leetcode stl 源码学习 bttorrent编写 (优先BCODE解析) 分布式存储编写 json 解析(实战 大量测试 稳定和内存泄漏) leveldb 源码学习 muduo 源码学习 python csdn 11111Python编程实战
阅读全文
摘要:网络传输 buf 封装 示例代码 使用boost库 asio
阅读全文
摘要:网页爬虫部分 C++ 提取网页内容系列之五 整合爬取豆瓣读书 C++ 提取网页内容系列之四正则 C++ 提取网页内容系列之三 C++ 提取网页内容系列之二 C++ 提取网页内容系列之一 获取电驴首页推荐信息和指定栏目信息 统计单词出现频率及排序 从单机到多机合作 图文示例并行处理管道 网络部分 as
阅读全文
摘要:本篇是模仿PYTHON TWISTED写一个FINGER示例。 从最简单的链接到通过接收字符串返回不同的内容 1 最简单的链接 运行显示如下 finished!请按任意键继续. . . 2 接收ACCEPT请求 然后丢弃 运行显示如下: recv a connection! 客户端运行 显示 tel
阅读全文
摘要:其实《Linux 多线程服务端编程》已经写得很详细 但是考虑到代码版本的更新和操作系统的不同 可能部分位置会有些许出入 这里做个记录 方便以后学习运行 我使用的虚拟 安装的是debian系统 版本如下 uname -aLinux debian 3.16.0-4-686-pae #1 SMP Debi
阅读全文
摘要:无盘系统就是用户使用的客户端机器没有硬盘 客户端向硬盘读写的内容均是通过网路从服务器获取 从而减少人力维护成本。而服务器更改配置和更新客户端的配置与硬盘中的内容,也只需要更改服务器上的镜像文件,提升维护效率。 由于我没接触过无盘的具体底层开发 以下只是我对无盘的猜测理解 1 无盘的启动 有硬盘的客户
阅读全文
摘要:参考《linux高性能服务器编程》 LINUX下处理多个连接时候,仅仅使用多线程和原始socket函数,效率十分低下 于是就出现了selelct poll epoll等IO复用函数。 这里讨论性能最优的epoll IO复用 用户将需要关注的socket连接使用IO复用函数放进一个事件表中,每当事件表
阅读全文
摘要:摘录笔记 《TCP/IP高效编程 改善网络程序的44个技巧》 tcpip可靠但不是绝对可靠 比如发生对端强行关闭 ACK丢失 在两端存活且连接的情况下 tcp保证数据按序 无损坏的传输 但是有的网络中断会触发传输问题 分为以下三类 1 永久或者临时网络中断 此种情况,若路由未发送ICMP报文的话,应
阅读全文