什么是微服务架构
微服务架构就是系统架构设计的一种风格,它主旨将一个独立的系统,拆分成各个微服务,各个微服务独立运行,他们之间通过Http的Restful API进行通信,拆分出来的微服务是根据原系统高耦合部分进行构建(之后会单独讲解如何拆分微服务),每个微服务都有自己的数据存储(涉及到分布式事务的处理,之后会有讲解)、独立部署,由于轻量级的通讯协议,微服务可以使用不同的语言来开发。
单体式应用的区别
以往的传统架构,我们会针对一个业务进行构建一个单体项目,主要分为数据、服务端、客户端,在业务初期往往开发、测试、部署等相对比较简单,但是经过不断的更新迭代之后会发现这个单体应用汇很臃肿,并且耦合度极高,可能修改一处代码会牵扯到很多地方的修改,缺点慢慢就暴露出来了,维护成本也会越来越大,且开发不容上手。
微服务就解决了这个单体应用臃肿难以维护的问题,我们可以将不同的功能模块进行拆分,拆分出一个一个微服务,可独立部署和扩展,部署一个微服务不会影响到其他微服务的运行,实现了高内聚、低耦合,我们也可以更准确的去发现系统的性能瓶颈
SpringCloud
SpringCloud是一个基于SpringBoot实现的微服务架构开发工具,它为微服务中的服务治理、配置管理、智能路由、分布式会话、集群状态等提供了一个简单的开发方式。
SpringCloud包含多个组件:
SpringCloud Netflix:核心组件,对多个Netflix OSS开源套件进行整合。
Eureka:服务治理组件,包含服务注册中心,服务注册与发现的实现。
Hystrix:断路由,帮助服务依赖中出现延迟和故障时提供强大的容错机制。
Ribbon:客户端负载均衡组件。
Feign:基于Ribbon和Hystrix的声明式服务调用组件,一般用于服务之间相互调用。
Zuul:网关,智能路由、智能过滤等功能。
Archaius:外部化配置组件。
SpringCloud Config:配置中心,可实现配置外部化存储,支持使用SVN、GIT存储配置,并支持配置刷新功能。
SpringCloud Bus:消息总线,用于传播集群中各微服务的状态变化,比如可以实现动态刷新配置
SpringCloud Stream:通过Kafka、Redis、MQ、可以实现消费微服务,通过简单的模型就可实现发送和消费
SpringCloud Sleuth:链路追踪组件,可实现分布式跟踪,方便定位问题等
还有很多组件这里就不一一介绍了
SpringCloud是基于SpringBoot搭建的,所以大家要对SpringBoot有一定的掌握