负载机制概述

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 随着信息科技的不断发展,人们对互联网科技的认知不断更新、依赖性随之增强,互联网平台的实效性、稳定性也越发重要,本文将从通过Springcloud框架以生产者消费者模式讲解负载均衡机制。

所谓负载均衡最简单的理解就是将一些高频次操作分摊到多个操作单元处理,缓解单节点单元处理的压力,提升平台整体的健壮性。那么如何去实现负载均衡机制呢?这里既然提到负载均衡机制也不得不说一下负载均衡都有哪些算法模式,我们常用的算法模式包括:轮询策略、加权轮询策略、随机策略等等。

轮询策略:所谓轮询策略从字面上讲,就是我们将服务以多节点的形式进行注册或者管理,服务在被调用的时候,会按照次序依次被触发调用,每个服务被调用的概率是一样的。

加权轮询策略:所谓加权轮询策略,从字面上看,就是对轮询策略进行加权。那么为什么进行加权处理呢。平时我们对服务进行多节点部署,部署的时候我们会发现服务器和服务器之间从性能、吞吐量上讲还是有差距的,这些差距将会导致用户在请求某些操作中反应速率时好时坏,那么,我们就需要多多节点服务进行加权处理,对性能好的服务器权重高一些(被调用的概率会提升),对性能差的服务器权重低一些,以保证服务的稳定性。

随机策略:从上面的讲解,我们就不难理解随机策略了,既然随机,那就表示着服务的调用是随机的,没有次序的。

实现负载均衡机制的方式方法也有很多种,如传统的服务器集、nginx代理、kafka等等,接下来我将从Springcloud入手,讲解SpringCloud是如何实现负载均衡。

提到springcloud负载均衡,大家不难想到springcloud的注册中心eurekaeureka做为Springcloud的核心作用及其重要。它管理者平台所有的服务,包括服务注册、服务发现、服务心跳监控等等,同时它自身也可以通过简单的位置实现的负载。首先我们要关闭服务保护模式(当然这种方式不建议使用)

image.png

关闭保护模式后,配置服务的心跳检测时长

image.png

这样节点服务在异常中断后,会被自动从eureka中剔除,至于调用,我们可以直接通过服务名去调用已经注册到eureka中的服务。eureka会自动去触发相同服务名下的一个节点去执行任务。当然这种方式安全性不高,不建议使用,接下来我们主要通过生产者消费者模式去讲解springcloud的负载机制,那么什么可以作为生产者、什么可以作为消费者呢。一般我们可以将处理业务的服务作为生产者,面向用户交互的作为消费者。然后生产者我们可以多节点部署、消费者加入缓存机制(redis),熔断机制(hystrix)去调用生产者给用户提供数据服务。示意图如下:

image.png

从上图我们可以看出,与用户有直接交互的只有消费者device服务,消费者device服务再通过服务路由及eureka服务去寻找我们需要的业务操作进行反馈即可,至于熔断器的加入是为了防止单一请求出现异常导致消费者服务资源被长期占用,redis的加入是为了解决频繁的多次查询相同的数据等类似情况,可以直接从缓存中提取数据,降低服务器压力。

算法配置:

 springcloud默认算法配置为轮询策略,如果我们想切换成其他负载算法可以在配置文件中相应的配置。

image.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
11月前
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
1864 82
高效搭建Nacos:实现微服务的服务注册与配置中心
|
监控 应用服务中间件 Linux
轻松解决日志文件积压问题:掌握logrotate的技巧
轻松解决日志文件积压问题:掌握logrotate的技巧
1166 1
|
存储 监控 Java
线上OOM排查
本文介绍了JDK工具的使用方法及其应用场景。首先详细说明了`jps`、`jstack`、`jstat`和`jmap`等工具的基本用法及参数含义,帮助开发者实时监控Java进程的状态,诊断线程问题及内存使用情况。接着介绍了`jvisualvm.exe`和`MemoryAnalyzer.exe`两款内存诊断工具,展示了如何通过这些工具进行内存分析。最后,文章提供了在线上OOM故障排查的具体步骤,并给出了解决方案示例,以便开发者更好地理解和解决实际问题。
397 2
线上OOM排查
|
开发工具 git 开发者
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用合集之可以使用什么来查看查询的执行计划和性能信息
PolarDB是阿里云推出的一种云原生数据库服务,专为云设计,提供兼容MySQL、PostgreSQL的高性能、低成本、弹性可扩展的数据库解决方案,可以有效地管理和优化PolarDB实例,确保数据库服务的稳定、高效运行。以下是使用PolarDB产品的一些建议和最佳实践合集。
304 0
|
关系型数据库 MySQL Linux
error: Failed dependencies: libncurses.so.5()(64bit) is needed by mysql-community-client-8.0.36-1.el7.x86_64 libtinfo.so.5()(64bit) is needed by mysql-community-client-8.0.36-1.el7.x86_64 如何解决?
error: Failed dependencies: libncurses.so.5()(64bit) is needed by mysql-community-client-8.0.36-1.el7.x86_64 libtinfo.so.5()(64bit) is needed by mysql-community-client-8.0.36-1.el7.x86_64 如何解决?
2077 3
|
人工智能 自然语言处理 云计算
软件开发的最新趋势和未来展望
软件开发领域正处于快速发展的阶段,不断涌现出新的技术和方法。从人工智能、云计算到低代码开发,这些趋势都在推动着软件开发的革新和创新。未来,随着技术的不断进步,我们可以期待更多令人激动的变革和机遇。无论是开发者还是业务,都应该保持敏锐的洞察力,及时采纳新技术,以适应不断变化的软件开发领域。
749 1
软件开发的最新趋势和未来展望
|
消息中间件 Java
RabbitMQ中的Exchange是什么?它有哪些类型?
RabbitMQ中的Exchange是什么?它有哪些类型?
433 0
|
机器学习/深度学习 数据采集 数据可视化
用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化(四)
用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化
|
canal JSON NoSQL
Canal实现mysql数据与redis同步
Canal实现mysql数据与redis同步