“微服务”是近期软件开发领域比较热门的概念,其最早出现在2014年3月著名架构师Martin Fowler所写的一篇文章(https://martinfowler.com/articles/microservices.html)中。在这篇文章里,Martin Fowler提到:微服务架构是一种以一组小的服务来替代开发单个大型应用的方法,这些服务运行在独立的进程中,使用HTTP API进行通信。这些服务围绕业务功能创建,可以通过全自动部署方式独立部署,可以用不同的编程语言编写,并使用不同的数据存储技术。
根据以上的定义,我们可以得出微服务的以下两个重要特征:
很小,专注与做一件事。
微服务要多小才算小呢?关于这点,没有明确的标准。亚马逊的创始人贝佐斯曾经说过,任何用两个披萨喂不饱的团队都是太大了。那么,对于我这样的一口气可以吃掉一个披萨的吃货来说,如果一个服务需要2个以上的人来开发,就是太大了。一个服务只需要专注做一个方面的事情,比如说用户管理,购物车管理,账单管理等等,根据业务模型来划分成不同的小服务。将所有这些小服务组合起来,就是一个完整的大型应用。自治性,彼此之间相互独立,可以单独修改和部署。
一个微服务就是一个独立的应用程序实体,可以独立地作为一个操作系统的进程存在。不同的微服务可以部署到不同的服务器或者是虚拟服务器中。微服务会提供一组API,它们之间通过这些API进行通信。可以把微服务看成是一个小的应用,拥有自己完整的代码库。只要对外提供的API不变,那么修改代码和部署代码,都不会影响到其他微服务。