微服务化架构理解及应用实例分析
背景
服务化架构是当前最火的概念,当我们一谈到服务化第一时间联想到的就是互联网应用中,采用服务与服务之间进行互联调用的架构模式。RESTful、Json、Webservice,一定是绕不开这些词汇。但是从我个人理解,服务化应该是一种架构设计的理念。相对于之前非常流程的模块化设计思路,服务化是模块化的演进。从原来大颗粒的模块,转变为专注于特定业务、功能的服务(单元)。
任何一个模块都是一个相对完整独立的系统,从前端view、到业务处理、数据模型处理、数据存储。相互独立,互不干扰,是独立的烟囱。而服务化架构思想,改变了烟囱的结构。以横切的思路,将原来的烟囱进行了切面。对于切面上的功能,统一由服务提供功能实现。
相应的,在任何一个系统或模块中,都可以借鉴这种横切的思路,将模块进行横切,以按功能划分服务。
总体设计思路
架构微服务化设计
从架构的构架上,依照微服务化的思路,首先明确服务的概念,并进行服务的分层。每层均由提供不同功能的服务组成,从原来模块化的理解转变为服务化的理念。
另外,这里特别强调微服务的概念应用。从传统模块化的设计风格到服务化的设计风格,是一种转变。而从服务到微服务则是另一种架构风格的转变,也是一种开发模式的转变。微服务强调一个微,相同的都是服务,微服务更强调细粒度化的服务。从功能的规模、开发的投入,到实际交付的周期过程。微就体现了更快,同时也意味着更多的微服务进行并行的开发和交付。从开发管道上看,有利于多管道化的运作模式。
通过管道化的运作,提升服务的交付效率,同时也进一步达到功能解耦。这里,笔者试着根据一个Eclipse插件工程的开发设计来说明微服务化理念的应用过程。
下图是该插件工程基于模块化的设计level0的设计图:
这是一个非常常见的基于功能模块的系统设计方式,按照不同的功能划分到相应的功能模块。在该插件工程中,应用数据都是存储在XML文件中。因此,存储模块直接利用了第三方开源的xml处理模块。而在数据模型处理模块,则是根据业务view的视图需要,以前端view的功能进