摘要: 3. 时间和顺序 分布式系统中的顺序是什么?为什么它重要? 正如前文描述过的,分布式编程就是将在多服务器上解决单机问题的艺术。 事实上,这就是顺序问题的核心。如果一个系统一个时间点上只能专注一件事,那么所有操作之间就是全序的。就像人们相继通过一个门一样,每个操作都有一个确定的前驱者和一个确定的后继者 阅读全文
posted @ 2020-12-21 11:09 SourMango 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 2. 抽象的升级和降级 在本章中,我们将讲述抽象升级和降级(译者:也可以理解成高层和底层),看到一些不可能结果(CAP和FLP),然后为了性能,对抽象进行降级。 如果你做过程序员,那么对于抽象层级这个概念应该是不陌生的。我们经常学习一些抽象层级,通过一些API访问底层,并可能需要进行封装,为自己模块 阅读全文
posted @ 2020-12-21 11:06 SourMango 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 计算机最基本两个任务 存储 计算 分布式编程与单机编程一样,旨在解决这些问题。只不过分布式是通过协调多台计算机来解决问题。而采用分布式编程则是由于问题规模庞大到不适合用单机来解决。 分布式系统并不是必须的。只要投入足够的钱和足够研发时间,总能设计出一台完美的计算机。它足够快,可用性高,足以应付任意规 阅读全文
posted @ 2020-12-21 11:03 SourMango 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 这个系列纯粹个人工作和学习以来关于并发的简单总结。 概略 并发可以粗暴分为两大类——加锁与无锁。如果场景对性能有一定追求,那无锁无疑是第一选择。无锁有多种实现,其中最基本的就是Atomic原子操作。这也是第一篇的主题。 原子操作一般伪代码如下 // 写 y.store (20, memory_ord 阅读全文
posted @ 2020-12-21 08:44 SourMango 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 本系列主要是了解Tokio的总结(方便自己以后回忆)。全文假设读者(以后的自己)已经了解Rust异步编程。 修改记录 目前为第一版,接下来会继续补充和优化。 概略 异步编程与同步最大的区别是通知机制。同步编程中,无论结果是否就绪,我们都可以得到结果的情况。一旦遍历到结果就绪,那么就去完成对应的逻辑。 阅读全文
posted @ 2020-12-20 05:34 SourMango 阅读(571) 评论(0) 推荐(0) 编辑
摘要: 链接:http://huonw.github.io/blog/2015/01/object-safety/#sized-self Object Safety Rust中每一个trait对象的构造都必须满足各种严格限制要求。这些要求统称为Object Safety。接下来,文章帮助读者了解这些要求存在 阅读全文
posted @ 2020-08-21 05:27 SourMango 阅读(1356) 评论(0) 推荐(0) 编辑
摘要: 脏读、不可复读、幻读 以上这三个问题都是隔离级别不够时,数据库事务并行所导致的。因此只要达到要求的隔离级别或者数据库事务全部进行串行执行,就可以避免这三个问题。这也是Redis采取单线程的原因之一。单线程执行事务天然提供了最高的隔离级别——可序列化。 脏读,当一个数据库事务修改某一行时(例如把字段从 阅读全文
posted @ 2020-03-15 19:25 SourMango 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 背景 随着国内手游日益火爆,玩家数量日益增加。为了更好的扩展和提供良好的游戏体验,许多手游都是通过将玩家进行分区。每一个区由一台或数台机器构成集群来提供服务。以前,各个区一般都是相互平行。但这往往会导致许多问题。例如,某些区因为人数较少,玩家无法体验到足够的多人竞技乐趣,慢慢转移到其他区,或者直接流 阅读全文
posted @ 2020-03-15 04:04 SourMango 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 游戏开发与我之前的互联网开发最大不同就是协议数据发送接口调用。在网站开发和维护中,一般很少直接调用到通信协议发送的相关接口。我们可以利用Spring Restful接口直接进行业务的开发。 因此在开发中,容易疑惑一个问题。TCP/IP到底可靠么?这是听了老大讲的充值例子所疑惑的问题。 充值案例讨论 阅读全文
posted @ 2020-03-14 18:21 SourMango 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 本文原创,如有引用,请指明出处。 WeakHashMap和ThreadLocal内存泄漏中的弱引用运行原理 WeakHashMap的内存泄漏问题 DefaultChannelPipeline中使用了WeakHashMap来作为缓存。事实上,WeakHashMap的设计理念与ThreadLocal很像 阅读全文
posted @ 2018-06-02 00:47 SourMango 阅读(1787) 评论(0) 推荐(0) 编辑