【分布式系统】聊聊服务调度

news2024/9/24 11:32:54

什么是服务治理

对于程序员来说的话,把功能按照一定的设计进行开发上线之后,其实并不够,在未来的时间内,其实还需要做好功能的维护工作,而维护项目的成本远远高于开发出一个软件的成本。
在这里插入图片描述

  • 对于功能开发起来期来说,如果前期的设计、编码等比较规范,且易维护,那么后期系统在迭代的时候维护成本就可以减少一定的成本。
    对于互联网项目来说,一般提供的服务都是 7 * 24 不间断的服务。功能开发和功能维护变得更模糊。
    操作系统的本质是解决软件治理问题,也就是多个软件可以在同一个物理上进行资源的操作和共享。
    而服务治理的目标就是,除了软件治理外,如何保证这些如软件能够24小时不间断的提供服务。
    在这里插入图片描述
    主要的话就是如下几点
  • 服务的变更:发布、升级与版本管理
  • 服务的健康状况:日志、监控与报警
  • 服务的故障处理:故障域与故障域案、故障排查与根本分析、过载保护与容量规划。

而从服务端整体架构看的话其实就是
在这里插入图片描述
服务治理通常来说包含 服务调度和流量调度。

服务关键程度和服务的依赖关系

针对于服务关键程度和服务的依赖关系,这个需要对业务系统的整体有把控力,了解主要业务流程涉及哪些系统,然后可以通过将重要的服务进行梳理出来,比如订单、支付、库存等业务可以进行抽取出来。以及对应的依赖管理,上下游关系,只有这样才可以一目了然了解各个系统之间的数据流程。
尽可能降低服务之间的依赖,可以提高系统的稳定性,因为依赖越多,复杂度越高,如果一个下游系统,全部上游系统都依赖,出现问题的话,那么就会出现多米诺骨牌效应。
并且要避免出现服务依赖成环。微服务是服务依赖最优解的上限,而服务依赖的下限是千万不要有依赖环
依赖环可能出现递归事故或者在项目发布的时候,没有办法解决兼容问题。而解决服务依赖环的关键就是依赖倒置原则,一般通过引入一个三方服务,比如消息队列等。
所以通过获取到服务整体依赖关系,就可以清楚知道如果出现故障可能影响的范围。

服务状态和生命周期的管理

对于一个分布式系统来说,服务实例可能会下线或者新增。所以我们需要一个注册中心来进行管理服务的状态。

  • 整个系统有多少服务
  • 服务的版本是什么
  • 服务的实例数是多少
  • 服务的状态,运行中,故障中,启动中,停机中等

服务生命周期包含如下

  • Provision,供应一个新的服务
  • Ready,启动成功
  • Run,服务健康检查
  • Update,升级中
  • Rollback,回滚中
  • Scale,伸缩中。
  • Destory,销毁中
  • Failed,失败

整个架构的版本管理

对于大多数公司来说,其实只是维护的一个系统的版本,而并没有维护一个上下游之间 系统的版本,比如订单系统是1.0 对应支付系统的 2.0,而如果没有整个架构的版本管理,如果出现上线问题后,那么只能通过一起回滚。而这种是非常麻烦和浪费人力。

所以最好的方式就是在系统的版本之上维护一个上一层的版本管理,这样就可以通过管理一个大的版本来进行维护系统。当出现问题时,就不需要只回滚来一部分机器而到另一部分没有回滚出现兼容问题,从而引发BUG。

资源/服务调度

服务和资源调度类似,主要有如下

  • 服务状态的维持和拟合
  • 服务的弹性伸缩和故障迁移
  • 作业和应用调度
  • 作业工作流编排
  • 服务编排

小结

本篇主要介绍了服务治理和分布式系统服务调度相关的点,主要包括服务关键程度和服务依赖关系,服务的状态和服务生命周期管理以及整个架构版本的管理。

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

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

相关文章

ensp-GVRP服务

ensp-GVRP服务 日期:6-26 📎GVRP实验.zip📎GVRP服务.docx

无涯教程-Perl - 环境配置

在开始编写Perl程序之前,让我们了解如何设置我们的Perl环境。 您的系统更有可能安装了perl。只需尝试在$提示符下给出以下命令- $perl -v 如果您的计算机上安装了perl,那么您将收到以下消息: This is perl 5, version 16, subversion 2 (v5.16.2) b…

谁更适合搭配甜点显卡?i7-13700KF、锐龙7 7800X3D对比:游戏相当 生产力Intel强了50%...

一、前言:如果搭配2000元甜点显卡 i7-13700KF和锐龙7 7800X3D谁更有性价比? 现在AMD最受欢迎的处理器无疑是拥有96MB三级缓存的锐龙7 7800X3D,这是一颗专为游戏而生的处理器。 Intel这边,i7-13700KF以略高于i5-13600K的售价&#…

python:卡尔曼和贝叶斯滤波器

本文分享一个Filerpy的说明文档和代码示例文档,有关于 Python 中的卡尔曼和贝叶斯滤波器。该方法可以应用于气象遥感等领域。 说明文档:https://filterpy.readthedocs.io/en/latest/kalman/KalmanFilter.html 参考代码链接:https://nbviewer.…

conda install 和pip install有什么区别?

