Masutangu

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

从路由层说起

背景 在游戏后台中,路由是一个比较重要的模块。路由作为中间层,可以解耦服务调用方和服务响应方: 常见的路由方式包括随机、轮询、一致性哈希、取模、主(备)等,同时还可以在路由层实现负载均衡的能力。以战斗服为例,后台架构通常如下: 因为 BattleSvr 是带状态的。通常我们会将房间 Id 做为 key 值,采用一致性哈希的方式路由,保证同一个房间 Id 的消息始终路由到同一台 ...

Hello 2021

不经意间 2020 就这样过去了。按照惯例,开年写一篇回顾和期望。 关于博客 博客今年只更新了一篇文章,不过不是偷懒。之前一直有整理 wiki 的想法,刚好朋友介绍了 Notion,一款将笔记、知识库和任务管理整合在一起的工具,体验下来非常满足我的需求。因此这一年记录的重心基本上都在 Notion 上。同时因为笔记内容不打算公开,除了在一开始构建框架时花费了一些精力,把架子搭好后,就能随心...

Kubernetes 初体验

Kubernetes(简称 K8s)是 Google 推出的开源容器管理系统,提供了强大的容器编排能力。这篇文章主要是读<Kubernetes in Action> 和官方文档以及Kubernetes Handbook和Istio Handbook的一些总结,图例均取网上资料。 微服务 在介绍 K8s 之前,先聊聊后台架构的演化历程。随着业务的复杂性不断提高,后台架构也从单体...

告别 2019

马上就 2020 年了,翻看去年年终总结《2018,值得反思的一年》对自己立下的期望:“2019年,我想成为一名优秀的工程师,成为真真正正的技术工程师”时,内心是无比惭愧的。 先说说今年做了什么吧,今年年初就计划写一系列介绍分布式的文章,因为我在学习过程中,发现很难理清楚分布式系统中各个概念的关联性,举例来说,初次接触逻辑时钟和版本向量这两个概念会觉得很类似,为什么有了逻辑时钟还需要版本向...

漫谈分布式:线性一致性与共识算法

前言 这篇文章是《漫谈分布式》系列文章的第五篇,主题为线性一致性和共识算法,以理清概念为主,不涉及具体的共识算法,如有兴趣参考文章 MIT 6.824 学习笔记(二) 介绍了 Raft 算法以及 The Part-Time Parliament 论文笔记 记录了 Paxos 论文的笔记。 一致性保证 大部分分布式数据库都至少提供最终一致性。但因为其表现和单线程读写变量并不一致,单线程并...

漫谈分布式:事务和隔离性级别

前言 这篇文章是《漫谈分布式》系列文章的第四篇,重点讨论单点数据库中事务的 ACID 特性中的隔离性、所提供的不同隔离级别:提交读(Read Committed)、可重复读(Repeatable Read)、快照隔离(Snapshot Isolation)、可串行化(Serializability)以及不同隔离级别的实现和开销,关于分布式数据库的事务将在下篇文章讨论。 事务 事务是一系...

漫谈分布式:数据分区

前言 这篇文章是《漫谈分布式》系列文章的第三篇,主要内容为分布式系统中划分数据的方式和分区的再平衡策略。 数据划分 Partitioning 上一篇文章《漫谈分布式:数据复制》 提到数据复制可以提高系统的可用性。但是当数据量过大,复制整个数据集显然不现实,此时需要将数据进行划分(partitioning),也称为 sharding。数据划分带来最大的好处是提高了系统的扩展性,将数据划分...

漫谈分布式:数据复制

前言 这篇文章是《漫谈分布式》系列文章的第二篇,讲解分布式系统中数据复制的方式,讨论了分布式系统的一致性模型,以及在分布式系统中如何确定事件时序,如何解决不同数据复制方式下的一致性问题和写冲突问题。 数据复制 复制即将同一份数据备份在多台不同的节点,节点之间网络互通。为什么需要复制?复制能带给什么好处? 数据多地部署,用户可以选择就近接入,减少时延。 提高可用性,部分节点挂...

漫谈分布式:数据库的设计思想与实现

前言 这篇文章是《漫谈分布式》系列文章的第一篇,主要讨论数据库中各类数据模型,以及数据库存储引擎中索引结构的实现。 数据模型 Data Model 在业务研发初期,数据模型的选型及其重要。不同的数据模型支持的操作集各不相同,所适用的业务场景也不同。因此在对数据模型进行选型时,不仅要熟悉业务,基于业务场景出发,从业务发展的长远角度来做决策,同时也需要深入了解不同数据模型的优缺点及适用场景...

日本之旅

拖了一个月,终于闲下来整理国庆日本之旅,写一篇流水账,记录下生活的小美好。这次旅行的路线是东京 (5d)-京都(1.5d)-大阪(1.5d),共八天。 Day 1 由于没有买到蛇口港船票的缘故,只好清晨五点摸着黑从家打车到皇岗口岸过关。过关后坐商务车大概一个小时的车程,七点多到达香港机场,十点半的飞机,下午四点(当地时间)到达成田机场。酒店靠近秋叶原地铁站附近,之前查好的路线图如下: ...