为了解决单体应用的缺点,工程师们想到将原来大的单体应用进行拆分,化整为零形成独立的应用,不过此时这些应用没有直观的入口,因此用传统应用的概念来定义就不太妥当。于是诞生了“服务”,通过服务来描述这种功能性的应用,并其他应用提供功能支持,服务于其他应用。现在“服务”这个词已经广义化了,只要是能向其他组件提供技术支撑的系统都叫服务,甚至出现了很多概念,如SaaS(软件即服务)、PaaS(平台即服务)、IaaS(基础架构即服务)。
服务其实就是将其他应用当成消费者,为其提供特定的功能。例如,将用户登录抽象成一个服务,可以叫作用户服务,让其他服务来调用。以此类推,可以有订单服务、支付服务、消息服务、商品服务、客服服务、营销服务、积分服务等。总之,就是抽取公共部分以避免重复工作。这样一来,后续应用的开发,也就变成了服务的开发。
理解了服务是怎么回事,接着我们来学习微服务。
微服务概念最早是 Martin Fowler(马丁?福勒)于2014年提出的。他指出了微服务架构是用于描述将软件应用设计成独立部署服务的一种方式,但是并没有给出精确的定义,只是提出了一些确定、通用的特征,如围绕组织和业务能力、自动化部署、节点智能、对语言和数据的分散控制等。
从技术的角度理解,微服务就是将传统的一站式应用,根据不同的业务拆分成一个小的服务,每个服务提供独立的业务功能,拥有自己独立的存储(数据库或者缓存),通过服务之间的互相调用来完成复杂的系统功能。
服务是指将其他应用抽象为功能性的组件,为其他应用提供特定功能支持的系统。微服务则是一种将软件应用设计成独立部署服务的架构方式。在微服务架构下,传统的一站式应用根据业务进行拆分,形成小的独立服务,每个服务都提供独立的业务功能和存储,并通过互相调用来完成复杂的系统功能。