Hycz's Blog

Life is a game. Why so serious?

2011/06/23 2PC和现实业务处理

看了一篇2004年的博文(地址:http://www.eaipatterns.com/ramblings/18_starbucks.html),作者从架构师的角度分析了starbucks的业务流程,然后将其与2PC做了下比较,虽然是04年的文章,但是还是很有启发性。

现实中的业务流程往往是同步加异步的模式,同步的部分是收银员,那里有一定的程序必须得按顺序完成,当订单下了之后,便进入异步的业务处理,这样既可以灵活的调整各个部分的服务能力,也不会浪费资源。2PC虽然过程很简单,但是由于在业务完成前,无论是服务者还是客户都不能离开,这降低了整体的效率,浪费了很多资源。

一个简单的例子是我亲身经历的,那就是麦当劳和肯德基,在麦当劳中,使用的是同步加异步的策略,收银员接受订单,然后把订单放到一边,然后就接受下个人的订单,另有员工按照订单把食物手机好给客户,于是各司其职,收银员不够那就加收银员,后面的订单处理不够那就加订单处理人员,虽然会出现由于食物没做出来而使后下订单的人先拿到食物,但是这只是很小的问题。相对的,肯德基的策略更像2PC,策略很简单,一个员工既要收钱,也要去收集食物,排队的客户必须等前面的人拿到食物才能轮到自己,虽然正在服务的客户感觉很好,但是对服务者来说,花费了大量的时间在不用业务的转换上,各个业务的专业性也不够,对客户来说,本可以下完订单就去干自己的事,比如洗个手,坐着等,但是实际上却需要站着等待所有队伍前面的人的服务时间。

另一个例子是google的架构,那篇文章的作者就是google的架构师,因而那篇文章的思想与google的策略十分相似。众所周知,google的架构是主从模式,为了防止主节点成为瓶颈,google做了大量的优化,实际上,主节点处理的就是同步的部分,每个业务的开始都需要与主节点通信,然后真正处理的,是从节点,这部分的处理就是异步的部分,这里的处理跟业务到来的顺序没有必然关系,而是跟各个业务的特点和实际内容有关。

所以,2pc可能看起来很美,而且简单,但是真的使用的话,可能需要高超的技巧,不然很容易成为一场灾难。同步加异步的方法恐怕是更为有效的方案

Advertisements

One response to “2011/06/23 2PC和现实业务处理

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: