本文内容举例如何将现有的单体应用转化为微服务应用
前提条件
如果你的工作围绕一个大型的,复杂的单体应用,并且每天开发和部署应用的工作都是进展缓慢而痛苦的,那么便可以考虑将该应用拆分为微服务来解决遇到的问题。而如果你的工作是开发一 些简单的应用,临时性的解决一些问题,或者是作为应用的中间件,则不需要考虑作为微服务来开发。
确认功能模块
用商城应用来作为例子,由于前期为了追求开发的速度所以把各个模块都耦合在一起,想要把他拆分成微服务则必须梳理好该商城应用都是有哪几个模块组成的。商城应用通常会有用户模块、商品模块、文件模块、消息模块,这些一般在单体应用中也会用的Service来进行处理,现在要 做的是把这些集成在程序内部的各个模块都提取出来制作成一个个新的应用。而在确认功能模块时,要注意各个模块的依赖关系,例如商品通常依赖文件,用户依赖消息,这些依赖必须在拆分
之前梳理清楚,不能出现拆分之后发现用户管理不仅要依赖消息,消息又要依赖用户的情况发生, 这样就会造成循环依赖的错误,导致无法打包。通常遇到循环依赖这样的问题都是可以在业务模式或者代码层面解决,总之切记别产生循环依赖。
拆分应用
通过上一步已经清楚哪些模块需要单独产分成一个微服务应用了,这一步便是要把这些应用抽离出来。主要分为抽离相关代码、抽离引用的依赖、修改原有代码使之对外无感知。在抽离的过程中要讲究循序渐进地重构的应用。可以逐步地构建一个部分微服务化的应用,然后和原来的的单 体应用集成起来。如此循环,单体应用的实现的功能会逐渐变少,最终消失或变成一个新的微服务组件。这样做的目的主要是符合敏捷开发的思想,每次开发都是迭代的向前推进的,每次迭代
都会有相应的产出,而且一步步抽离代码的好处也便于程序的Debug,不会造成,出现问题后大 范围的不可用。