SpringCloud Netflix和SpringCloud Alibaba核心组件

2024-06-20 00:20

本文主要是介绍SpringCloud Netflix和SpringCloud Alibaba核心组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.SpringCloud Netflix组件

1.1 Netflix Eureka-服务注册发现

        Eureka 是一种用于服务发现 的组件,它是一个基于 REST 的服务,用于定位运行在 AWS 弹性计算云(EC2)中的中间层服务,以便它们可以相互通讯。

注册: 每个服务都向Eureka登记自己提供服务的元数据,包括服务的ip地址、端口号、版本号、通信协议等。

发现:eureka注册的服务之间调用不需要指定服务地址,而是通过服务名向注册中心咨询,并获取所有服务实例清单(缓存到本地),然后实现服务的请求访问。

1.2 Netflix Ribbon-客户端负载均衡

负载均衡分为服务器端负载均衡和客户端负载均衡

服务器端负载均衡:Nginx、F5等等,请求到达服务器之后由这些负载均衡器根据⼀定的算法将请求路由到⽬标服务器处理。

客户端负载均衡:Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡器,服务间发起请求的时候,基于Ribbon做负载均衡,从⼀个服务的多台机器中选择⼀台 (被调 用方的服务地址有多个),Ribbon也是通过发起http请求,来进行的调用,只不过是通过调用服务名的地址来实现的。Ribbon不用去具体请求服务实例的ip地址或域名了,但是每调用一个接口都还要手动去发起Http请求。

负载均衡策略参考:SpringCoud Ribbon配置和实现原理-CSDN博客

1.2.1 Feign远程调用组件

Feign是Netflix开发的⼀个轻量级RESTful的HTTP服务客户端,以Java接⼝注解的⽅式调⽤Http请求,类似于dubbo,服务消费者拿到服务提供者的接⼝,然后像调用本地接⼝⽅法⼀样去调用,实际发出的是远程的请求。

本质:封装了Http调用流程,更符合⾯向接口化的编程习惯,类似于Dubbo的服务调用,基于代理实现。

Feign = RestTemplate+Ribbon+Hystrix

 1.3 Netflix Hystrix-熔断器

 Hystrix 是一个用于处理分布式系统的延迟和容错的库,用于隔离访问远程服务,防止出现级联失败,解决了服务雪崩问题,从而提高系统的弹性。

Hystrix解决雪崩问题的手段:

服务熔断:当扇出链路的某个微服务不可⽤或者响应时间太⻓时,熔断该节点微服务的调⽤,进⾏服务的降级,快速返回错误的响应信息。当检测到该节点微服务调⽤响应正常后,恢复调⽤链路。

熔断的几种处理方式:

@HystrixCommand(commandProperties = {// 隔离策略,这个配置项默认是THREAD(线程),另外一个选项是SEMAPHORE(信号量),在信号量策略下无法使用超时时间设置。@HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_STRATEGY, value = "THREAD"),// 单实例vivo接口最大并发请求数150,多处的直接拒绝@HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_SEMAPHORE_MAX_CONCURRENT_REQUESTS, value = "1"),// 线程超时时间,10秒@HystrixProperty(name = HystrixPropertiesManager.EXECUTION_ISOLATION_THREAD_TIMEOUT_IN_MILLISECONDS, value = "100"),//错误百分比条件,达到熔断器最小请求数后错误率达到百分之多少后打开熔断器@HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_ERROR_THRESHOLD_PERCENTAGE, value = "10"),//断容器最小请求数,达到这个值过后才开始计算是否打开熔断器@HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_REQUEST_VOLUME_THRESHOLD, value = "3"),// 默认5秒; 熔断器打开后多少秒后 熔断状态变成半熔断状态(对该微服务进行一次请求尝试,不成功则状态改成熔断,成功则关闭熔断器@HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_SLEEP_WINDOW_IN_MILLISECONDS, value = "5000")})

服务降级:当接口不可用、超时、错误率高于阈值时自动调用fallbackMethod指定的方法处理请求,称为服务降级,通过在@HystrixCommand注解上配置fallbackMethod参数指定降级后调用的方法,fallbackMethod方法可以直接返回错误,或者提供带缓存的高性能的实现等,如果fallbackMethod也不可用,会发生熔断报错返回。

服务限流:流量控制就是限制业务访问的 qps(每秒处理请求数量),避免服务因流量突增而故障.比如有一个微服务能承受的最大 qps 是 2,也就是每秒钟最多处理两个请求,但是现在有一百个请求涌过来了,那他不得被达成筛子了,但是 sentinel 会根据这个 qps 的限制,去处理请求然后释放(这就像是有大量的水要涌入的时候,会先经过一个漏斗,通过这个漏斗,将水的流量限制住),这个时候,就可以有效的避免出现故障(超出的请求会被拦截,默认会报错,但也可以配置成 排队等待、预热)。
线程隔离:Hystrix为每个服务调配一个小的线程池,如果线程池已满,调用这个服务将被立即拒绝

1.4 Netflix Zuul-服务网关

Zuul 是一种提供动态路由、监控、弹性、安全等功能的边缘服务。从2.2.10.RELEASE之后不再升级,SpringCloud改用Gateway作为网关。

1.4.1 GateWay核心

路由(route):最基础的部分,由⼀个ID、一个目标URL、⼀系列的断⾔(匹配条件判断)和 Filter过滤器(精细化控制)组成。如果断言为true,则匹配该路由。

断⾔(predicates):匹配Http请求中的所有内容(包括请求头、请求参数等)

过滤器(filter)请求之前或者之后执⾏业务逻辑。

Zuul、Gateway、Nginx的区别_zuul、gateway和nginx有什么区别-CSDN博客

1.5 Spring Cloud Config-配置中心

Spring Cloud Config 是一个使得分布式系统中的外部配置管理变得简单的系统,它是静态配置,配合springcloud bus实现动态配置

Spring Cloud Config 配置中心_spring-cloud-config-server-CSDN博客

2 SpringCloud Alibaba组件

2.1 .Nacos-服务注册发现和配置中心

一个更易于构建云原生应用的动态服务注册和发现、配置中心和服务管理平台。nacos-discovery 服务注册发现,nacos-config配置中心

2.2 Dubbo RPC--服务间通信

一种高性能的Java RPC框架,用于服务间通信。是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

2.3 Sentinel-熔断器

面向微服务架构的高可用流量控制组件,流量控制,服务熔断,服务限流。

2.4 RocketMQ

一种开源的分布式消息系统,消息队列

2.5 Seata

一种分布式事务解决方案。

3.Cloud Netfilx和Cloud alibaba对比

参考:

https://zhuanlan.zhihu.com/p/364330271?utm_id=0

SpringCloudAlibaba常用组件_springcloudalibaba组件-CSDN博客

这篇关于SpringCloud Netflix和SpringCloud Alibaba核心组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1076567

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis