微服务概述:
系统进化的两个阶段 :
集中式系统:把所有的程序,功能,模块集中到一个项目中,部署在一台服务器上
分布式系统:把所有的程序,功能拆分成不同的子系统,部署在多台不同的服务器上,这些子系统相互协作共同对外提供服务,而对用户而言,使用上和集中式系统一样
微服务:
- 微服务是系统架构上的一种设计风格,
- 将一个原本独立的系统拆分成多个小型服务,这个小型服务在各自独立的进程中运行,
- 服务之间通过基于http的restful api进行通信协作(json形式)
- 被拆分后的每一个小型服务都围绕着系统中的某一项业务功能进行构建
- 每个服务都是独立的项目,可以进行独立测试,开发,部署.
- 由于各个服务间采用基于http的json传输数据,所以,各个服务可以用不同的语言开发
微服务架构的优缺点:
优点:
- 微服务将系统中的不同功能模块拆分成多个不同的服务,这些服务进行独立的开发和部署,每个服务都运行在自己的进程内,每个服务的更新都不会影响其他服务
- 由于每个服务独立部署的,我们可以更准确地监控每个服务的资源消耗情况,进行性能的评估,通过压力测试,也很容易发现各个服务间的性能瓶颈所在
- 每个服务独立开发,项目的开发也比较方便,减少代码冲突,逻辑处理流程更加清晰,让后续维护与扩展更加容易
- 可以使用不同语言开发
缺点:
- 微服务增加了系统维护和部署的困难,导致一些功能模块或代码无法复用
- 随着系统日益增长,微服务在一定程度也会出现集成测试越来越复杂的情况
- 随着微服务的增多,保持数据一致性,服务之间的通信成本等都会出现问题
总之就是不要为了微服务而微服务
spring cloud:
在以往的微服务架构,几乎大部分开源组件只能解决某一个场景下的问题,并不能解决开发中遇到的各种问题,所以开发的时候需要整合不同的框架和组件,并且往往需要根据自己的业务来进行改进,这样会在前期技术选型的时候花费大量时间
这个时候springcloud出现了
- springcloud是一个一站式的分布式系统的框架
- springcloud为开发人员提供了一系列工具(配置管理,服务注册发现,断路器,智能路由,微代理,控制总线,全局锁,分布式会话和集群状态管理等)
- springcloud可以快速实现以上的问题
- springcloud近年来被大力推崇,成为目前微服务架构首选工具
- springcloud基于springboot构建,springboot是基础
引入一下springcloud官网的原话:
springcloud可以使构建分布式系统不再那么复杂和容易发生错误,springcloud为最常见的分布式系统模式提供了简单和容易理解的编程模型,帮助开发者构建灵活,可靠和协调一致的应用.springcloud在springboot的基础上进行构建,使开发者很容易的开始工作并快速提高生产效率.
spring cloud整体架构:
Eureka Server:服务注册中心和服务发现中心
Service Provider:服务提供者
Service Consumer:服务消费者