Springboot和springcloud的关系
微服务是一种架构的理念,提出了微服务的设计原则,从理论为具体的技术落地提供了指导思想。Spring Boot是一套快速配置脚手架,可以基于Spring Boot快速开发单个微服务;
Spring Cloud是一个基于Spring Boot实现的服务治理工具包;
Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架。
架构演变简述
- 单体架构:未做任何拆分的Java Web程序
- 分布式架构:按照业务垂直划分,每个业务都是单体架构,通过API互相调用。
- SOA架构:SOA是一种面向服务的架构。其应用程序的不同组件通过网络上的通信协议向其它组件提供服务或消费服务,所以也是分布式架构的一种。
- 微服务架构在某种程度上是SOA架构的进一步的发展。
微服务架构简介
通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。
服务之间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API ) 。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。
另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务。可以使用不同的语言来编写服务,也可以使用不同的数据存储。
SpringCloud技术体系
- Eureka注册中心;
- Ribbon负载均衡;
- Hystrix:Hystix是Netflix开源的一个延迟和容错库,用线程隔离、服务降级方法解决雪崩问题。
- Circuit Breaker服务熔断:服务调用方 可以自己进行判断哪些服务反应慢或存在大量超时,可以针对这些服务进行主动熔断,防止整个系统被拖垮。
- Feign:Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。而Feign则会完全代理HTTP请求,我们只需要像调用方法一样调用它就可以完成服务请求及相关处理。SpringCloud对Feign进行了封装,使其支持SpringMVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。
- Spring Cloud Gateway组件:核心是一系列的过滤器,通过这些过滤器可以将客户端发送的请求转发(路由)到对应的微服务;
- Spring Cloud Bus服务总线:实现配置的自动更新(基于RabbitMQ实现的)。
引用
部分内容引用自公众号JAVA知音