SpringCloud原理简介

SpringCloud简介

Spring cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务的
微服务:就是把一个单体项目,拆分为多个微服务,每个微服务可以独立技术选型,独立开发,独立部署,独立运维.并且多个服务相互协调,相互配合,最终完成用户的价值.
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署

五大重要组件

服务发现——Netflix Eureka
客服端负载均衡——Netflix Ribbon/Feign
服务网关——Netflix Zuul
断路器——Netflix Hystrix
分布式配置——Spring Cloud Config

微服务架构

目前微服务是非常火的架构或者说概念,也是在构建大型互联网项目时采用的架构方式。

单体架构

单体架构,是指将开发好的项目打成war包,然后发布到tomcat等容器中的应用。

什么是微服务

微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级i机 (通常用HTTP资源API ),这些服务围绕业务能力构建并且可通过全自动部署机制独立部置。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。

微服务的特征

  1. 每个微服务可独立运行在自己的进程里。

  2. 一系列独立运行的微服务共同构建起整个系统。

  3. 每个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如订单管理、用,户管理等。

  4. 微服务之间通过一些轻量的通信机制进行通信,例如通过RESTful AP1进行调用。

  5. 可以使用不同的语言与数据存储技术。全自动的部署机制。

微服务架构示例

SpringCloud原理简介

每一个应用功能区都使用微服务完成。

Spring Cloud核心组件

  • Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里
  • Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台
  • Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求
  • Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题
  • Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务

SpringCloud原理简介

Spring Cloud的优势

微服务的框架那么多比如:dubbo、Kubernetes,为什么就要使用Spring Cloud的呢?

  1. 产出于spring大家族,spring在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善。比如dubbo现在就差不多死了
  2. 有Spring Boot 这个独立干将可以省很多事,大大小小的活Spring Boot都搞的挺不错。
  3. 作为一个微服务治理的大家伙,考虑的很全面,几乎服务治理的方方面面都考虑到了,方便开发开箱即用。
  4. Spring Cloud 活跃度很高,教程很丰富,遇到问题很容易找到解决方案
  5. 轻轻松松几行代码就完成了熔断、均衡负载、服务中心的各种平台功能

微服务构建Spring Boot与传统Spring框架的区别?

传统Spring框架:
1、配置web.xml,加载spring和spring mvc;
2、配置数据库连接、配置spring事务;
3、配置加载配置文件的读取,开启注解;
4、配置日志文件;
5、配置完成之后部署tomcat 调试;

Spring Boot:
1、大量的自动化配置简化了Spring原有样板化的配置;
2、类似模块化的Starter POMs的定义,不需要在pom.xml中维护错综复杂的依赖关系;
3、可以很好的融入Docker,自身支持嵌入的Tomcat、Jetty等容器。