Spring Cloud整体架构

Spring Cloud的中文名我们就暂且称呼它为“春云”吧,听上去是多么朴实无华的名字,不过呢一般名字起的低调的都是厉害角色,我们就看看Spring Cloud都提供了哪些靠谱功能吧。

Spring Cloud是一款微服务架构的一站式解决方案,你在微服务化过程中碰到的任何问题,都可以从Spring全家桶里找到现成的解决方案,而且方案还不止一种。我们先来看一幅Spring Cloud的全景图,再来详细解释其中的每个组件的功能。

服务治理

Spring Cloud提供了三款服务治理的组件,分别是Eureka, Consul和Nacus,从这三足鼎立的态势里我们就能猜到,在服务治理领域的背后一定有那么一段恩怨情仇。没错,这三个组件其实是由三个不同的公司或组织来研发的。

在Spring Cloud的架构中,服务治理是其中不可或缺的核心环节,它包含了服务从注册到销毁的整个生命周期的管理。用一句话来说,服务治理确保了调用方可以准确的向可用的服务节点发起调用。

负载均衡

Ribbon是Spring Cloud中负责负载均衡的组件,Ribbon的一大优势是它能够和各个Spring Cloud组件无缝集成,而且十分灵巧轻便又具备高可扩展性。

负载均衡框架是起到分散服务器压力的作用,可以这么说,没有负载均衡技术的服务器集群就不能叫做集群,只有借助负载均衡技术,集群才能够借助服务节点的规模效应发挥出优势。

消息间调用

对于原生态的HTTP调用来说,从Java代码 里发起调用并且构造消息体和Header是一件非常麻烦的事情,考虑到Spring Cloud的服务治理组件也是基于HTTP的,因此特别需要-款简化服务调用的组件。OpenFeign的出现就是为了解决这个问题,我们可以借助Feign的代理机制,像调用一个接口方法一样发起远程HTTP调用。

服务容错

Hystrix是目前Spring Cloud中应用最广泛的服务容错组件,服务容错从宏观上来解释,就是尽可能降低服务异常所带来的影响。我们经常听到两个词叫做“降级’和*熔断”,降级很好理解,现在大家都会打趣的说“消费降级”,就是说降低咱自己的消费水平,在服务容错这里其实是一个道理,降级就是退而求其次,在异常发生之后选一种备 选方案继续提供服务。而熔断则是指在异常达到某个临界值以后,直接切断服务通路,将用户请求统统导向降级逻辑中。

分布式配置中心和消息推送组件

Spring Cloud借助Config组件来集中管理集群中所有服务节点的配置,它是一个中心化的配置管理中心,可以采用包括Github、Database等多种持久化方案来保存配置信息,将你的微服务从繁重的配置工作中解脱出来。利用Config组件我们可以轻松玩转环境隔离、配置推送和配置项动态刷新。

提到配置属性的刷新,就不得不说到Spring Cloud中的另一个组件Bus,它承担了批量通知和推送配置变更的工作,而且我们可以通过扩展Bus的事件,实现“消息广播”的应用场景。

服务网关

服务网关是微服务的第一道关卡,目前Nginx是应用最广泛的反向代理技术,在各个大厂的核心业务系统中都有大量应用,不过Nginx可不是使用Java来配置的,使用和配置Nginx需要掌握它的语法树Spring Cloud则为广大的Java技术人员提供了更加“编程友好”的方式来构建网关层,那就是Gateway和Zul网关层组件。我们可以通过Java代码或者是yml配置文件的方式编写自己的路由规则,并通过内置过滤器或自定义过滤器来实现复杂的业务需求(比如在网关层做令牌验证)。Gateway本身也集成了强大的限流功能,结合使用Redis+SpEL表达式,可以对业务系统进行精准限流。

调用链路追踪

微服务的一大特点就是完成一个业务场景所需要调用的上下游链路非常长,比如说一个下单操作,后台就要调用商品、订单、营销优惠、履约、消息推送、支付等等一大家子微服务,任何一个环节出错可能都会导致下单失败。那同学们如何在一个调用链路中定位到出问题的环节呢?生产环境可不是我们的开发机器,不能为所欲为的做线上debug,那我们只能依靠日志线索。

Sleuth是Spring Cloud提供的调用链路追踪组件,它进行线上问题排查必不可少的关键环节,单就Sleuth来说,它就是在一整条调用链路中打上某个标记,将一个api请求所调用的所有上下游链路串联起来。如果从宏观的角度来说,调用链追踪还涉及到日志打标、调用链分析、日志收集、构建搜索Index等等流程,我们在本章中将通过Sleuth+Zipkin+ELK(Elasticsearch, Logstash,Kibana)这五种技术结合使用,玩转调用链路追踪。

消息驱动

Kafka和RabbitMQ是目前应用最广泛的消息中间件,很多异步调用场景底层都依赖于消息组件,比如说电商场景中的商品批量发布,或者下单成功后的邮件通知系统等等。Stream是Spring Cloud为我们提供的消息驱动组件,它代理了业务层和底层的物理中间件的交互,至于底层中间件是Kafka还是RabbitMQ,对业务层几乎是无感知的。借助Stream我们不仅可以轻松实现组播(组内单播)和广播场景,同时Stream还提供了对异常处理的丰富支持。

防流量卫兵

Sentinel是阿里巴巴开源的一款主打“流量控制”的组件,它秉承了阿里系组件十八班武艺样样精通的风格,与SpringCloud、Dubbo、甚至GRPC都可以很好的集成,在分布式流量控制(包括秒杀场景的突发流量场景)、熔断、消息驱动下的削峰填谷等各个场景下都有稳定发挥,要知道它可是在背后默默支撑双十一流控业务的顶梁柱。

本文已收录至我的个人网站:程序员波特,主要记录Java相关技术系列教程,共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源,让想要学习的你,不再迷茫。

Spring Cloud整体架构解析的更多相关文章

  1. spring源码深度解析—Spring的整体架构和环境搭建

    概述 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的Java 开发框 ...

  2. Spring源码解析--Spring的整体架构

    概述 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的Java 开发框 ...

  3. 基础架构之spring cloud基础架构

    这篇文章是给公司设计的微服务基础架构,包括架构设计.部署流程.部署架构.开发Tip等等.这里分享出来,如果对看官们有点用,我就非常的高兴了. 首页 2. 架构设计 3. 部署流程 4. 部署架构 5. ...

  4. Spring的整体架构的认识

    Spring的整体架构的认识 一).spring是用来做什么的? spirng使用基本的JavaBean来完成以前EJB所完成的事. 二).EJB EJB: Enterprise JavaBean, ...

  5. 特斯拉Tesla Model 3整体架构解析(下)

    特斯拉Tesla Model 3整体架构解析(中) Tesla Computer Unit 特斯拉已经开发了一个由自动驾驶仪和信息计算机组成的定制"液冷双计算平台"."他 ...

  6. 特斯拉Tesla Model 3整体架构解析(上)

    特斯拉Tesla Model 3整体架构解析(上) 一辆特斯拉 Model 3型车在硬件改造后解体 Sensors for ADAS applications 特斯拉 Model 3型设计的传感器组件 ...

  7. Spring cloud整体框架

    研究了一段时间spring boot了准备向spirng cloud进发,公司架构和项目也全面拥抱了Spring Cloud.在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统 ...

  8. 阿里架构师的工作总结:Spring Cloud在架构演进中起到的作用

    Spring Cloud作为一套微服务治理的框架,几乎考虑到了微服务治理的方方面面,本篇主要解答这两个问题:Spring Cloud在微服务的架构中都做了哪些事情?Spring Cloud提供的这些功 ...

  9. (十一) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

  10. 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)

    之前写了很多关于spring cloud的文章,今天我们对OAuth2.0的整合方式做一下笔记,首先我从网上找了一些关于OAuth2.0的一些基础知识点,帮助大家回顾一下知识点: 一.oauth中的角 ...

随机推荐

  1. [USACO2022OPENS] Visits

    题目描述 Bessie 的 \(N\)(\(2\le N\le 10^5\))个奶牛伙伴(编号为 \(1\cdots N\))每一个都拥有自己的农场.对于每个 \(1\le i\le N\),伙伴 i ...

  2. python操作mongodb副本集(mongodb高可用)

    https://pymongo.readthedocs.io/en/stable/examples/high_availability.html# pymongo比较"智能",只要 ...

  3. 华企盾DSC控制台无法登录常见处理方法

    1.查看服务器服务是否正常运行 2.服务器电脑的防火墙关闭了 3.telnet服务器IP和端口(服务器端口和数据库端口)是否是通的 4.如果是外网需要再控制台安装目录改setting配置文件 5.my ...

  4. CentOS连接网络设置

    https://blog.csdn.net/tsundere_x/article/details/104263100  用这个 VMware提供了三种将虚拟网卡和物理网卡捆绑起来的方式,即桥接(Bri ...

  5. 修改Ubuntu登录欢迎界面

    查看登录效果 run-parts /etc/update-motd.d ubuntu 与别的linux不同,直接修改/etc/motd文件重登录后无效.因为这里/etc/motd是一个符号链接,指向/ ...

  6. 正则表达式之grep与sed用法

    一.grep和egrep的用法 (一)grep用法 grep是根据给出的条件查找特定的字符.用单引号查找指定的单词,图1.1.grep后面可选项用**-n显示查找的行数:-i不区分大小写查找图1.2 ...

  7. 技本功|Hive优化之建表配置参数调优(一)

    简介: Hive是大数据领域常用的组件之一,主要用于大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的一个点,因此掌握一些Hive调优是必不可少的一项技能.影响Hive效率的主 ...

  8. javascript中的标识符(JS)

    1.在javascript(JS)中所有的可以由我们自主命名的都可以称为是标识符. 例如:变量名.函数名.属性名都属于标识符. 2.标识符命名一个标识符时需要遵守如下的规则: 1.标识符中可以含有字母 ...

  9. B 树和 B+ 树及其实现

    B 树 B 树和一般的二叉树有许多相似的地方,二者都是为了加快查找的速度,不同之处在于 B 树是为了解决大量的数据而产生的,更加适合读取相对大的数据块的存储系统.B 树的每个节点一般不会存储实际的数据 ...

  10. 前世今生:Kubernete 是如何火起来的?

    本课时,我们就开始正式进入 Kubernetes 的学习,或许你已经听过或简单了解过 Kubernetes,它是一款由 Google 开源的容器编排管理工具,而我们想要深入地掌握 Kubernetes ...