1. 首页
  2. >
  3. 技术专题
  4. >
  5. springcloud

Spring Cloud+Nginx架构的主要组件

以crazy-springcloud开发脚手架为例,一个Spring Cloud+Nginx应用的架构如图1-1所示


Spring Cloud+Nginx架构的主要组件

应用架构


Nginx作为反向代理服务器,代理内部Zuul网

关服务,通过Nginx自带的负载均衡算法实现客户端请求的代理转发、负载均衡等功能。

Zuul网关主要实现了微服务集群内部的请求路由、负载均衡、统一校验等功能。虽然在路由

服务和负载均衡方面,Zuul和Nginx的功能比较类似,但是Zuul是自身注册到Eureka/Nacos,通过

微服务的serviceID实现微服务提供者之间的路由和转发。Eureka、Nacos都是Spring Cloud技术体系中提供服务注册与发现的中间件。Eureka是Netflix开源的一款产品,提供了完整的服务注册和发现,是Spring Cloud“全家桶”中的核心组件之 一。

Nacos是阿里巴巴推出来的一个开源项目,也是一个服务注册与发现中间件,它用于完成服务

的动态注册、动态发现、服务管理,还兼具了配置管理的功能。Nacos提供了一组简单易用的特性

集,用于实现动态服务发现、服务配置、服务元数据及流量管理。

由于新版本的Eureka已经闭源,而阿里巴巴的Nacos除了具备Eureka注册中心功能外,还具备

Spring Cloud Config配置中心的功能,因此大大地降低了使用和维护的成本。另外,Nacos还具有

分组隔离功能,一套Nacos集群可以支撑多项目、多环境。综合上述多个原因,在实际的开发场景

中,推荐大家使用Nacos。但是,本书出于学习目的,注册中心和配置中心的内容还是介绍Eureka+Config组合,其实在原理上,Nacos和Eureka+Config组合是差不多的。

除了一系列基础设施中间件技术组件之外,微服务架构中大部分独立业务模型都是以服务提

供者的角色出现的。一般来说,系统可以按照各类业务模块进行细粒度的微服务拆分,例如秒杀

系统中的用户、商品等,每个业务模块拆分成一个微服务提供者Provider组件,作为独立应用程

序进行启动和执行。

在Spring Cloud生态中,微服务提供者Provider之间的远程调用是通过Feign+Ribbon+Hystrix组合来完成的:Feign用于完成RPC远程调用的代理封装;Ribbon用于在客户端完成各远程目标服务实例之间的负载均衡;Hystrix用于完成自动熔断降级等多个维度的RPC保护。

在Nginx+Spring Cloud架构中还存在一系列辅助中间件,包括日志记录、链路跟踪、应用监

控、JVM性能指标、物理资源监控等等。