算命先生的阴阳五行学说与码农们的分布式系统设计理论

阴阳五行

一说到阴阳五行就容易让人想到大街上的算命先生,然而阴阳五行学说却是中国古代解释世间万物的起源和多样性的哲学理论依据,是中国古代朴素的唯物论和自发的辩证法思想。

中国古代哲学的核心思想之一用“老子”的话来说就是:

“道生一、一生二、二生三、三生万物,万物负阴而抱阳,冲气以为和。”。

而五行学说讲的是:“金 木 水 火 土”这五行,五行相生又相克。木头烧火——木生火;火烧木头成灰——火生土,土长期聚在一起生石头、石头里炼金——土生金,金销水——金生水,水又生土。,水克火,火克金,金克木,木克土,土克水。

但是如下图,五行虽然相生相克但都是为“和”字而服务的,即平衡:

五行

解读开来就是:

“天道生阴阳,阴阳成五行,五行变化成万物,而万物的存在方式和相互关系一直在追求一种“和谐”。“道”在阴阳的相互作用下,产生五行,五行之间相互作用产生世间万物的无穷变化,并且阴阳之间对立消长,五行之间相生相克,自此万物得以和谐发展。借助于阴阳五行的核心要素以及由此而生的非核心要素关系把宇宙看成一个统一的整体,这样的整体:循环平衡、相生相克、有刚有柔、和谐统一

那么这些玄乎的哲学理论跟码农又有什么关系呢?对于本人这么个靠技术混饭吃卖身又卖艺的码农来说,这实在太重要,归纳成一个字就是”和”,对应到技术实现体系里就是一个理念 ”权衡“,英文叫tradeoff“tradeoff”这词实在是太妙了,啥都可以往上套,比如你十一准备到哪旅游啦,中午到哪吃饭啦,买哪里的房子啦,准备追哪个姑娘做老婆啦…….,都需要 tradeoff。技术如此人生又何尝不如是。

分布式系统

通常来讲设计分布式系统的时候需要考虑的最重要的核心要素有五个,这里不是说其他要素就不重要,这是指经过tradeoff过的五个最重要的核心要素,如下图:

分布式系统要素

  1. Capacity,容量,其实这个词翻译成”能力“会更合适,指的是分布式系统里的CPU,内存,硬盘,网络,文件描述符,socket连接数,老板的预期,开发周期,成本预算之类的限制条件,以下所有的要素都受 “容量”的限制,这是前提条件,就比如一辆车最多能跑多快,一个人最多能跳多高都是受自身“容量/能力”的限制的;

  2. Performant, performance + conformant, performant这词也是造的,指的是合适的性能,分布式系统的IOPS,TPS, QPS,Latency,Jitter之类的性能指标要求,性能受限于容量,性能同时又影响了可靠性以及可用性;

  3. Availability,可用性,可用性通常指的是产品或服务在随机时间内调用时处于可服务状态的概率,通常被定义为正常运行时间除以总时间(正常运行时间加停机时间),比如 5个9,6个9,还有个厂家都喜欢的号称的9个9之类的,可用性受容量的限制同时也受可伸缩性的影响,可用性又影响了性能;

  4. Reliability,可靠性,一般指的是出保证不出故障的概率,比如,企业级产品 5个9是保底,可测试性和可维护性通常被定义为可靠性当中的一部分,可伸缩性影响了可靠性,而可靠性又影响了可用性,同时性能又影响了可靠性,可靠性也影响着性能。

  5. Scalability,可伸缩性,这里很容易跟“可扩展性”混淆,可伸缩性可以指的是集群处理越来越多或越来越少的工作的能力,或者是为了适应这种增长或减少而扩大或缩小其能力的能力。可伸缩性影响了可用性,也影响了性能与可靠性,受限于容量。

当然还有另外一些由此而衍生的非核心要素,就不多做详细解释了,比如:

  • Testability,可测试性
  • Security,安全性
  • Observability,可观测性
  • Predictability,可预测性
  • Extensibility,可扩展性
  • Maintainability,可维护性
  • Serviceability, 可服务性

这些非核心要素虽然是非核心但是也不是说就不重要,是开源产品与商业产品差异的关键,关键在如何tradeoff

阴阳五行与分布式系统

将阴阳五行理论与分布式系统设计理论结合起来解读就是:

分布式系统里的“道”就是“产品”,“阴阳“ 就是 ”功能“ 与 “非功能”,五行就是 ”容量、性能、可用性、可伸缩性以及可靠性“,阴阳五行衍生的一些其他关系对应分布式系统五要素衍生的一些其他要素。

用人话来讲就是 开发产品的时候需要考虑功能与非功能两个方面,而要保证产品质量又需要考虑”容量、性能、可用性、可伸缩性以及可靠性“这些核心要素,但是也不能忽略由此而生的一些非核心要素。

那么从这些理论到产品又需要怎么做才能落地呢? 那自然是需要 懂得如何把从这些概念性的、功能的、非功能的、这些核心的、非核心的要素进行设计实现成代码,这就涉及到 “术”的层面了,“道”的层面可以通过看书看论文获得,而“术”的获得除了自身努力还得靠机会,而且每个人的悟性还不一样,这些个”术“以后有空慢慢讲。

思考题

最后给大家留一个思考题: 前面提过老子曰:”道生一、一生二、二生三、三生万物,万物负阴而抱阳,冲气以为和。“, 三之后就是万物,为什么不是 五、不是六、不是七之类的呢?为什么三之后就是万物了?

作者简介

常平,毕业于中国科学技术大学,获硕士研究生学历学位,10年+ 存储、布式系统、云计算以及大数据经验,曾就职于Marvell、AMD等,现就职于EMC,资深首席工程师,主要负责流式大数据处理平台的架构设计、编码及产品交付等。


注:

  1. 这个用五行解释分布式系统的观点,以前在一个业内微信群里提出并且聊过,所以这个解读的方式为本人原创非COPY.
  2. 个人愚钝,悟性有限,欢迎拍砖,砖多了我就拿回去砌墙。

参考资料:

[1]. https://baike.sogou.com/v7556185.htm