微服务解决方案1:SpringCloud Netflix

本文深入解析SpringBoot+SpringCloudNetflix微服务架构解决方案,涵盖服务注册中心、消费者、熔断器、配置中心等核心组件原理及实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一套微服务架构解决方案:Spring Boot + Spring Cloud Netflix

练手项目 https://github.com/xu1211/springclouddemo

Netflix 没人维护了,所以现在市面上都不怎么用 【哭】 , 大家了解下就行

Netflix是一家美国做视频的网站,因为访问量非常的大,所以把整体的系统往微服务上迁移。Netflix的微服务大规模的应用,在技术上毫无保留的把一整套微服务架构核心技术栈开源了出来,叫做Netflix OSS

对Netflix OSS做了一系列的封装,就变成了Spring Cloud Netflix

Spring Cloud到现在为止不只有Netflix提供的方案可以集成,另外两套比较成熟方案是

  1. Spring Boot + Dubbo + Zookeeper
  2. Spring Boot + Spring Cloud Alibaba

目录

Spring Cloud 概念

架构图:

1. 服务注册中心

2. 服务提供者

3. 服务消费者

4. 熔断器

5. 熔断器仪表盘监控

6. 路由网关

7. 配置中心

8. 服务链路追踪

Spring Cloud开发

注解概览


Spring Cloud 概念

springcloud开发很简单,基本功能都封装好了,重要的是概念的理解,思维转变

springcloud提供了全套的分布式系统解决方案(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)

架构图:

右侧是 User,Service1,Service2 表示微服务应用,注册在 Eureka 注册中心,相互通过 Fein Client 调用

左侧 Mobile,Admin,APP 表示外部应用,通过 Zuul 网关,由Ribbon做负载均衡,Hystrix做监控保护,到 Eureka 注册中心拿到服务名和路径 访问具体的微服务

目前市场上主流的一套微服务架构解决方案:Spring Boot + Spring Cloud Netflix


1. 服务注册中心

Eureka Server

中小型项目微服务能达到上百,大型能上千上万, 还要部署集群,总不能一个个配置地址相互调用, 用一个服务注册中心 专门管理服务,记录这些服务的信息

主要用来解决如何管理多个微服务,以及多个微服务之间如何通信的问题. 在springcloud 里就叫做 eureka server, 通过它把就可以把微服务注册起来,以供将来调用。

Eureka 这个单词是 “找到啦” 的意思

启动后访问  http://{server:ip}:8761 可以查看有哪些服务注册

2. 服务提供者

一个项目肯定得有服务提供者,一般都是增删改查操作,处理一些后台逻辑

把服务提供者注册在 Eureka Server服务注册中心

3. 服务消费者

Ribbon + restTemplate  Feign

简单理解为前端页面,或者其他系统,需要从服务提供者获取服务的都算是服务消费者

  • Ribbon   是一个负载均衡客户端,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例
  • Feign   是对Ribbon的封装,用起来更简单方便

4. 熔断器

Hystrix

服务消费者是通过http请求服务提供者, 若有大量的请求涌入一个有出错的服务,Servlet 容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,导致 服务雪崩

熔断器作用是 当对特定的服务的调用的不可用达到一个阀值(Hystrix 是 5 秒 20 次) 熔断器将会被打开,不让调用了,直接返回一个固定值。

5. 熔断器仪表盘监控

Hystrix Dashboard

监控熔断器触发状态的

6. 路由网关

zuul

主要提供两个功能:

  1. 统一访问功能(微服务多了之后ip端口都有一大堆,可以通过配置路径统一访问)
  2. 请求过滤功能 (和servlet过滤器功能一样,  权限校验、流量控制这些都可以通过过滤器实现,请求转也是通过过滤器实现的)

7. 配置中心

Spring Cloud Config

一个微服务集群部署多了以后,配置文件都放在工程里要改的话会很麻烦,  通过配置中心把配置信息都放在git库里, 运行时从git库统一获取

8. 服务链路追踪

zipkin

服务越多,调用关系越复杂, 通过链路追踪能看出服务调用链


Spring Cloud开发

springcloud 由多个 springboot 项目组成, 而这些 springboot 之间又是围绕一个共同目的而存在的。 
所以为了便于组织这些 springboot 项目,一般会 采用 maven 父子-聚合 项目的方式来开发,创建一个依赖管理项目作为父项目

注解概览

  • Eureka注册中心

@EnableEurekaServer   表明自己是一个 Eureka Server

  • 注册到注册中心

@EnableEurekaClient    注册到服务中心。表明自己是一个 Eureka Client(只适用于Eureka注册中心)

@EnableDiscoveryClient   注册到服务中心。表明自己是一个客户端,该注解是 Spring Cloud 提供的原生注解(可以是其他注册中心 例如Zookeeper、Consul等)

  • Feign

@EnableFeignClients       开启 Feign 功能

@FeignClient("服务名")     指定调用哪个服务。

  • Hystrix熔断器

@EnableHystrixDashboard 表明启用Hystrix Dashboard功能

  • Zuul网关

@EnableZuulProxy

  • 配置中心

@EnableConfigServer 表明启用配置服务器功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值