本篇为分享贴,截图部分选自知乎,部分选自csdn,文字内容是结合自己实践进行总结。 环境引用的包在哪? 首先,一条命令: python -m site 这条命令可以定位引用的包在哪里 ,当然也可以自己设置默认…

K8s中的Secret

Secret作用:加密数据存在etcd里面,让pod容器以挂载Volume方式进行访问。场景:凭据

基于Open3D的点云处理14-法向量

法向量 计算法向量的接口函数: Open3d使用estimate_normals函数来计算法向量。其参数设置Open3d提供了3中参数搜索的方法(所有计算的法向量模长为1): open3d.geometry.KDTreeSearchParamKNN(knn20) # 计…

win11设置管理员权限

【win11家庭版怎么找管理员权限,怎么找gpedit】 win11家庭版怎么找管理员权限,怎么找gpedit_哔哩哔哩_bilibili echo offpushd "%~dp0"dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum …

【雕爷学编程】Arduino动手做(185)---WK104 亚克力机械爪

收了一套 亚克力机械爪的散件,准备尝试组装一下。 All parts 2 left claw 2 right claw 4 half claw 2 plate fixer 双通铜柱 Double copper column 铜柱 copper pillar 螺母 Nut 螺丝 Screw Prepare several parts of the picture and start assembling the l…

小蜗语音1.2 文本生成字幕 文本生成语音配音

1、文本转字幕,可以把一部小说直接生成字幕 2、文本转语音,可以直接把一部小说或者字幕文件生成语音,并且新生成的语音和字幕一一对应 链接:https://pan.baidu.com/s/1X_rY4Wjkk2cWqsFcu4JSHA?pwdvtpm 提取码:vtpm

S7-200SMART与ET200SP远程IO模块进行PROFINET通信的具体方法

S7-200SMART与ET200SP远程IO模块进行PROFINET通信的具体方法 使用前提: 只有标准型且固件版本为V2.4及以上的S7-200 SMART CPU才支持 PROFINET 控制器功能。 S7-200 SMART 作 PROFINET 控制器最多可带8个 IO 设备(例如:远程 IO、阀岛、变频器、伺服和机器人等)。 本例中以 …

剑指offer15.二进制中1的个数

第一种方法是将n不断与2的i次方相与,如果n的2的i次方的位置上是1,相与的结果就是1,res,最后返回res即可。 public class Solution {// you need to treat n as an unsigned valuepublic int hammingWeight(int n) {int res 0;fo…

Jmeter录制HTTPS脚本

Jmeter录制HTTPS脚本 文章目录 添加“HTTP代理服务器”设置浏览器代理证书导入存在问题 添加“HTTP代理服务器” 设置浏览器代理 保持端口一致 证书导入 点击一下启动让jmeter自动生成证书,放在bin目录下: 打开jmeter的SSL管理器选择刚刚生成的证书&…

Rabbitmq的消息确认

配置文件 spring:rabbitmq:publisher-confirm-type: correlated #开启确认回调publisher-returns: true #开启返回回调listener:simple:acknowledge-mode: manual #设置手动接受消息消息从生产者到交换机 无论消息是否到交换机ConfirmCallback都会触发。 Resourceprivate Rabb…

LeetCode--剑指Offer75(3)

目录 题目描述:剑指 Offer 20. 表示数值的字符串(中等)题目接口解题思路什么是有限状态自动机?如何使用? 代码 PS: 题目描述:剑指 Offer 20. 表示数值的字符串(中等) 请实现一个函数…

支付宝蜻蜓设备abs调试

蜻蜓设备系统日志调试 1、蜻蜓设备进入开发者模式 长按关键键直到屏幕上出现设置按钮,点击设置按钮,选择关于本机,找到系统版本,连续点击8次,选择进入调试模式 2、找到小程序容器,连续点击8次&#xff0…

自己实现Linux 的 cp指令

cp指令 Linux的cp指令就是复制文件: cp: 拷贝(cp 拷贝的文件 要拷贝到的地址或文件),cp b.c test.c 将b.c拷成test.c的一个新文件 Linux 系统初识_mjmmm的博客-CSDN博客 实现思路 打开源文件读文件内容到缓冲区创建新文件将读到的文件内容全部写入新文…

Java-对对象的拷贝、抽象类和接口的区别、Object类、对象的比较方法和内部类

目录 1.Clonable接口和深拷贝 2.抽象类和接口的区别 3.Object类 4.获取对象的信息 5.对象比较方法equals 6.内部类 1.Clonable接口和深拷贝 Java 中内置了一些很有用的接口, Clonable 就是其中之一,Object 类中存在一个 clone 方法, 调用这个方法可以创建一个对…

人工智能学习07--pytorch23--目标检测:Deformable-DETR训练自己的数据集

参考 https://blog.csdn.net/qq_44808827/article/details/125326909https://blog.csdn.net/dystsp/article/details/125949720?utm_mediumdistribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-125949720-blog-125326909.235^v38^pc_releva…

react中hooks的理解与使用

一、作用 我们知道react组件有两种写法一种是类组件,另一种是函数组件。而函数组件是无状态组件,如果我们要想改变组件中的状态就无法实现了。为此,在react16.8版本后官方推出hooks,用于函数组件更改状态。 二、常用API 1、use…