运维高可用架构的 6 大常规方案

news2024/11/20 3:23:20

在介绍高可用架构的方案之前,先说一下什么是高可用架构,高可用架构应具备但不限于以下特征:

  1. 主从切换

    很好理解,当其中一台机器的服务宕机后,对于服务调用者来说,能够迅速的切换到其他可用服务,从服务升级为主服务,这种切换速度应当控制在秒级别(几秒钟)。

    当宕机的服务恢复之后,自动变为从服务,主从服务角色切换。主从切换一定是要付出代价的,所以当主服务恢复之后,也就不再替换现有的主服务。

  2. 负载均衡

    当服务的请求量比较高的时候,一台服务不能满足需求,这时候需要多台机器提供同样的服务,将所有请求分发到不同机器上。

    高可用架构中应该具有丰富的负载均衡策略和易调节负载的方式。

    甚至可以自动化智能调节,例如由于机器性能的原因,响应时间可能不一样,这时候可以向性能差的机器少一点分发量,保证各个机器响应时间的均衡。

  3. 易横向扩展

    当用户量越来越多,已有服务不能承载更多的用户的时候,便需要对服务进行扩展,扩展的方式最好是不触动原有服务,对于服务的调用者是透明的。

业务中接触到的6种高可用方案如下:

LVS+Keepalive

LVS的全称是linux visural server,即虚拟的linux机器,这个名称再恰当不过了。该方案的实现大概是这样的。

在多台linux机器上安装IPVS和keepalive,IPVS实际上是一个虚拟的linux服务,具有linux机器的部分功能,各个机器上分别启动一个Linux虚拟服务(虚拟机),这些linux虚拟服务(虚拟机)设置为同一个IP(称之为虚IP),这样在一个内网中就只能有一个linux虚拟服务能够抢占到这个虚拟IP。所有的请求都指向这一个虚IP,假如抢占到虚IP的机器挂了,这时候其他linux虚拟服务就会有其中一个抢占到虚IP,对于服务调用者来说,仍然可以访问到服务。keepalive的作用就是用来检测linux虚拟服务是否正常的。头条插入代码实在不方便,需要详细的配置方案的可以私信我。

NIGNX

Nginx本是一个反向代理服务器,但由于丰富的负载均衡策略,常常被用于客户端可真实的服务器之间,作为负载均衡的实现。

说一下什么是反向代理和正向代理:

正向代理:被代理的是客户端,比如通过XX代理访问国外的某些网站,实际上客户端没有权限访问国外的网站,客户端请求XX代理服务器,XX代理服务器访问国外网站,将国外网站返回的内容传给真正的用户。用户对于服务器是隐藏的,服务器并不知道真实的用户。

反向代理:被代理的是服务器,也就是客户端访问了一个所谓的服务器,服务器会将请求转发给后台真实的服务器,真实的服务器做出响应,通过代理服务器将结果返给客户端。服务器对于用户来说是隐藏的,用户不知道真实的服务器是哪个。

关于正向代理和反向代理,听起来比较绕,仔细理解,体会也不难明白到底是什么意思。

用nginx做实现服务的高可用,nginx本身可能成为单点,遇见的两种解决方案,一种是公司搭建自己的DNS,将请求解析到不同的NGINX,另一只是配合keepalive实现服务的存活检测。

Zookpeer

想必接触过分布式服务的应该对zookeeper都有所了解,最起码也听说过吧!zookeeper本身实现了高可用,zookeeper本身的高可用及原理在这儿不详细介绍,这里只介绍如果通过zookeeper管理服务。

zookeeper本身可以存储数据,服务启动之后可以向zookeeper注册,调用者可以到zookeeper上发现服务。提供服务的一直保持与zookeeper的通信,通过心跳证明服务的可用性。当服务挂掉之后,对应注册的接点会消失,这时候调用者就不能找到已经失效的服务。

关于zookeeper实现服务高可用,以后会详细介绍。

由客户端实现的高可用方案

