Spring Cloud学习笔记

Spring Cloud学习笔记

单体应用存在的问题

  • 随着业务的发展,开发变得越来越复杂。

  • 修改、新增某个功能,需要对整个系统进行测试、重新部署。

  • 一个模块出现问题,很可能导致整个系统崩溃。

  • 多个开发团队同时对数据进行管理,容易产生安全漏洞。

  • 各个模块使用同一种技术进行开发,各个模块很难根据实际情况选择更合适的技术框架,局限性很大。

  • 模块内容过于复杂,如果员工离职,可能需要很长时间才能完成工作交接。

 

 

分布式、集群

集群:一台服务器无法负荷高并发的数据访问量,那么就设置十台服务器一起分担压力,十台不行就设置一百台(物理层面)。很多人干同一件事情,来分摊压力。

分布式:将一个复杂问题拆分成若干个简单的小问题,将一个大型的项目架构拆分成若干个微服务来协同完成。(软件设计层面)。将一个庞大的工作拆分成若干个小步骤,分别由不同的人完成这些小步骤,最终将所有的结果进行整合实现大的需求。

微服务的优点

  1. 各个服务的开发、测试、部署都相互独立,比如用户服务就可以拆分作为一个单独的服务,而它的开发也不用依赖于其他服务,如果用户量很大,我们可以很容易的对其进行负载。

  2. 当一个新需求出现时,特别是在-一个庞大的项目系统中,你得去考虑各方的问题,兼容性、影响度等等,而使用微服务则可以直接跳过这些废时又烧脑的环节。

  3. 使用微服务将项目进行拆分之后,各服务之间就消除了诸多限制,只需要保证对外提供的接口正常可用,至于使用什么语言、什么框架通通不用关心。

微服务的不足

  1. 上面我们提到微服务的振分是基于业务的,不是我们随心所欲,想怎么拆就怎么拆的,那么问题来了,由谁来拆,怎么拆?这就给团队协作沟通带来了很多挑战。

  2. 当服务调用方需要使用某服务的接口时,首先需要找到该服务的提供方,通常在-一个大公司中,这种场景是跨部门的,沟通成本可想而知。同时,如果服务的提供方需要对某个接口进行修改,也得和各个服务调用方进行沟通。

  3. 由于各个服务相互独立,它们的数据也是独立的,这就会带来一一个问题,当调用多个服务接口来进行操作时,如何保证各个服务的数据一致性,这既是问题,也是难点。⭐

微服务框架

dubbo,motan,thrift,grpc,spring cloud

核心组件

服务治理:Eureka

服务通信:Ribbon,Feign

服务网关:Zuul

服务容错:Hystrix

服务配置:Config

服务监控:Actuator

服务跟踪:Zipkin

 

服务治理

服务治理的核心又三部分组成:服务提供者服务消费者注册中心

在分布式系统架构中,每个微服务在启动时,将自己的信息存储在注册中心,叫做服务注册

服务消费者从注册中心获取服务提供者的网络信息,通过该信息调用服务,叫做服务发现

Spring Cloud 的服务治理使用 Eureka 来实现,Eureka 是 Netflix 开源的基于 REST 的服务治理解决方案,Spring Cloud 集成了 Eureka,提供服务注册和服务发现的功能,可以和基于 Spring Boot 搭建的微服务应用轻松完成整合,开箱即用,Spring Cloud Eureka。

 

Spring Cloud Eureka

  • Eureka Server:注册中心

  • Eureka Client:所有要进行注册的微服务通过 Eureka Client 连接到 Eureka Server,完成注册。

 

 

RestTemplate的使用

什么是 RestTemplate?

RestTemplate 是 Spring 框架提供的基于 REST 的服务组件,底层是对 HTTP 请求及响应进行了封装,提供了很多访问 RETS 服务的方法,可以简化代码开发。

 

 

服务网关

 

Spring Cloud 集成了 Zuul 组件,实现服务网关。

Zuul

Zuul 是 Netflix 提供的一个开源的 API 网关服务器,是客户端和网站后端所有请求的中间层,对外开放一个 API,将所有请求导入统一的入口,屏蔽了服务端的具体实现逻辑,Zuul 可以实现反向代理的功能,在网关内部实现动态路由、身份认证、IP 过滤、数据监控等。

Ribbon 负载均衡

Spring Cloud Ribbon 是一个负载均衡解决方案,Ribbon 是 Netflix 发布的负载均衡器,Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的,是一个用于对 HTTP 请求进行控制的负载均衡客户端。

在注册中心对 Ribbon 进行注册之后,Ribbon 就可以基于某种负载均衡算法,如轮询、随机、加权轮询、加权随机等自动帮助服务消费者调用接口,开发者也可以根据具体需求自定义 Ribbon 负载均衡算法。

实际开发中,Spring Cloud Ribbon 需要结合 Spring Cloud Eureka 来使用,Eureka Server 提供所有可以调用的服务提供者列表,Ribbon 基于特定的负载均衡算法从这些服务提供者中选择要调用的具体实例。

 

Zull和Ribbon的区别

Zull是对外部请求做负载均衡和鉴权验证的,ribbon是用在微服务之间做负载均衡的,功能类似,角色不同。

Feign

什么是 Feign?

与 Ribbon 一样,Feign 也是由 Netflix 提供的,Feign 是一个声明式、模版化的 Web Service 客户端,它简化了开发者编写 Web 服务客户端的操作,开发者可以通过简单的接口和注解来调用 HTTP API,Spring Cloud Feign,它整合了 Ribbon 和 Hystrix,具有可插拔、基于注解、负载均衡、服务熔断等一系列便捷功能。

相比较于 Ribbon + RestTemplate 的方式,Feign 大大简化了代码的开发,Feign 支持多种注解,包括 Feign 注解、JAX-RS 注解、Spring MVC 注解等,Spring Cloud 对 Feign进行了优化,整合了 Ribbon 和 Eureka,从而让 Feign 的使用更加方便。

Ribbon 和 Feign 的区别

Ribbon 是一个通用的 HTTP 客户端工具,Feign 是基于 Ribbon 实现的。

Feign 的特点

1、Feign 是一个声明式的 Web Service 客户端。

2、支持 Feign 注解、Spring MVC 注解、JAX-RS 注解。

3、Feign 基于 Ribbon 实现,使用起来更加简单。

4、Feign 集成了 Hystrix,具备服务熔断的功能。

Hystrix 容错机制

在不改变各个微服务调用关系的前提下,针对错误情况进行预先处理。

设计原则

1、服务隔离机制

2、服务降级机制

3、熔断机制

4、提供实时的监控和报警功能

5、提供实时的配置修改功能

Hystrix 数据监控需要结合 Spring Boot Actuator 来使用,Actuator 提供了对服务的健康监控、数据统计,可以通过 hystrix.stream 节点获取监控的请求数据,提供了可视化的监控界面。

Spring Cloud 配置中心

Spring Cloud Config,通过服务端可以为多个客户端提供配置服务。Spring Cloud Config 可以将配置文件存储在本地,也可以将配置文件存储在远程 Git 仓库,创建 Config Server,通过它管理所有的配置文件。

服务跟踪

Spring Cloud Zipkin

Zipkin 是一个可以采集并且跟踪分布式系统中请求数据的组件,让开发者可以更加直观的监控到请求在各个微服务所耗费的时间等,Zipkin:Zipkin Server、Zipkin Client。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值