摘要:
一、进程的等待以及对CPU资源的释放 在整个框架下,系统将通过co_eventloop阻塞进入系统调用。这个很容易理解,一个进程不可能一直在空跑,所以在不需要系统信息的时候就可以让操作系统把自己挂起来。或者反过来说,当进程无法运行的时候,它一定是在等待一个异步事件,此时就可以在这个等待资源上把自己的 阅读全文
摘要:
一、基于C++的rpc开发框架 由于java、go之类的rpc框架比较多,而腾讯的phxrpc框架感觉又过于繁琐,并不利于理解RPC的本质。简单看了下这个百度的这个RPC框架,觉得比较简单直接,文档清晰明了,依赖的内容少,可以结合这个可以工程上在用的项目看下基于protobuf的rpc实现原理。接下 阅读全文
摘要:
一、phxpaxos内置的日志系统 为了应对系统故障、进程重启之类的工程问题,phxpaxos需要对系统的状态进行持久化存储。从最简单的情况来说,系统必须要保证所有proposer提议的实例ID是连续递增的,而这个信息本身就要求对系统的状态进行持久化存储。但是,实例号的连续只是一个基础要求。考虑到p 阅读全文
摘要:
一、关于redis的基本说明 What does Redis actually mean? It means REmote DIctionary Server. Redis clients communicate with the Redis server using a protocol call 阅读全文
摘要:
一、状态同步 在工程应用环境中,一个新启动的节点需要能够从其它节点进行状态同步,或者叫做实例的对齐(Learn)。该节说明了C的数据可以从B学习,但是在一个具体的环境中,当一个节点需要学习时,它具体应该如何选择,以哪一个为准,这里并没有后详细说明清楚,这个就需要结合代码来看一下。 二、学习定时器 在 阅读全文
摘要:
一、protobuf简介 万能的google可以找到这个关于protobuf的简介,从实现说明上来看,并没有特别值得说明的地方。对于一个协议或者存储来说,最为关心的其实是协议或存储的兼容性问题,其它的int变长编码并没有什么特殊的,因为在这之前,utf-8之类的变长编码也同样使用类似的方法来进行编解 阅读全文
摘要:
一、paxos的基本假设 关于paxos最为简洁的描述在这里,作者的大致思路是根据结论来找到条件来满足这个条件,而这个限制是逐步收紧,并且在各个参与者之间逐步进行职责转移和派发。 P2a. If a proposal with value v is chosen, then every higher 阅读全文
摘要:
一、levelDB基础概念 在levelDB的实现中,level(分层)无疑是最为关键的一个核心概念,在分层基础上定义和实现的compact也是该算法的基本操作。在levelDB之前,总有一个先入为主的错误观念:就是只要分层的结构,都有类似于B+树的查询结构:上层节点有指针指向子节点,并且可以在N层 阅读全文
摘要:
一、问题 在常规的函数调用中,通常是直接看到函数的定义并调用该函数,所以,函数调用传递的是值还是引用是根据函数声明来决定的。但是,在std::tr1中的bind函数本身是为了完成不同格式参数的适配,所以函数调用处看到的内容和真正的函数执行位置看到的内容并不相同。 简单的说,这里可以简单的模拟下bin 阅读全文
摘要:
一、std::tr1::bind及std::tr1::function函数的意义 在第一次见到std库中bind函数的时候,有一种你们城里人真会玩的感觉,把模版用的出神入化。但是,更关键的是这么华丽的用法,是为了解决什么问题呢?这个问题本身可能比它们如何实现更加重要。其实科技的发展也是大抵如此,往往 阅读全文