在介绍微服务之前,我们先了解什么是单体架构。
这种将所有的代码及功能都包含在一个war包中的项目组织方式被称为Monolith(单体应用)架构。
但经过日积月累,这个应用就会变成一个庞大而复杂的“怪物”,不好维护,随着代码的增加,构建和部署的时间也会增加。
在单体应用中,每次功能的变更或缺陷的修复都会导致我们需要重新部署整个应用。
全量部署的方式耗时长、影响范围大、风险高,这使得单体应用项目上线部署的频率较低,从而又导致两次发布之间会有大量功能变更和缺陷修复,出错概率较高。
因此越来越多的公司使用微服务解决以上问题。
微服务架构是以开发一组小型服务的方式来开发一个独立的应用系统的。其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API轻量的机制来相互通信。
这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务我们仅做最低限度的集中管理。例如一个电商系统中包括 商品服务、支付服务、优惠服务、订单服务,每个服务只负责一个业务功能,独立运行在自己的进程内,服务之间相互协调。如果其中一个服务出现问题,也不会影响到其他服务。
微服务与分布式、SpringCloud
- 微服务是架构设计方式,分布式是系统部署方式,两者概念不同
微服务是指很小的服务,可以小到只完成一个功能,这个服务可以单独部署运行,不同服务之间通过rpc调用。
分布式是指服务部署在不同的机器上,一个服务可以提供一个或多个功能,服务之间也是通过rpc来交互或者是webservice来交互的。
两者的关系是,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,比如集群部署,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。 - SpringCloud是微服务架构的一种典型框架 通过SpringCloud来协调处理我们的一个个微服务!Springcloud ,基于Springboot提供了一套微服务解决方案,包括服务与注册中心,配置中心,链路监控,服务网关,负载均衡,熔断器等组件,它巧妙地简化了分布式系统的开发,屏蔽了复杂的配置原理和实现原理。是分布式微服务架构下一站式的解决方案。
SpringBoot 专注于快速开发单个个体微服务 SpringCloud 是专注于全局的微服务协调框架,将SpringBoot开发的一个个微服务整合并管理,为各个微服务提供,配置管理,服务发现,路由,分布式会话等集成服务 SpringBoot可以离开SpringCloud单独使用,开发案项目,但是SpringCloud离不开SpringBoot