Spring Cloud是什么

Spring Boot 让我们从繁琐的配置文件中解脱了出来,而 Spring Cloud,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud组成

微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,springcloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多,springcloud需要管理好这些微服务需要很多框架支持。

下图是 Spring Cloud 所包含的框架图:

常用组件详细介绍

 服务治理

服务注册与发现是 Spring Cloud 中最核心的组件之一,整个系统中所有的服务都可以注册到注册中心,然后由注册中心进行统一调度,方便后续的水平扩展以及故障转移等。目前 Spring Cloud 主要通过整合 Netflix 的相关产品来实现这方面的功能(Spring Cloud Netflix),包括用于服务注册和发现的 Eureka,调用断路器 Hystrix,调用端负载均衡 Ribbon,Rest 客户端 Feign,智能服务路由 Zuul,用于监控数据收集和展示的 Spectator、Servo、Atlas,用于配置读取的 Archaius 和提供 Controller 层 Reactive 封装的 RxJava。除此之外,针对于服务的注册和发现,除了 Eureka,Spring Cloud 也整合了 Consul 和 Zookeeper 作为备选,但是因为这两个方案在 CAP 理论上都遵循 CP 而不是 AP,所以官方并没有推荐使用。

分布式链路监控

Spring Cloud Sleuth 提供了全自动、可配置的数据埋点,以收集微服务调用链路上的性能数据,并发送给 Zipkin 进行存储、统计和展示。

消息组件

既然是微服务架构,那服务间的调用肯定是无法避免的。Spring Cloud Stream 对于分布式消息的各种需求进行了抽象,包括发布订阅、分组消费、消息分片等功能,实现了微服务之间的异步通信。Spring Cloud Stream 也集成了第三方的 RabbitMQ 和 Apache Kafka 作为消息队列的实现。而 Spring Cloud Bus 基于 Spring Cloud Stream,主要提供了服务间的事件通信(比如刷新配置)。

配置中心

随着服务的不断增多,同时每个服务也会有多个环境(开发环境、测试环境、生产环境等),每个环境的配置文件又会有所不同,但是其中又有许多配置是可以共用的,如果每个服务自己去管理这些配置,会给维护带来很大的麻烦,这时候,我们就需要引入配置中心去统一管理这些配置。基于 Spring Cloud Netflix 和 Spring Cloud Bus,Spring 又提供了 Spring Cloud Config,实现了配置集中管理、动态刷新的配置中心概念。配置通过 Git 或者简单文件来存储,支持加解密。

完全控制

Spring Cloud Security 基于 OAuth2 这个开放网络的安全标准,提供了微服务环境下的单点登录、资源授权、令牌管理等功能。

命令行工具

Spring Cloud Cli 提供了以命令行和脚本的方式来管理微服务及 Spring Cloud 组件的方式。

集群工具

Spring Cloud Cluster 提供了集群选主、分布式锁(暂未实现)、一次性令牌(暂未实现)等分布式集群需要的技术组件。

Spring Cloud 各个组件如何来配套使用

如上图:Spring Cloud 各个组件相互配合,合作支持了一套完整的微服务架构。

注:

1.Eureka 负责服务的注册与发现,很好将各服务连接起来

2.Hystrix 负责监控服务之间的调用情况,连续多次失败进行熔断保护

3.Hystrix dashboard,Turbine 负责监控 Hystrix 的熔断情况,并给予图形化的展示

4.Spring Cloud Config 提供了统一的配置中心服务

5.当配置文件发生变化的时候,Spring Cloud Bus 负责通知各服务去获取最新的配置信息

6.所有对外的请求和服务,都通过 Zuul 来进行转发,起到 API 网关的作用

7.最后使用 Sleuth+Zipkin 将所有的请求数据记录下来,方便进行后续分析

SpringCloud和Dubbo

SpringCloud和Dubbo都是现在主流的微服务架构

SpringCloud是Apache旗下的Spring体系下的微服务解决方案Dubbo是阿里系的分布式服务治理框架

对比图如下:

最大区别:SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。从技术维度上,其实SpringCloud远远的超过Dubbo,Dubbo本身只是实现了服务治理,而SpringCloud现在以及有21个子项目以后还会更多。所以其实很多人都会说Dubbo和SpringCloud是不公平的,但是由于RPC以及注册中心元数据等原因,在技术选型的时候我们只能二者选其一,所以我们常常用他俩来对比。

Dubbo和Spring Cloud并不是完全的竞争关系,两者所解决的问题域不一样:Dubbo的定位始终是一款RPC框架,而Spring Cloud的目的是微服务架构下的一站式解决方案。

本文转载自开测


如果对文章有任何疑问或建议

可以留言告诉我们


往期精彩回顾

2019年度精选文章

360技术中台招聘啦!!

花椒前端基于 Docker 的 SSR 持续开发集成环境实践


360技术公众号

技术干货|一手资讯|精彩活动

扫码关注我们

