迈入微服务架构的第一关--服务边界划分

很多人说开发微服务并不难,难点在于如何划分微服务。这个话虽然有点绝对,但反应了服务边界的划分有多么重要。一个设计良好的单体应用远比一个混乱的微服务要好。采用微服务架构的目的是为了让系统变得更具有扩展性、可用性。但在把单体应用变成靠谱的微服务架构之前,单体系统的各个模块的划分应该是合理、清晰地。可以认为微服务就是将单体应用的各个模块分开部署而已。

本文将从多个角度切入,探讨一下微服务的划分方法。

确定边界的思路


在面向对象的程序设计中,有一条原则想必大家都知道,就是:高内聚、低耦合。通常程序结构中各模块的内聚程度越,模块间的耦合程度就越。不管是对单体应用进行模块化,还是对微服务进行划分,都需要以这个基本原则为指导。

在这个抽象原则的指导下,结合软件设计的具体实践,可以找到不同的服务划分方法。

数据库驱动的设计

数据驱动编程的核心出发点是相对于程序逻辑,人类更擅长于处理数据。数据比程序逻辑更容易驾驭,所以我们应该尽可能的将设计的复杂度从程序代码转移至数据。

用前贝尔实验室成员、Unix小组成员Rob Pike的话说:数据压倒一切。如果选择了正确的数据结构并把一切组织的井井有条,正确的算法就不言自明。编程的核心是数据结构,而不是算法。

你可能感兴趣的:(程序员,架构,微服务,数据库)