4000-9696-28

火的一塌糊涂的SpringCloud到底是个啥?

2023年08月17日 15:08供稿中心:北大青鸟总部

摘要: 时至今日,Springcloud几乎已经是互联网公司的标配了,但是很多同学可能对SpringCloud还不是特别的了解,微服务和SpirngCloud经常傻傻分不清楚,今天的我们的文章是介绍下SpringCloud生态。

时至今日,Springcloud几乎已经是互联网公司的标配了,但是很多同学可能对SpringCloud还不是特别的了解,微服务和SpirngCloud经常傻傻分不清楚,今天的我们的文章是介绍下SpringCloud生态;顺便把微服务的和SpirngCloud的关系,在跟大家解释下;因为要想理解SpringCloud,怎么也离不了微服务。

因为SpringCloud火爆的大背景就是微服务架构的火爆,接下来我们就按照先说微服务,再说SpringCloud的顺序,给大家一一介绍。


· 微服务

提到微服务相信大家都不太陌生,互联网经过这么多年的发展,从最初的草莽时代,到现在巨头林立的阶段,很多领域都已经相对完善。

从早期的单体架构、集群架构、分布式架构、到现在基本人人都是微服务架构,这里我们先通过几张图来看下互联网技术架构的演进。


· 单体架构

我们都知道互联网刚开始发展的时候,用户量是非常少的,能接触到网络的人都是极其有限的,所以这个时候的互联网的架构师是这样的,只有一个服务器,一个数据库。



· 集群架构

紧接着,随着互联网的发展,用户量的增加(就是能玩的电脑的人多了),原来的这个单体的架构支撑不了这么大的用户访问量了,之前一个服务器,现在网站动不动就挂了,这个课怎么得了;大佬一咬牙,一跺脚,一个服务器不行,加多来几个服务器,就这么一不小心互联网的技术架构就变成了集群架构。



· 分布式架构

本来一切都这么安静发生着,好像宇宙大和谐的样子,用户感觉网速嗖嗖的,大佬们也感觉我们的想法真牛逼,简直可以改变世界。可是没想到,突然互联网迎来了前所未有的大发展,因为多年前有以为老人在中国的南海边画了一个圈。

这个时候各位技术大佬可是坐不住了,网站总是卡死可怎么办,以为增加的服务器根本解决不了问题,之前所有的业务都在同一个服务器中,非常复杂。这个时候就开始把之前耦合在一起的业务给拆分来了,比如:订单模块、用户模块等;这样互联网的技术架构也就演变。



· 微服务架构

本来分布式架构基本满足了现在互联网的发展,一切都这么安静的发生着,但是大厂的可是永远不那么安分,依然进行着创新,想要进一步提高效率,所以之前仅从业务单元进行拆分,还是满足不了大厂的需求,所以就对业务进行了更加细粒度的拆分,而且每一个服务都可以独立部署,这就就是我们现在所说的微服务。



· SpringCloud

好了,到这里互联网的技术架构演变基本就这么回事儿,最终实现微服务的技术就是我们接下来要介绍SpringCloud,要说SpringCloud是个啥,先买个关子,且听我慢慢道来。

SpringCloud是微服务架构的集大成者,将一系列优秀的组件进行了整合(大杂烩)已经在国内众多大中小型的公司有实际应用案例。许多公司的业务线全部拥抱SpringCloud,部分公司选择部分拥抱SpringCloud.

之所以说它是大杂烩,我们可以通过下面这张图来感受一下,因为它几乎就包揽了所有微服务架构所需的技术组件。这里再给大家透露一个小秘密,就是SpringCloud中的很多组件,都是一家电影公司开源的;你能想象吗?一家电影公司的技术实力都这么强,我们真的应该反思反思了。



SpringCloud中组件很多,并且还在扩充中,所以我们就介绍几个常用的组件:

  • Eureka:服务治理组件,包含服务注册与发现

  • Feign:声明式服务调用组件

  • Ribbon:客户端负载均衡的服务调用组件

  • Hystrix:容错管理组件,实现了熔断器

  • Zuul:网关组件,提供智能路由、访问过滤等功能

  • Config:分布式配置中心组件,用来统一配置文件


通过这么多核心的组件就可以轻松的搭建起一个个微服务系统架构,由于都是一个生态内的技术,所以很多技术都很兼容,极大的降低了开发的门开,所以现在基本是互联网公司的,都上微服务架构了,接下来我们就挨个来看下这几个组件吧。


· Eureka服务治理组件

Eureka是Netflix开发的服务治理框架,是一个基于REST的服务,主要用于服务间的注册发现、负载均衡等。



· Feign声明式服务调用组件

Feign是一个声明式的web服务客户端,一种负载均衡的HTTP客户端,使用Feign调用API就像调用本地方法一样,从避免了调用目标微服务时,需要不断的解析/封装json数据的繁琐,通常是和Ribbon一起实现。



· Ribbon负载均衡组件

Ribbon 是一个基于HTTP 和 TCP的 客服端负载均衡工具,包括Feign 提供的声明式服务调用也是基于该Ribbon 实现的。Ribbon默认提供很多种负载均衡算法,例如轮询、随机等等。我们也可以根据自己的需要自定义的负载均衡策略。



· Hystrix熔断限流组件

Hystrix这个组件就有点复杂了,因为它可能没有具体的实现某项功能,他主要的作用提高系统的高可用性和稳定性,在分布式系统环境下,服务间各种依赖,一个业务调用通常依赖多个基础服务是非常常见的。而Hystrix就起到了监控服务,以及服务容错的作用,如果处理问题不及时,就很可能出现雪崩,后果不堪设想。


· Zuul服务网关组件

Zuul是微服务API网关,也是用户访问的第一道关,所有用户的请求都会经过Zuul才能到达后端应用程序。Zuul提供了动态路由、监控、弹性负载和安全功能。Zuul底层利用各种filter实现如下功能:

  • 认证和安全,识别每个需要认证的资源,拒绝不符合要求的请求。

  • 性能监测,在服务边界追踪并统计数据,提供精确的生产视图。

  • 动态路由,根据需要将请求动态路由到后端集群。

  • 压力测试,逐渐增加对集群的流量以了解其性能。

  • 负载卸载,预先为每种类型的请求分配容量,当请求超过容量时自动丢弃。

  • 静态资源处理,直接在边界返回某些响应。


所以在网关这一层,除了核心的路由功能外,也是限流的一种手段。



· Config分布式配置中心组件

Config是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。工作中也经常和携程开源的Apllo一起使用。



好了,到这里就基本给大家介绍了SpringCloud的几个核心组件,如果我们把这些核心组件搞定后,就基本把微服务的核心知识搞定啦!


标签:
关于我们
公司简介
发展历程
青鸟荣誉
联系我们
加入我们
青鸟课程
BCVE视频特效课程
BCUI全链路UI设计
BCSP软件开发专业
BCNT网络工程师
启能职业教育基础课程
学习客户端下载
青鸟优师
青鸟云课堂
微信 公众号 咨询 顶部 首页
官方新版意见收集

*

官方新版意见收集

提交成功,感谢您的反馈。

我们会认真阅读和考虑每个用户的反馈。