资讯专栏INFORMATION COLUMN

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

siberiawolf / 2270人阅读

摘要:授权框架使第三方应用程序来获取对服务的有限访问机会。无论是通过编排资源所有者和服务之间的交互批准的资源所有者,或通过允许第三方应用程序来获取自己的访问权限。

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 这样的关系。

官网

SpringCloud架构

组件概览

组件简介

注册中心:

spring-cloud-eureka

spring-cloud-zookeeper

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 来监控系统中各个微服务是否正常运行。基本的结构如下图。

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

配置中心 Why?

在微服务架构中,每个微服务节点都有相关的配置数据项。当节点众多,维护就变得非常困难,因此需要建立一个中心配置服务,所有配置都放在配置中心统一管理。

What?

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

消息中心 Why?

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

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

What?

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

服务网关 Why?

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

What?

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

服务调用 Why?

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

What?

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

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

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

服务容错 Why?

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

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

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

What?

Spring Cloud 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简介与实施

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11906.html

相关文章

  • 架构~服务 - 收藏集 - 掘金

    摘要:它就是史上最简单的教程第三篇服务消费者后端掘金上一篇文章,讲述了通过去消费服务,这篇文章主要讲述通过去消费服务。概览和架构设计掘金技术征文后端掘金是基于的一整套实现微服务的框架。 Spring Boot 配置文件 – 在坑中实践 - 后端 - 掘金作者:泥瓦匠链接:Spring Boot 配置文件 – 在坑中实践版权归作者所有,转载请注明出处本文提纲一、自动配置二、自定义属性三、ran...

    church 评论0 收藏0
  • 架构~服务

    摘要:接下来继续介绍三种架构模式,分别是查询分离模式微服务模式多级缓存模式。分布式应用程序可以基于实现诸如数据发布订阅负载均衡命名服务分布式协调通知集群管理选举分布式锁和分布式队列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最简单的 SpringCloud 教程 | 第九篇: 服务链路追踪 (Spring Cloud Sleuth) 史上最简单的 S...

    xinhaip 评论0 收藏0
  • 云架构&设计思想之SpringCloud+ Spring Boot + Mybati

    摘要:使用进行项目的构建管理,采用进行持续集成,主要定位于大型分布式企业系统或大型分布式互联网产品的架构。使用防脚本注入跨站点脚本编制伪造请求攻击等常见的攻击手段。   鸿鹄云架构系统管理平台是一个大型企业、分布式、微服务、云架构的JavaEE体系快速研发平台,基于模块化、微服务化、原子化、热部署...

    willin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<