什么是微服务

微服务是系统上架构的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型的微服务,这些小型的
微服务,这些小型的微服务都可以在各自的服务器上独立运行,服务之间通过基于HTTP的Restful API进行通信。
被拆分成的每个小型微服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,并且每个服务都维护
着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于有了轻量级的通信协作的基础,所以这些
微服务可以使用不同的语言来编写。

与单体架构的区别

在以往传统的企业系统架构中,我们针对一个复杂的业务需求通常使用对象或业务类型来构建一个单体项目。
在项目中我们通常将需求分为三个主要部分:数据库、服务端处理,前端呈现。在业务发展初期,由于所有的
业务逻辑都在同一个应用中,开发、测试、部署都还比较容易、方便。但是,随着企业发展,系统为了应对不同
的业务需求会不断该单体项目增加不同的业务模块。同时随着移动设备的进步。前端展现模块已经不仅仅是局限
WEB的形式,这对于系统后端向前端的支持需要更多的接口模块。单体应用由于面对的业务需求更加广泛,不断
扩大的需求会使得单体应用变得越来越臃肿。单体应用问题就逐渐得凸显出来。由于单体系统部署在一个进程内,
往往我们i修改一个很小的功能,为了部署上线会影响其他功能的运行。并且,单体应用架构中的这些功能模块
的使用场景,并发量、消耗的资源类型都各不同,对于资源的利用又互相影响,这样使得我们对各个业务模块的
系统容量很难给出较为准确的评估。所以,单体系统在初期虽然可以非常方便的进行开发和应用,但是随着系统
的发展,维护成本会边得越来越大,且难以控制。
为了解决单体系统变得庞大臃肿之后产生的难以维护的问题,微服务架构的诞生并被大家所关注。我们将系统中的
不同功能模块拆分成不同的微服务,这些服务都能在独立的部署和扩展。由于每个服务都可以运行在自己的进程内,
在部署上有稳固的边界,这样每个服务的更新都不会影响到其他的服务的运行。同时,由于是独立部署的,我们可以
更精准的为每个微服务评估性能容量,通过配合服务间的协作流程也可以更容易的发现系统性能瓶颈的位置,以及
给出较为准确的系统级性能评估。