Grpc异步编程框架剖析

习惯了同步编程范式,初次使用异步框架可能会稍感不适,Grpc官方提供了greeter_async_client和greeter_async_server的示例,官网也只是基于该代码的注释作了简要说明(甚至包含错误),文档完善远跟不上社区开发进度,相关细节和原理并不完善,仅限于此似乎有些照猫画虎,不得其理,笔者打算以异步编程范式及其实现,作为Grpc系列的开篇,以官方示例作为切入点,深入展开,为以后对异步编程处理得心应手打下基础。
阅读全文

再谈Raft

正如Raft论文作者所说,鉴于Paxos协议晦涩难懂,算法本身与工程生产实践应用相距甚远,实现起来难度非常大,开源实现也少,从而以清晰易懂和工程实现较容易为目标提出了能够达到与(multi-Paxos)协议同等效果的Raft一致性协议算法,而且在强化leader角色、leader选举、成员管理等方面更清晰明确,整体上更优于Paxos或其它一致性协议算法。
阅读全文

也谈Paxos

Paxos算法用来解决什么问题?我理解的用抽象一点的语言解释,paxos算法的过程就是多方统一认知,达成共识,形成决议的过程;用算法本身的形式化运行过程解释,就是多个节点如何选定某个确定的值(一致性);分布式系统中就可以做到保障高可用性(容忍少数失败或故障)的同时,达成一个一致决议,就可以应用于这些场景:多副本一致性、数据库日志强一致同步(节点日志的顺序确定)、选主(谁成为主)、成员管理或配置变更等。
阅读全文

GCC5 std::string新变化

自从GCC-5.1开始,std::string引入了遵从C++11标准的新实现,默认使用SSO(small string optimization)特性,禁用了写时复制(COW)引用计数机制,这也带来了与旧版本std::string的ABI兼容性问题,本篇结合GCC-5.3.0源码来分析新的std::string实现。
阅读全文