SpringCloud打造微服务平台--概览

SpringCloud打造微服务平台--概览

简述

SpringCloud是什么

Spring Boot和SpringCloud是什么关系

  • Spring Boot是Spring的一套快速WEB开发的脚手架,可创建独立的Spring应用程序,无代码生成和xml配置、自动配置Spring、内嵌Servlet容器。Spring Boot使用了默认大于配置的理念,不少集成方案已经帮你选择好了,能不配置就不配置。能够基于Spring Boot快速开发单个微服务。
  • Spring Cloud是一个基于Spring Boot实现的云应用开发工具。Spring Cloud很大的一部分是基于Spring Boot来实现。Spring Boot专一于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架;

spring -> spring booot -> spring cloud 这样的关系。git

官网web

clipboard.png

SpringCloud架构

架构

组件概览

组件

组件简介

  • 注册中心:

spring-cloud-eureka算法

spring-cloud-zookeeperspring

spring-cloud-consul数据库

  • 配置中心:

spring-cloud-config后端

  • 服务容错:

spring-cloud-netflix-hystrix缓存

  • API网关:

spring-cloud-gateway安全

spring-cloud-netfilx-zuul服务器

  • 服务调用:

spring-cloud-openfeign微信

spring-cloud-netflix-ribbon

  • 消息队列:

spring-cloud-stream --> rabbitmq、kafka

spring-cloud-bus

  • 链路跟踪:

spring-cloud-sletuh --> zipkin server

  • 任务调度:

spring-cloud-task

  • 安全认证:

spring-cloud-security

spring-cloud-vault

  • 测试管理:

spring-cloud-contract

组件介绍

注册中心

Why?

微服务架构中,应用被拆分众多的小应用服务,应该规模变大,服务实例的数量是动态变化,为了为客户端可以访问到服务,就必需要有一种服务的发现机制,完成服务的登记注册、监控管理、服务发现,服务间的调用管理等功能。

What?

有两种主要的服务发现方式:客户端发现(client-side discovery)和服务器端发现(server-side discovery)。Eureka是客户端发现模式。

Spring Cloud Eureka由两个组件组成:Eureka服务器和Eureka客户端。

Eureka Client链接到Eureka Server,并维持心跳链接。这样系统的维护人员就能够经过 Eureka Server 来监控系统中各个微服务是否正常运行。基本的结构以下图。

eureka

另外Eurekag还提供了web的管理界面,运维人员能够查看各微服务的状况

eureka admin

配置中心

Why?

在微服务架构中,每一个微服务节点都有相关的配置数据项。当节点众多,维护就变得很是困难,所以须要创建一个中心配置服务,全部配置都放在配置中心统一管理。

What?

Spring Cloud Config由两个组件组成:Config服务器和Config客户端。应用启动时,将相关配置项拉取到本地缓存使用,配置更新时也可由配置中心主动推送到应用节点(后续会详细讲解)。他支持git、svn、file方式存储配置。

config

消息中心

Why?

消息总线是为了实现企业应该数据共享和集成,提供一种基于企业服务总线的信息共享交换平台。具备松散耦合的特色,实现了"集中式管理、分布式运行"的工做模式。

在微服务架构中,服务众多,各服务又有不少的调用和被调用关系。消息总线就是为了解决在某些非同步场景下,服务间强解藕、数据交换量巨大的解决方案。

What?

Spring Cloud Bus 将分布式的节点用轻量的消息代理链接起来。它能够用于广播配置文件的更改或者服务之间的异步通信,也能够用于监控。能够说,消息总线是微服务应用扩展“道路”上的推动器,并且也把它用来做应用间相互通讯的消息管道。

bus

服务网关

Why?

在微服务架构中,后端服务每每不直接开放给调用端,而是经过一个API网关根据请求的url,路由到相应的服务。当添加API网关后,在第三方调用端和服务提供方之间就建立了一面墙,这面墙直接与调用方通讯进行权限控制、限流、排队,过载保护、请求合并、裁剪、黑白名单、异经常使用户过滤拦截等等。

What?

Spring Cloud Gateway是一个构建在Spring 生态之上的高性能、非阻塞API网关,包括:Spring 5,Spring Boot 2和Project Reactor。

gateway

服务调用

Why?

负载均衡可分为服务端负载均衡和客户端负载均衡,服务端负载均衡彻底由服务器处理,客户端不须要作任何事情。而客户端负载均衡技术,客户端须要维护一组服务器引用,每次客户端向服务端发请求的时候,会根据算法主动选中一个服务节点。经常使用的负载均衡算法有:随机、轮询、权重、负载、Hash等。

What?

Spring Cloud Ribbon是一个基于客户端的负载均衡器,Feign内部也已经使用了Ribbon。

Spring Cloud Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单。Feign提供了HTTP请求的模板,经过编写简单的接口和插入注解,就能够定义好HTTP请求的参数、格式、地址等信息。而Feign则会彻底代理HTTP请求,咱们只须要像调用方法同样调用它就能够完成服务请求及相关处理。

Feign整合了Ribbon和Hystrix(见下节),可让咱们再也不须要显式地使用这两个组件,大大简化了服务调用。

gateway

服务容错

Why?

在分布式架构中,一个应用依赖多个服务是很是常见的,若是其中一个依赖因为延迟太高发生阻塞,调用该依赖服务的线程就会阻塞,若是相关业务的QPS较高,就可能产生大量阻塞,从而致使该应用/服务因为服务器资源被耗尽而拖垮。

另外,故障也会在应用之间传递,若是故障服务的上游依赖较多,可能会引发服务的雪崩效应。就跟数据瘫痪,会引发依赖该数据库的应用瘫痪是同样的道理。

因此,断路器就是用来支持服务隔离、熔断等操做的工具。断路器会以隔离的方式来处理服务请求,当断路数量达到阈值,就会触发熔断(直接返回失败)。

What?

Spring Cloud Hystrix微服务架构中提供服务隔离、熔断、降级机制的工具/框架。经过以上手段来下降服务故障带来的关联影响,以提升系统的总体可用性。

  • 断路器与各服务的关系

gateway

  • 断路器的原理

hystrix

受权与认证

Why?

在 Web 应用开发中,安全一直是很是重要的一个方面。安全虽然属于应用的非功能性需求,可是应该在应用开发的初期就考虑进来。若是在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面,应用存在严重的安全漏洞,没法知足用户的要求,并可能形成用户的隐私数据被攻击者窃取;另外一方面,应用的基本架构已经肯定,要修复安全漏洞,可能须要对系统的架构作出比较重大的调整,于是须要更多的开发时间,影响应用的发布进程。所以,从应用开发的第一天就应该把安全相关的因素考虑进来,并在整个应用的开发过程当中。

What?

Spring Cloud Security是基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供全面的安全性解决方案,同时在Web请求级和方法调用级处理身份确认和受权。他是灵活和强大的身份验证和访问控制框架,以确保基于Spring的Java Web应用程序的安全。

OAuth2.0受权框架使第三方应用程序来获取对HTTP服务的有限访问机会。不管是经过编排资源全部者和HTTP服务之间的交互批准的资源全部者,或经过容许第三方应用程序来获取本身的访问权限。

例如某网站/app以微信、qq登录方式就是OAuth2方式。

Spring Security Oauth2是创建在spring security的基础之上,符合OAuth2标准的开源实现。

OAuth2定义了4种模式,共有4个角色,具体内容能够查看另外的介绍

Spring Security OAuth2简介与实施

相关文章
相关标签/搜索