构建微服务时,我们用到的库
本文讲的是构建微服务时,我们用到的库【编者的话】构建微服务时,究竟该不该使用库,又有那些代码适合写作库?这里是作者的一些经验之谈。 正如其他通用的解决方案一样,微服务架构也有自己的优劣;有些东西因它变的更简单,同时另一些东西却变的更复杂。当转换到微服务的时候,最常见的挑战就是在哪里使用共享代码的问题。 起初,把常见代码转换成独立库的这种做法听起来很不错。原因很简单,一般我们要在两个文件中用到相同代码的时候,就会把这段代码写成一个函数,而写成库则是在更高层次上达到相同的作用,何乐而不为呢? 但是并非我们想象中那么简单。共享库会造成微服务之间的强依赖,因此应该事先考虑清楚这些为服务在整个服务群中所扮演的角色后再做决定。我在加入Runnable之后亲身经历过这类问题。 举个例子,假设你把域模型抽象进了一个库中,一旦对该模型进行修改,你必须同时更新所有使用这个库的服务。这包括更新代码,通过review,测试,staging等等。这样一来,微服务构架就变成了一个死板的整体。 那么,是不是说微服务就不能和库共存了呢?并不是。Philipp Hauer在 他的文章 中曾解释过一些关于微服务和共享库的...