掌握这几个秘籍,你的分布式系统绝对牛掰!!!

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 掌握这几个秘籍,你的分布式系统绝对牛掰!!!

前言

根据CAP理论,分布式环境系统需要尽量保证C 一致性 A 可用性 P 容错性。分布式系统,从本质上来讲,就是通过一些低廉的硬件来实现系统更好的吞吐、性能以及可用性。分布式系统,有一套通用的系统设计策略。大致上分为:

  • 心跳检测
  • 高可用保障
  • 容错处理
  • 重试机制
  • 负载均衡

心跳检测

在分布式系统环境中,对于能够检测众多节点的活性是很有必要的。只有当节点存活,才可以进行执行对应的业务任务。传统来说,解决该类问题,一般都是通过心跳检测手段。如同医生通过仪器探测病人心跳一样,去判定服务器众节点的存活。

image.png

客户端,在请求对应的服务节点前,需要经过心跳检测服务器,进行路由转发到对应的节点处理。

心跳检测服务器,检测众多分发或者路由节点的活性,如果存活正常,路由才会转发到该节点。

传统心跳检测,存在一定的局限性

  • 如果节点没有挂,但是ping超时,导致,判定死亡,就会造成很大的资源损失
  • 心跳检测如果出现问题,则也会造成很大的影响

总结来说,心跳检测收到心跳正常,是正常的,但是心跳检测收不到心跳,也不代表节点存在异常,判定死亡

优化心跳检测策略

  1. 周期检测心跳机制
  2. 累计失效检测机制

高可用设计

系统高可用性的常用设计模式包括三种:主备、互备、集群模式

  1. 主备模式
    主备模式,就是Active Standby,当主机宕机时,备机接管主机一切工作,待主机正常之后,会通过两种方式自动(热备)、手动(冷备),恢复主机的工作
    数据库高可用方案中,一般都是MS主从模式 Matser-Slave

2.image.png

3.互备模式
互备模式,指的是多台主机同时运行各自的服务工作且互相检测,同步。在数据库高可用部分,采用互备,主要是MM模式(Multi-Master)。多个master都具有read - write 能力,需根据时间戳或者版本,最终合并。分布式版本管理系统git就可以理解为MM模式

4.集群模式
集群模式,指的是,多个节点同时运行服务,可以通过类似心跳服务器这种分担服务请求。

容错性

容错性,指系统对于错误、异常的包容能力,为了更好地提供用户的舒适度或者说客户端的响应合理,做出来的一些系统的让步处理。

容错,并非容忍错误。以分布式环境下的,缓存举例说明:

一个查询业务,先通过缓存查询,如果缓存没有,再去数据库查询。如果没有查询得到,可能的原因包括以下几个方面:

  • 数据库连接未知异常
  • 数据库真的没有

那么,用户可以进行间隔一定时间发起重试,可以一定程度友好的,解决问题

另外,如果出现缓存失效的情况下,恶意攻击,调用查询接口,查询缓存中不存在的key,导致大量流量进入DB,导致DB崩溃。

为了解决这个问题,我们可以考虑,如果在高频、短周期内,当客户查询不存在的key时,我们可以对当前key进行赋值,直接返回。响应给系统用户,截断恶意操作。

负载均衡

分布式系统环境,通过负载均衡,达到资源的合理分配利用

image.png

负载均衡,分为硬件和软件。硬件常见的设备F5,软件的LVS 、Nginx等等

以nginx为例,常见的负载均衡策略如下

  • 轮询
  • 最少连接
  • IP地址Hash
  • 基于权重的负载均衡
  • 自定义实现负载均衡算法
    <end>
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
6月前
|
Web App开发 存储 自然语言处理
中高级前端大厂面试秘籍,为你保驾护航金三银四,直通大厂(上)(一)
中高级前端大厂面试秘籍,为你保驾护航金三银四,直通大厂(上)(一)
110 1
|
3月前
|
缓存 网络协议 算法
这些年背过的面试题——网络和操作系统基础篇
本文是技术人面试系列网络和操作系统基础篇,面试中关于网络和操作系统基础都需要了解哪些内容?一文带你详细了解,欢迎收藏!
|
3月前
|
消息中间件 缓存 负载均衡
这些年背过的面试题——分布式篇
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
|
6月前
|
缓存 JavaScript 前端开发
中高级前端大厂面试秘籍,为你保驾护航金三银四,直通大厂(上)(二)
中高级前端大厂面试秘籍,为你保驾护航金三银四,直通大厂(上)(二)
全到哭!从面试到架构,阿里大佬用五部分就把高并发编程讲清楚了
不知道大家最近去面试过没有?有去面试过的小伙伴应该会知道现在互联网企业招聘对于“高并发”这块的考察可以说是越来越注重了。基本上你简历上有高并发相关经验,就能成为企业优先考虑的候选人。其原因在于,企业真正需要的是能独立解决问题的人才。每年面试找工作的人很多,技术水平也是高低不一,而并发编程却一直是让大家很头疼的事情,很多人总觉得自己似乎掌握了并发编程的知识,但实际在面试或者工作中,都会被它吊打虐哭。
137 0
|
运维 算法 架构师
又爆新作!阿里甩出架构师进阶必备神仙笔记,底层知识全梳理
据有关数据表明,目前Java程序员这个群体的数量不减反增,行业内的竞争也是越来越严重。在同一时间入行的人,经过一段时间的学习后,差距就会显示出来。其实出现这样的原因大多数都是因为学习的方向出了问题。大多数人学Java刚开始只是为了快速就业,但是在工作了之后却没有一个好的学习路线,那些其实很重要的东西只是因为工作上用不到从而忽略掉了,慢慢的才发现自己与别人之间已经存在很大差距了!
|
设计模式 Java Spring
从理论走向实战!阿里高工熬夜整理出的Spring源码速成笔记太香了
金三银四也快要结束了,不知道大家面试的时候有没有被问到过Spring相关问题(循环依赖、事务、生命周期、传播特性、IOC、AOP、设计模式、源码)?反正我这个小学弟前段时间就来私信我说自己面试挂在了Spring这一块。(原谅我不厚道地笑了,如下图所示)
|
存储 算法
课外闲谈9.谈一谈分治法和在线处理等常见方法
将整个问题分解成若干个小问题后再分而治之。如果觉得得到的子问题的规模还是太大,那就继续分解,直到得到的子问题规模达到要求。必要时逐步合并这些子问题的解,从而得到问题的解。
89 0
|
消息中间件 存储 SQL
有趣!用太极拳讲分布式理论,真舒服!
有趣!用太极拳讲分布式理论,真舒服!
135 0
有趣!用太极拳讲分布式理论,真舒服!
|
自然语言处理 JavaScript 前端开发
看了涡流大佬的面试文章的总结(框架通识, 看代码说结果)
看了涡流大佬的面试文章的总结(框架通识, 看代码说结果)