时至今日,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的几个核心组件,如果我们把这些核心组件搞定后,就基本把微服务的核心知识搞定啦!
(责任编辑:中博IT教育)