springcloud 微服务鉴权_Java微服务框架spring cloud相关推荐

  1. springcloud 微服务鉴权_springcloud 微服务权限校验JWT模式获取 token 实战(十二)...

    springcloud 微服务权限校验JWT模式获取 token 实战(十二) springcloud 微服务权限校验JWT模式获取 token 实战(十二) JWT:json web token 是 ...

  2. 【Dubbo3高级特性】「提升系统安全性」通过令牌进行服务验证及服务鉴权控制实战指南

    系列文章目录 如果你看到了这里,那么接下来你将会认识Dubbo3的诞生将如何引领微服务领域更进一步,从而迈入云原生的领域,这当然不仅仅是Dubbo3,之前也介绍了Java生态另外一个云原生领域的技术Q ...

  3. springcloud 微服务鉴权_我对微服务、SpringCloud、k8s、Istio的一些杂想

    一.微服务与SOA "微服务"是一个名词,没有这个名词之前也有"微服务",一个朗朗上口的名词能让大家产生一个认知共识,这对推动一个事务的发展挺重要的,不然你叫微 ...

  4. BCrypt加密怎么存入数据库_第6天 密码加密与微服务鉴权JWT(下)

    上篇: Gavin:第6天 密码加密与微服务鉴权JWT(上)​zhuanlan.zhihu.com 能够使用BCrypt密码加密算法实现注册与登陆功能 能够说出常见的认证机制 能够说出JWT的组成部分 ...

  5. 密码加密与微服务鉴权JWT

    密码加密与微服务鉴权JWT ## 学习目标 1.用户注册时候,对数据库中用户的密码进行加密存储(使用 SpringSecurity). 2.使用 JWT 鉴权认证. 一.BCrypt 密码加密 任何应 ...

  6. 文件服务器鉴权,服务鉴权

    使用kmse实现服务的权限校验 通过一个简单的实例说明开发者如何通过kmse进行服务间的权限校验. 一.准备客户端和服务端两个demo 这里演示如何快速实践服务鉴权功能.假如现在有两个微服务 auth ...

  7. Go微服务 - 第八部分 - 使用Viper和Spring Cloud Config进行集中配置

    第八部分: Go微服务 - 使用Viper和Spring Cloud Config进行集中配置 在第八部分,我们探索Go微服务中使用Spring Cloud Config进行集中配置. 简介 考虑到微 ...

  8. 浅谈服务治理、微服务与Service Mesh(二) Spring Cloud从入门到精通到放弃

    引言 作为本系列文章的第二篇,本文主要为大家介绍下微服务概念中非常火热的Spring Cloud开发框架.由于网上关于Spring Cloud的文章多如牛毛,为了让大家阅读后能有不一样的收获,因此本文 ...

  9. 微服务治理框架- - -Spring Cloud

     前言:最近微服务很是火热,那么什么是微服务?相信小伙伴们对此也是一知半解,那么今天叶秋学长带领大家一起学习微服务治理框架Spring Cloud,快来跟着学长一起学习吧~~ 目录 对SpringCl ...

最新文章

  1. 【文本分类】混合CHI和MI的改进文本特征选择方法
  2. python3 命令行参数处理库 argparse、docopt、click、fire 简介
  3. ubuntu 20.04修改数据源配置
  4. java生成可执行文件的方法总结
  5. C++的静态成员函数指针
  6. 循环斐波那契数列_第五课:斐波那契数列(第一课时)
  7. c语言链表贪吃蛇教程,编《贪吃蛇》最简单的算法,链表法
  8. html标签--!DOCTYPE (怪异模式和DTD)
  9. selenium的运行时异常
  10. 你的手机浏览器不支持webgle_不支持n79频段5G手机不能买?OPPO Reno3全频覆盖消除后顾之忧...
  11. Java Annotaion认识
  12. esri-leaflet入门教程(2)-地图的HelloWorld
  13. HDU2022 海选女主角【最值】
  14. 快速西门子PLC入门(适合零基础)
  15. jquery 的模块化
  16. 自下而上构建知识图谱全过程
  17. 生日祝福卡片 html,暖心的卡片生日祝福语
  18. 基于Python实现五子棋
  19. 【途牛旅游项目】项目环境搭建,实现登陆功能
  20. mysql存密码_存储用户ID和密码到mysql数据库的方法

热门文章

  1. 商业计划书最好就是十页篇幅
  2. [Java学习资料] [成长之路]
  3. [Leedcode][JAVA]第[945]题
  4. python中superclass是什么_深度解析并实现python中的super(转载,好文)
  5. 破解静态WEP KEY全过程
  6. 打架程序_学生打架不知道怎么处理?一般程序了解下,对你或许有帮助
  7. 广工android嵌入式系统试卷_嵌入式系统考试试题A及答案
  8. 计算机应用基础试模块5ACCSE,2015年计算机二级《Access》上机最后冲刺卷(1)
  9. linux的文件搜索命令,Linux文件搜索命令find的用法 | 术与道的分享
  10. python argument list too long_间歇“OSError:[Errno 7]参数列表太长”,命令短(~125个字符)...