微服务是什么?
微服务的定义?
维基上对其定义为:一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,它提倡 将单一应用程序划分成一组小的服务 ,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中 ,服务与 服务间采用轻量级的通信机制 互相沟通(通常是基于HTTP的RESTful API,或者RPC)。每个服务都围绕着具体业务进行构建,并且能够独立部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建。
单体架构
早期的软件,所有功能都写在一起,这称为单体架构(monolithic software)。
举个栗子:
早期电商系统的购物车、订单、支付、评价等都在一个单体项目中
(1)所有功能耦合在一起,互相影响,最终难以管理。
(2)哪怕只修改一行代码,整个软件就要重新构建和部署,成本非常高。
(3)因为软件做成了一个整体,不可能每个功能单独开发和测试,只能整体开发和测试,导致必须采用瀑布式开发模型。
微服务架构
简单来说,微服务就是把大一统的单体软件拆分成很多小的服务.
(1)每种服务功能单一,相当于一个小型软件,便于开发和测试。
(2)各个服务独立运行,简化了架构,提高了可靠性。
(3)鼓励和支持代码重用,同一个服务可以用于多种目的。
(4)不同服务可以单独开发和部署,便于升级。
(5)扩展性好,可以容易地加机器、加功能,承受高负载。
(6)不容易出现单点故障。即使一个服务失败了,不会影响到其他服务。