以memcache 为例,客户端同时与好几个服务保持连接,按照一定的规则去调用服务,当服务挂掉之后,重新调整规则。当然,如果服务器不做主从备份的话,可能会造成部分数据丢失。感兴趣的可以关注以后发的关于对memache的详细介绍的文章。

服务之间通信实现高可用

这种经典的案例就是redis了,各个redis之间保持通信,当主服务挂掉之后从服务就会升为主服务。对于客户端来说几乎是透明的。

通过中间件实现高可用

这里暂时不详细介绍,说一下我了解的几个中间件:mycat 实现mysql高可用的中间件。

早期版本redis不支持集群,那时候redis的高可用也是基于中间件来做的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/495634.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

俩小伙一晚上写了个 AI 应用,月入两万??(文末附开发教程)

开发出一款能够与 AI 对话生成和编辑思维导图的工具,听起来似乎只能是一群专业的 AI 背景团队花费大量的时间和精力训练模型,打磨应用才能完成的事情。 但是,两名大学生却在一夜之间完成了,就像炼金术士将庸俗的材料转化成黄金一…

吃掉脂肪,狂减33斤!午餐菜单一次性公开!

一周高效减脂蔬菜沙拉|上班族学生党减脂备餐便当 😘我是4个月瘦30斤,减脂迫在眉睫,巨掉秤好吃的蔬菜沙拉来咯!肉类提前备好放冷冻,工作日只需10分钟搞定,做减脂早午晚餐都可以哦~ …

Mysql 中left join时 on、and、where区别

1、准备两张表student与class表 student class 2、left join on左连接 select * from student s left join class c on s.classId c.id 左表数据全部显示,关联到的右表数据显示,没有显示null 3、left join on ... and对左表student进行条件筛选 …

解决echarts图表随窗口宽度变化而改变图表的大小

文章目录 前言一、演示前后对比效果二、解決方法1.在代码结尾加上监听方法2.示例 三、总结扩展问题 前言 很多同学在使用echarts时遇到了浏览器窗口大小发生变化时,图表大小没有自适应窗口的宽度,下面我将对比演示随着窗口大小变化,echarts图…

(四)【平衡小车制作】陀螺仪MPU6050

一、硬件结构 1.什么是陀螺仪? 陀螺仪是用于测量或维护方位和角速度的设备。它是一个旋转的轮子或圆盘,其中旋转轴可以不受影响的设定在任何方向。当旋转发生时,根据角动量守恒定律,该轴的方向不受支架倾斜或旋转的影响。 2.MPU…

在Ubuntu18.04中安装uWebSockets库

目录 1.下载uWebSockets库2.下载uSockets3.安装openssl开发包4.编译首先说明这里使用的Ubuntu版本为18.04。 1.下载uWebSockets库 下载uWebSockets库有两种方式,一是终端,从Github中克隆uWebSockets库到Ubuntu本地文件夹,二是打开uWebSockets库下载链接自己下载到Windows,然…

Python实现将快手个人主页的视频进行无水印下载

前言 本文是该专栏的第26篇,后面会持续分享python的各种干货知识,值得关注。 笔者之前有详细介绍快手滑块验证码的识别方法(Python如何解决“快手滑块验证码”(4)),感兴趣的同学可往前翻阅查看。需要注意的是,滑块验证码的缺失距离需要根据你自己电脑的分辨率进行微调,…

STM32 i2c 驱动0.42寸OLED

STM32 i2c 驱动0.42寸OLED,这是个项目中使用的方案,调试也是比较费劲,主要是取字模和代码的匹配,下个篇章中详解一下取字模的过程,在这个方案中的使用。 本文使用的测试代码 STM32i2c驱动0.42寸OLED,SSD1…

体验 ChatGLM-6B

体验 ChatGLM-6B 1. 什么是 ChatGLM-6B2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 安装 ChatGLM-6B6. 启动 ChatGLM-6B7. 访问 ChatGLM-6B8. API部署9. 命令行部署10. 其他,修改使用显存大小 1. 什么是 ChatGLM-6B ChatGLM-6B 是一个开源的、支持中英双语…

