分布式系统

可伸缩性 Scalability

关于Scalability这个词的中文译法,目前还没有一个非常确切的定论。一些文献中将其翻译为"可扩充性",而"扩充"指的主要是Scale up;而在一些实际的用法中,Scalability还包括Scale down,因此,“可伸缩性"也许是比较贴近原文意思的说法。

互联网应用的可扩充性体现在两个方面:其一,是能够对系统容量进行扩充,也就是说,这个系统各个组件能够提供的服务的量,能够在需要的时候予以扩充(特别是通过添加新的服务器等等)。其二,是这种扩充是有效率的扩充,即,增加硬件投入时,其投入与所产生的效果是接近甚至达到成比例增加的。通常说来,“可扩充"同时暗含的需求是用户的使用习惯尽可能保持不变。如果我们关注某一具体的计算节点,可扩充性还应体现于提高计算节点性能,例如增加其CPU数量或内存容量时,能够相应地改善系统的容量或响应时间,等等。

而另一方面,“可缩减性"主要指的则是说一套系统能够运行在尽可能少的软硬件环境之中。对于大型互联网公司而言,这一点可能并不重要,而对初创公司来说这一点则非常重要。

在设计互联网应用的时候,充分地考虑系统的可伸缩性,能够极大地减少日后的维护开销,并帮助决策者对于投资所能获得的回报进行更加精准的估计;另一方面,高可伸缩性的系统往往会具有更好的容灾能力,从而提供更好的用户体验。

与解决很多其他问题类似,改善可伸缩性最常用的方法就是分治法(Divide and Conquer)。分治属于大道理一类,在实践中,我们比较常用的分治策略包括:

阅读全文…( 本文约 2100 字,阅读大致需要 5 分钟 )

美国运通(American Express)的年度对帐单

| Life | #分布式系统 | #帐单 | #银行

可怕,很可怕。

其实也没啥,年度对帐单其实就是把月度对帐单里面的帐目做了一下summary,然后分门别类地把刷卡的明细排列出来,告诉你每个月花了多少钱,有多少调整金额和charge(我从来不相信国内某银行宣传材料上写的那种月底不把钱还清是好的理财策略的说法,无论如何不还清导致最终的还款现值pv都会比还清的高,所以这项几乎一定是 < 0的)。

阅读全文…( 本文约 300 字,阅读大致需要 1 分钟 )