一、SpringCloud是什么
1、 Spring Cloud是一系列框架的有序集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署。
2、 Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包
与其他架构的区别:
单体架构特点?
简单方便,高度耦合,扩展性差,适合小型项目。例如: 学生管理系统
分布式架构特点?
松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝
微服务:一种良好的分布式架构方案
优点: 拆分粒度更小、服务更独立、耦合度更低缺点:架构非常复杂,运维、监控、部署难度提高
二、相关组件
API Gateway(网关):
在微服务架构中,网关(API Gateway)扮演着重要的角色,它实现了面向客户端(可能是用户界面UI、外部系统、或其他服务)的请求统一入口。网关的主要作用包括:
请求路由:网关根据请求的内容,如URL路径或请求参数,将请求路由到正确的微服务。这隐藏了微服务架构中服务分布的复杂性,并且当服务实例的位置变化时,客户端无需知道。
负载均衡:网关可以在多个服务实例之间分配请求,以实现负载均衡,提高系统的可用性和容错性。
认证和授权:网关可以在转发请求到后端服务之前进行用户认证和权限校验,确保只有合法的请求可以访问后端服务。
限流和熔断:网关可实现对请求的限流,保护后端服务不被过多的请求压垮。同时,通过熔断机制,可以在后端服务不可用时提供降级服务。
聚合服务:网关可以将多个服务的调用结果聚合后一次性返回给客户端,减少客户端与服务器之间的交互次数。
API适配与转换:网关可以处理客户端与服务之间的API不兼容问题。它可以转换协议、路径、请求和响应格式,使得前后端能够顺畅交互。
协议转换:网关可以将外部的HTTP/HTTPS请求转换为内部服务可能使用的其他通信协议,如WebSocket、RPC等。
跨域请求处理:网关可以处理跨域资源共享(CORS)问题,允许不同域的前端应用调用后端服务。
日志记录与监控:网关可以记录请求和响应的详细信息,用于日志记录、问题诊断、以及监控服务的使用情况。
安全加强:网关可以提供一些安全增强功能,如SSL终端、请求签名的验证等。
缓存:网关可以对常见的请求进行缓存,减少对后端服务的调用,从而提高系统的响应速度。
总结来说,网关提供了一个抽象层,用于隔离、保护、管理和维护微服务系统中的服务。它简化了客户端的实现,并为微服务架构提供了更好的安全性、可伸缩性和可维护性。常见的API网关实现包括Netflix Zuul、Spring Cloud Gateway、Kong、APIGee等。
Nacos :
一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos主要功能有以下两种:
配置中心
注册中心
1.1 配置中心
配置中心是一种集中化管理配置的服务。
主要作用如下:
集中管理配置信息:配置中心将不同服务的配置信息集中进行管理,实现了配置信息的集中管理。
动态更新配置:通过操作界面或者API进行动态配置更新,消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置信息共享:将配置集中在配置中心中,不同的服务实例可以共享一套配置信息
配置信息安全:配置中心可以对配置信息提供安全管理、权限管理等管理功能。
配置快照:支持配置信息版本管理、历史记录等管理功能。
1.2 注册中心
注册中心是微服务架构中的一个重要组件,用于实现不同服务实例的注册与发现
主要作用如下:
服务注册:服务实例启动时,将自身信息注册到注册中心,包括服务名称、地址、端口等。
服务发现:消费者向注册中心查询服务,并获取服务实例信息来访问服务。
服务健康检查:注册中心定期检查服务实例健康状况,过滤不健康实例。
服务路由:提供服务的路由和负载均衡功能。
服务监控:统计服务调用次数、时长等,用于监控服务状态
服务更新:当服务实例信息变更时,向注册中心发送更新信息通知。
通过注册中心,服务提供者和消费者只需与注册中心交互即可,从而实现服务的注册与发现,降低了服务间的耦合度。
1. Nacos 部署方式
Nacos有三种部署方式;
单机模式:将注册中心、配置中心等功能集成在一个进程内,全部部署在一台机器上,适用于测试和单机试用。
集群模式:多个Nacos服务器实例组成一个集群。这些实例通过相互通信和协调工作,共同提供服务注册、配置管理和服务发现等功能。在集群模式下,所有实例共享相同的数据,数据变更会自动部署到所有的实例中,客户端可以随机选择任意一个实例进行服务的注册与发现。适用于生产环境,确保高可用。
多集群模式:多集群模式是为了满足在不同的区域或网络中进行部署和扩展的需求,在多集群模式中,可以选择不同的Nacos实例组成多个相互独立的集群,每个集群可以拥有自己独立的配置和注册中心,并可以跨集群进行服务注册与发现。多集群模式适用于分布式系统的多区域部署,并可以使用不同的网络和存储设施。每个集群具有独立的数据和配置,但可以通过自定义的同步机制在集群之间共享数据。
三、OpenFeign
OpenFeign是一个轻量级的HTTP客户端开发工具,它是Netflix开源的项目之一,用于简化HTTP请求的调用和处理。
OpenFeign的设计目标是使API调用更加简单和优雅。它提供了一组注解和接口,通过声明方式定义HTTP请求,然后自动生成实现代码。这样开发人员只需要编写接口定义和相关的注解,就可以实现对远程服务的调用。
OpenFeign支持多种HTTP请求方式,包括GET、POST、PUT、DELETE等。它还支持请求参数的传递、请求头的设置、请求体的序列化等功能。开发人员可以通过注解的方式将这些信息和请求方法关联起来。
除了基本的请求调用,OpenFeign还提供了一些高级功能,如请求重试、请求日志、熔断降级等。这些功能都可以通过配置进行开启和定制。
在Spring Cloud中,OpenFeign被广泛应用于微服务架构中的服务间通信。通过使用OpenFeign,开发人员可以在不依赖于具体实现的情况下,方便地对其他服务进行调用和交互,提高了开发效率和系统的可维护性。
服务的治理,利用RestTemplate实现了服务的远程调用。但是远程调用的代码太复杂了,所以我们可以通过OpenFeign来进行简化开发
相关实践明天更新!