Masutangu

也許我這一生 始終在追逐那顆九號球

Programming Language Part B 课程笔记

本文是学习Coursera Programming Language课程的学习笔记,文章内容及代码均取自课程材料。 Interpreter or Compiler 实现编程语言的 workflow 如下图: Parser 读取程序文本,检查 syntax,如果语法正确则输出 AST(abstract syntax tree)。如果该编程语言有 type checker,则将 AST ...

The Part-Time Parliament 论文笔记

背景 Paxos 岛兼职议会类似容错式分布式系统面对的问题:议员对应分布式系统中的进程,议员缺席对应进程挂掉。Paxos 设计的议会协议在议员经常缺席的情况下可以保证法令的一致性。 The Single-Decree Synod 单一法令的神会协议的演化如下: 首先由几个能保证一致性和允许进展性的约束推导出初级协议(preliminary protocol) prelimina...

多排行榜数据刷新方案

一. 背景 最近工作遇到一个棘手的问题:多个不同的排行榜的玩家信息如何保持一致。简单描述下场景,以小游戏跳一跳为例子,一开始游戏只有一个好友排行榜,好友排行榜以玩家的最高分数进行排序,这样好处理,搭一个关系链svr,该 svr 上缓存玩家好友的信息(避免每次去 DB 查询),并使用玩家信息中的最高分数进行排序。客户端请求时下方相应的排名和玩家信息,包括最高分数信息(客户端需要展示)即可。但如...

Programming Language 课程笔记

本文是学习Coursera Programming Language课程的学习笔记,文章内容及代码均取自课程材料。 一. 声明式编程和命令式编程 声明式编程(Declarative Programming) Building the structure and elements of computer programs, that expresses the logic of a co...

基于 Replicated State Machine 实现游戏进程恢复

Introduction 游戏服务器实现的业务逻辑普遍比较复杂,且大部分是带有状态的。如果进程重启或意外崩溃,会导致该服务器上的玩家断线,丢失进行中的游戏数据,带来极差的游戏体验。为了避免这种情况出现,一般游戏服务器都会持久化玩家数据以实现进程恢复,当重启或进程意外崩溃时,重新拉起进程后可以恢复到之前的状态。常用的做法是将玩家的状态信息保存在共享内存中,重启时加载共享内存进行恢复。 共享...

MIT 6.824 学习笔记(四)

本系列文章是对 MIT 6.824 课程的学习笔记。 ZooKeeper Abstract ZooKeeper 旨在提供简单高效的内核以供客户端实现更复杂的 coordination primitives。In addition to the wait-free property, ZooKeeper provides a per client guarantee of FIFO ex...

再见,2017

回看起去年的总结 我的2016,心里挺有感慨的。17 年是出现转机的一年,在这最后一天,按照惯例,整理下这一年的历程和想法。 关于自己 在去年的时候,我总觉得自己在工作上挺失意的,各种原因下达不到自己的期望。还好,今年在工作方面对自己还算满意。最大的进步是对工作的心态上,不再有一些困惑和纠结。工作上努力去争取有挑战的需求,空闲的时候则抽更多的时间在个人学习上,维持好工作和自学的平衡。我挺...

MIT 6.824 学习笔记(三)

本系列文章是对 MIT 6.824 课程的学习笔记。 Spinnaker Introduction Spinnaker is an experimental datastore that is designed to run on a large cluster of commodity servers in a single datacenter. This paper des...

MIT 6.824 学习笔记(二)

本系列文章是对 MIT 6.824 课程的学习笔记。 Raft Introduction Raft 是用于管理复制日志的一致性算法。为了方便理解,Raft 将一致性算法分解为几个关键模块:Leader 选举、日志复制和安全性,同时通过更强的一致性来减少需要考虑的状态。 一致性算法允许一组机器像一个整体一样工作,即使其中一些机器挂掉。一致性算法在构建大规模可信赖系统中扮演重要的角色。 ...

MIT 6.824 学习笔记(一)

本系列文章是对 MIT 6.824 课程的学习笔记。 Introduction 本课程涵盖以下主题: RPC、线程、并发控制 性能 容灾:Availability, Durability. replicated servers 是不错的选择。 一致性:replica如何保持一致? Consistency 和 Performance 不可兼得 MapReduce M...