0%

Raft是分布式环境下的一致性算法,它通过少数服从多数的选举来维持集群内数据的一致性。它与RBFT算法名称有点像,然而Raft算法里不能存在拜占庭节点,而RBFT则能容忍BFT节点的存在。Raft非常类似于paxos协议(参见我的这篇文章《paxos算法如何容错的–讲述五虎将的实践》),然而它比paxos协议好理解许多(因为paxos协议难以具体实现,所以zookeeper参考paxos实现了它自己的Zab算法)。同样,Raft有一个用GO语言实现的etcd服务,它的功能与Zookeeper相同,在容器操作系统CoreOS作为核心组件被使用。 本文先从算法整体上说明其特点,再细说其实现。为方便大家理解,本文还是以图为主,没有过多涉及算法的细节。Raft易理解易实现,是我们入门分布式一致性算法的捷径!

阅读全文 »

hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM、Intel、各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量。本文中我们依次讨论:区块链的共通特性、fabric核心概念、fabric的交易执行流程。本文来源于笔者欲对公司部分业务上链而进行培训的PPT,故图多文字少,不要怕太长。

阅读全文 »

本文描述fabric快速部署的步骤,及演示基于官方example02的智能合约进行CLI命令行体验。区块链涉及服务很多,且大量使用docker容器技术,所以请严格遵守以下步骤去部署,以减少各种问题的出现,方便我们先对联盟链有个大概的感觉。本文描述环境是centos7操作系统,请其他版本更正相关的安装工具(如ubuntu操作系统请把yum命令换成apt-get)。

阅读全文 »

虽然以代码行数来衡量项目或者程序员并不是一件靠谱的事,但是从统计角度看趋势对于技术管理人员还是很有帮助的!推荐一个比较好用的git仓库代码统计工具:git_stats,它用于按git提交人、提交次数、修改文件数、代码行数、注释量在时间维度上进行统计,亦可按各文件类型进行简单的统计,非常方便。实际上,这么多功能通常都是用WEB在多个页面上显示的,git_stats也是如此,它需要你先安装好ruby以生成基础的页面,再用gem安装好git_stats,最后用git_stats一条语句即可生成展示页面。这些静态页面如需共享,那么搭个nginx显示静态页面即可。

阅读全文 »

在实时性要求较高的特殊场景下,简单的UDP协议仍然是我们的主要手段。UDP协议没有重传机制,还适用于同时向多台主机广播,因此在诸如多人会议、实时竞技游戏、DNS查询等场景里很适用,视频、音频每一帧可以允许丢失但绝对不能重传,网络不好时用户可以容忍黑一下或者声音嘟一下,如果突然把几秒前的视频帧或者声音重播一次就乱套了。使用UDP协议作为信息承载的传输层协议时,就要面临反向代理如何选择的挑战。通常我们有数台企业内网的服务器向客户端提供服务,此时需要在下游用户前有一台反向代理服务器做UDP包的转发、依据各服务器的实时状态做负载均衡,而关于UDP反向代理服务器的使用介绍网上并不多见。本文将讲述udp协议的会话机制原理,以及基于nginx如何配置udp协议的反向代理,包括如何维持住session、透传客户端ip到上游应用服务的3种方案等。

阅读全文 »