常见分布式基础设施系统设计图解(五):分布式流控系统

这一篇记录分布式的流量控制系统。

首先,关于流量控制系统,从功能性需求上考虑,它涉及到使用怎样的规则去限制流量,以及,流量超出限制以后的策略是怎样的。

其次,从非功能性需求上考虑,对于单机系统,有一些比较成熟的流量控制算法,比如 Leaky Bucket,或者 Token Bucket,我在专栏文章中曾经介绍过。再来说分布式的系统,除去我们经常考虑的分布式系统的特点以外,还需要强调对于流量控制的精度要求这一方面。

为什么要提这个精度要求,是因为对于精度要求的不同,我们可以把需求分成两大类。而这两类的分布式流控在实现上,会比较不一样。

  • 类型一:用于 “保护系统” 的流量控制。这一
[……]阅读全文

常见分布式基础设施系统设计图解(四):分布式工作流系统

这一篇是记录分布式工作流系统的。我这些年来参与了几个不同的分布式工作流系统的工作(以前从另外的角度写了一些总结放在这里),大部分是基于基础分布式工作流引擎二次开发的,但也有从头开始实现一个的。总的来说,从原理上看可以说它们的实现是大同小异,大致是基于 Amazon 的 SWF 的各种实现变体。

从功能需求上看,一个工作流系统,当然是要完成一个工作流的执行和追踪,因此,它的用户,可以定义工作流的逻辑,启动、停止工作流,并能够查询工作流的当前执行状态。但我觉得有一条需要着重强调——自治(Autonomy)能力。分布式工作流系统通常来说,要比其它常见的分布式基础设施,从用户理解的角度来说,要复杂和困难

[……]阅读全文

常见分布式基础设施系统设计图解(三):分布式消息队列

这篇的内容是关于分布式消息队列的,无论是在实时系统,还是在非实时系统中,它都有广泛的应用。作为一个消息队列,基本的功能需求相对好描述,简单说有两条:

  • 首先,围绕着 pub-sub 这样的机制,允许消息发布者发布的特定主题下的消息,能够投递到若干个订阅者。这条几乎是必选的。
  • 其次,消息的有序性,既然是一个队列,那么消息满足先进先出(FIFO)的规则。这一条,部分实际场景方面并非必选。

非功能需求方面,这里面有几个基本的重要特性可以拿来考量,可以说这些基本都是分布式系统所共有的,但其中有几个是异步系统所更为看重的——比如说:

  • Availability
  • Security
  • Consistenc
[……]阅读全文

用户积分功能的设计

image 有一个 SNS 应用,用户在使用的过程中积累积分,例如登陆+3 点,个人空间每次浏览+1 点,结交每个朋友+5 点等等。同时,很重要的一点是,用户需要看到自己的积分累计有多少,能够根据积分划分用户等级,在自己的空间展示积分。

在用户量比较大的情况下(例如超过三千万),这是一个比较典型的读写都很频繁的问题,而且写入的次数可能和读取的次数差别不大(大多数 SNS 应用中,读次数远超写次数的场景居多,例如用户的状态信息,更新一次以后有成千上万的访问)。

这实际是一个简单,但是典型的功能。试想,给文章投票(例如 “顶” 一下),给微博统计访问次数,给媒体打分……这些都是非常类似的功能。对于这样问题的思考和设计,考虑到

[……]阅读全文

关于“ 异步”,从 Amazon 的工作流框架中获得的思考

云平台的工作流框架 AWS Flow Framework 给我带来的另一个有所感触的话题是“ 异步”:

1

这个框架把异步的行为划分为 Workflow 端执行的部分和 Activity 端执行的部分,Workflow 控制工作流程,Activity 执行具体的工作流 task,二者都以 poll 的模式不断从中心 SWF 去获取任务。对于开发者来说,用类似这样简单的代码,就完成了整个工作流任务的部署,框架为开发人员隐藏了大部分实现细节:

@Workflow  
public interface CalculateWorkflow  
{  
    @Execute  
    pu

[……]阅读全文

同步、异步转化和任务执行

async 正如动静是相对的概念,有了它们,世界才充满盎然生气;变和不变也是哲学上的对立统一,在代码的世界里也一样;同步异步呢?

首先,来粗略地看看同步和异步各自有些什么好处

同步的好处:

  • 1、同步流程对结果处理通常更为简单,可以就近处理。
  • 2、同步流程对结果的处理始终和前文保持在一个上下文内。
  • 3、同步流程可以很容易捕获、处理异常。
  • 4、同步流程是最天然的控制过程顺序执行的方式。

异步的好处:

  • 1、异步流程可以立即给调用方返回初步的结果。
  • 2、异步流程可以延迟给调用方最终的结果数据,在此期间可以做更多额外的工作,例如结果记录等等。
  • 3、异步流程在执行的过

[……]阅读全文

back to top