Recent Posts

2PC in TLA+, step 2

在上一篇里我们实现了一个最简单的2PC,其中无论RM还是TM都不会crash。在这一篇中我们会引入RM随时可能crash的情形,看看需要对2PC的实现进行多少修整。

2PC in TLA+, step 1

2PC广泛运用于各种分布式系统,然而就是这样一个看似平平无奇的算法,想要正确实现,绝不是一件容易的事情。这个系列应该会陆续写三篇,第一篇主要会在TLA+中描述一个简单的2PC算法。

thrift compact protocol

我们代码里之前升级了fbthrift,客户端使用的channel类型从HeaderClientChannel换成了RocketClientChannel,默认是使用CompactProtocol,然后通过tcpdump抓包看了眼RPC层发送的数据,发现已经完全看不懂了,正好借此机会梳理一下。

fbthrift start-up and tear-down

最近看了下在退出服务时在一些极端case下出现core的问题,顺便也重新梳理下fbthrift的启动和停止流程。在我们的一个服务进程中,会启动多个ThriftServer,他们的IO线程池和工作线程池是共享的,除了RPC Server对外暴露接口之外,当接收到一个RPC请求时,可能会调用服务进程中的其他组件(比如...