面了一个4年经验的测试工程师,自动化都不会也要18k,我真是醉了...

在深圳这家金融公司也待了几年,被别人面试过也面试过别人,大大小小的事情也见识不少,今天又是团面的一天, 一百多个人都聚集在一起,因为公司最近在谈项目出来面试就2个人,无奈又被叫到面试房间。 整个过程…

音频焦点使用及原理

音频焦点使用及原理 本博客代码基于Android 10源码 为什么会有音频焦点这一概念? 在Android音频领域中,应用层所有的App播放音频,最终都是走到音频回播线程PlaybackThread中,如果多个App都走到同一个PlaybackThread中去&#xff0…

chat错误代码1020是什么原因导致的-解决chat错误代码1020

ChatGPT拒绝访问1020是什么原因 ChatGPT拒绝访问1020可能是因为服务器故障、网络连接问题或者人工智能模型正在进行训练或调整等原因所致。一般来说,ChatGPT会在进行维护、升级或训练时暂停服务,这可能导致用户在访问ChatGPT时遇到拒绝访问的情况。在该…

2023年淮阴工学院五年一贯制专转本财务管理基础考试大纲

2023年淮阴工学院五年一贯制专转本财务管理基础考试大纲 一、考核对象 本课程的考核对象为五年一贯制高职专转本财务管理专业入学考试普通在校生考生。 二、考核方式 本课程考核采用闭卷笔试的方式。 三、命题依据及原则 1、命题依据 本课程考核命题教材为靳磊编著&…

2023年会展服务研究报告

第一章 行业概况 会展行业是指一系列与会议、展览、展示相关的服务和经济活动的总称,是加强企业间交流、促进合作和推动经济发展的重要手段。该行业涉及广泛,包括会议和展览的组织、场地租赁和设计、活动策划和执行、展品运输和咨询服务等各个环节。随着…

每个人都可以用来提高生产力的「项目管理策略」

与以往相比,越来越多的公司为员工提供混合办公(办公室工作远程办公)和远程办公的选择,这实际是出于对效率的强需求。 尽管员工的工作时间增加了,但办公室等工作场所的工作效率正在以几十年来最快的速度下降。专家们列…

一起了解可以用手机操作显示的BOD水质检测仪

什么叫BOD(生化需氧量): BOD是指表示水中有机化合物等需氧物质含量的一个综合指标。当水中所含有机物与空气接触时,由于需氧微生物的作用而分解,使之无机化或气体化时所需消耗的氧量。 生化需氧量,以毫克/升…

震惊,为了学会泛型类竟做这种事?!

上一节,我们基本学会了Java泛型类的用法。 传送门:彻底弄懂Java的泛型 - 泛型类 这一节,我们转变一下风格,具体是什么风格呢,你马上就懂了。 宝子们,欢迎大家来到我们的泛型直播间,这一讲呢&a…

通过gulp+rollup从零到一搭建前端组件库

核心要点 通过 webpack 搭建运行环境通过 gulp 执行编译流程通过 rollup 编译组件代码编写 组件测试 组件打包 编译组件上传 npm 1、通过 webpack 搭建运行环境 这里主要是创建一个可以运行的测试的组件的环境,全局安装vue-cli脚手架,并初始化项目 v…

代码提交格式化工具---prettier的使用与配置

为什么要格式化代码 我们在合作写项目的时候,因为每个人的代码书写习惯以及编辑器的配置都不相同,这样就可能导致我们写的代码的格式都完全不一样,有的代码格式看起来也比较难以阅读,那么prettierd就由此产生了。 Prettier是一个…

题集-链表分割

链表分割_牛客题霸_牛客网 (nowcoder.com) 链表去做的话,可以分为带哨兵位和不带哨兵位两种,但是不带哨兵位会更麻烦一些,更容易出现空指针问题。 这里两种思路都是:将小于x的结点尾插到less链表中,将大于x的结点尾插到…