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