持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第 28 天,点击查看活动详情
1 前言
目前在分布式系统中,springcloud 是一个很好的分布式系统解决方案,在此基础之上就可以了解 springcloud alibaba 的解决方案。在本文中将介绍 springcloud 的核心组件以及其作用。
2 springcloud 的核心组件
springcloud 的核心组件如下图所示,主要分为服务注册与发现(Eureka)、负载均衡(Ribbon)、断路器(Hystrix)、Api 网关(Zuul)以及 配置中心(Config)。
2.1 服务注册与发现
在应用启动时, Eureka 客户端可以向服务端注册自己的服务信息,同时将服务端的服务列表缓存到本地,客户端和服务端需要定时的心跳交互,以便进行服务的更新或者下线,目前可以作为服务注册中心的组件很多,常见的有 zk、redis、console、nacos 等。
2.2 负载均衡
Ribbon 是一个基于 Http 和 Tcp 的客户端负载均衡工具,主要提供客户侧的软件负载均衡算法。可以很方便的将本地调转换成远程调用,屏蔽了远程服务的一些细节信息。
2.3 断路保护
Hystrix 主要就是保护系统的可用性,不会因为单个服务的不可用而导致雪崩效应影响至整个系统都不可用。在分布式系统中,由于网络或者自身的原因,并不能保证服务的 100% 可用,如果单个服务出现问题,调用这个服务的线程就会出现阻塞,如果此时有大量的请求涌入,就会导致 web 容器的线程资源耗尽,导致整个系统的服务瘫痪。
2.4 api 网关
api 网关就是起到路由和负载均衡的作用, zuul 和 nginx 类似的,都有反向代理的功能。在微服务架构中,后端服务往往不会直接开放给调用端,而是通过 api 网关进行转发请求,从而路由到相关的服务上,当添加 api 网关后,在调用端和服务提供方之间创建了一个应用,就可以对调用方进行权限的控制。
2.5 配置中心
配置中心就是为了统一进行各个项目和系统的配置文件,这样就可以避免在服务扩展时频繁的修改配置,从而达到快速部署的问题。目前的配置中心有 nacos、 apollo 等。
3 总结
在本文中,主要讲述了 springcloud 的核心组件的作用。分布式系统中涉及的问题和知识点还有很多,这里是一个概要的讲述,在后续文章中,将继续分享分布式相关的内容。