从单服务设计看SLA保证

文章首发公众号:海天二路搬砖工

0. 引言

在微服务架构中,谈到SLA保证,我们更多是从宏观的角度来需求解决方案。比如,通过合理服务拆分来增加系统整体的可维护性;通过多实例部署来保证系统的灾备。但是单个服务是可靠性、性能其实也是保证系统SLA的重要一环。

本文将介绍提升单体服务SLA的一些设计原则/方法

1. 开关可控

开关可控是指通过在系统中加入一些控制开关,以便在运行时或配置时对某些功能进行开启或关闭,从而满足不同的业务需求。它实现了让系统的部分部分功能"可插拔"的效果,方便业务人员快速调整系统功能。

开关可控通常应用于以下场景:

  • 定制化需求处理:某一个定制化需要,可以通过在系统中加入一个开关进行开启或关闭,方便快速处理定制化需求并减少业务人员的开发成本。
  • 测试平稳迭代:通过开关独立控制系统的某个功能,将其独立于其他阶段进行功能测试和性能监控,这样就可以高效地完成系统的迭代和测试,同时降低了对整个系统的影响。
  • 功能开发:通过对功能进行开关控制,可以逐步向用户推导新功能和服务,以紧密配合用户的需求,同时避免过度或不必要地浪费预算和时间。

2. 故障隔离

微服务架构下的单个服务设计而言,故障隔离是指当服务的内部某些逻辑异常、或者外部依赖项发生故障时,服务能够将其隔离,使用替代服务,或者提供柔性服务。

在具体的实现过程中,编码时需要加入对各种错误和异常情况的处理逻辑。例如,当程序出现空指针引用、参数错误、数组越界等情况时,应该抛出相应的异常或记录错误信息,防止程序崩溃,对整个系统造成影响。

3. 必要缓存

现在系统,尤其是对性能有要求的系统,使用缓存可以提高系统的性能和可扩展性,是不可或缺的一部分。

缓存给系统带来的好处至少包含以下几方面:

  1. 提升响应速度: 缓存可以在不重新生成结果的情况下,直接返回已经计算出来的结果。这可以减少前端或后端服务的负载,提高系统性能和响应速度。
  2. 减少冗余计算: 当相同的计算或数据需要多次访问时,可以使用缓存来避免多次冗余计算。这可以减少CPU和I / O使用,并提高服务的响应速度。
  3. 提高可扩展性: 通过使用缓存,可以将计算和数据缓存到多个服务器上,这可以有效减轻单个服务器的负载,并使系统能够更好地扩展和容错。

4. 接口无状态

接口无状态(Stateless)是指在HTTP或其他协议通信中的请求、响应过程中,服务器不保存客户端请求的任何状态信息。接口无状态是保证系统SLA的基本要求。

当接口有状态时,就必须在服务器端维护状态信息。如果客户端在多个服务器之间切换,那么维护这些状态信息将会变得非常困难。而接口无状态允许服务器更方便地扩展,因为它可以在请求处理完毕后立即释放状态信息,从而在更多的服务器上分配负载并更易于水平扩展。

5. 单一职责

  • 在微服务架构中,一个微服务的职责是单一的
  • 在单个服务中,各个模块的职责是单一的。

在单个服务的设计中,服务中的每个模块负责不同的任务,从而使得系统更加容易维护、扩展和测试。

6. 异常监控

异常监控是指对单体服务运行过程中系统出现异常情况的监控、记录和及时响应的机制。

异常监控的具体实现可以采用以下几种方式:

  1. 设计良好的监控机制:需要在服务中添加针对各种异常情况的监控机制,以便能够及时发现和记录异常情况。例如,通过添加合适的日志记录功能、性能指标监测和警报机制、信号处理和控制反馈机制等。
  2. 应用异常监控工具:可以使用大量的开源或商用工具来监控单体服务,如Zabbix和Grafana等。这些工具可以帮助监控各种异常情况,并快速对异常进行反馈和处理。
  3. 应用自动化工具:可以使用自动化工具,如Puppet、Chef、Ansible等,来自动监控服务和异常情况,快速响应服务出现的问题,提升安全性和可靠性。

我的公众号

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vivado产生报告阅读分析-常规报告1

“ Report Utilization ” ( 使用率报告 ) 报告有助于从层级、用户定义的 Pblock 或 SLR 层面来分析含不同资源的设计的使用率。在流程中各步骤间使用 report_utilization Tcl 命令生成“ Utilization Report ”。 以下显示的报告详细信息适用于 Ultr…

Oracle(2-2)Oracle Net Architecture

文章目录 一、基础知识1、Oracle Net Connections Oracle网络连接2、C/S Application Connection C/S应用程序连接3、OSI Communication Layers OSI通信层4、Oracle Protocol Support Oracle协议支持5、B/S Application Connections B/S应用程序连接6、TwoTypes JDBC Drivers 两…

半导体电导率受哪些因素影响?如何正确测量半导体电导率?

半导体的电导率直接影响着半导体器件的工作状态,是半导体材料的重要参数。因此,半导体电导率的检测也是半导体设计和制造过程中的关键环节,确保半导体器件的性能、稳定性和可靠性。 什么是半导体电导率? 半导体电导率是指导电流在单位时间和…

保姆级Decimal.js的使用(如何解决js精度问题)

精度问题控制台图样 如果银行的业务你这样做,不知道要损失多少钱,这样是不行的,计算的不准确是需要背锅的,我们给后端去做吧,其实我们前端也是可以做的,引入Decimal.js 01.引入Decimal.js decimal.js是使用…

2023.11.14-hive之表操作练习和文件导入练习

目录 需求1.数据库基本操作 需求2. 默认分隔符案例 需求1.数据库基本操作 -- 1.创建数据库test_sql,cs1,cs2,cs3 create database test_sql; create database cs1; create database cs2; create database cs3; -- 2.1删除数据库cs2 drop database cs2; -- 2.2在cs3库中创建…

2023NewStarCTF

目录 一、阳光开朗大男孩 二、大怨种 三、2-分析 四、键盘侠 五、滴滴滴 六、Include? 七、medium_sql 八、POP Gadget 九、OtenkiGirl 一、阳光开朗大男孩 1.题目给出了secret.txt和flag.txt两个文件,secret.txt内容如下: 法治自由公正爱国…

MT8788核心板主要参数介绍_联发科MTK安卓核心板智能模块

MT8788核心板是一款功能强大的4G全网通安卓智能模块,具有超高性能和低功耗特点。该模块采用联发科AIOT芯片平台。 MT8788核心板搭载了12nm制程的四个Cortex-A73和四个Cortex-A53处理器,最高主频可达2.0GHZ。它还配备了4GB64GB(2GB16GB、3GB32GB)的内存&a…

新生儿母乳过敏:原因、科普和注意事项

引言: 母乳过敏是一种较为罕见但可能令家长担忧的现象。母亲通常认为母乳是新生儿最安全、最适合的食物,然而有时候宝宝可能对母乳中的某些成分产生过敏反应。本文将科普新生儿母乳过敏的原因,提供相关信息,并为父母和监护人提供…

JTS: 20 InteriorPoint 内部中心点

文章目录 版本代码 版本 org.locationtech.jts:jts-core:1.19.0 链接: github 代码 package pers.stu.algorithm;import org.locationtech.jts.algorithm.InteriorPoint; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.GeometryFactory; i…

OpenCV踩坑笔记使用笔记入门笔记整合SpringBoot笔记大全

springboot开启摄像头抓拍照片并上传实现&问题记录 NotAllowedErrot: 请求的媒体源不能使用,以下情况会返回该错误: 当前页面内容不安全,没有使用HTTPS没有通过用户授权NotFoundError: 没有找到指定的媒体通道NoReadableError: 访问硬件设备出错Ov…

CTFSHOW -SQL 注入

重新来做一遍 争取不看wp web171 基本联合注入 拿到题目我们已经知道了是sql注入 所以我们可以直接开始 第一题 不会难道哪里去 所以我们直接进行注入即可 1 and 12-- 1 and 11-- 实现闭合 -1unionselect1,2,3--%2b 查看字段数-1unionselect1,database(),3--%2b 查看数据…

初始MySQL(三)(合计函数,分组函数,字符串相关函数,数字相关函数,时间日期函数,加密函数,流程控制函数)

目录 合计/统计函数 count 返回行的总数 sum 合计函数 - avg group by 字符串相关函数 数学相关函数 时间日期相关函数 加密函数 流程控制函数 合计/统计函数 count 返回行的总数 Select count(*) | count (列名) from tablename [WHERE where_definition] #演…

答题猜歌闯关流量主小程序开发

视频互动答题是一款微信小程序游戏,以视频互动的形式进行答题,内容涵盖广泛,包括天文地理、生活百科、历史文化、综艺娱乐、数理知识等。 用户可以通过答题获得红包兑换余额,并有机会赢得豪华奖品。 设计风格:设计风格…

数据结构与算法之美学习笔记:18 | 散列表(上):Word文档中的单词拼写检查功能是如何实现的?

目录 前言散列思想散列函数散列冲突解答开篇 前言 本节课程思维导图: Word 的单词拼写检查功能,虽然很小但却非常实用。你有没有想过,这个功能是如何实现的呢?其实啊,一点儿都不难。只要你学完今天的内容,…

EXCEL——计算数据分散程度的相关函数

一、PERCENTIL函数 1.函数介绍 通常用来返回数据集给定百分点上的值。 2.函数解读 函数公式: PERCENTILE(数据, 百分点) 参数释义: 数据(必填):待处理的数组或数据区域。 百分点(必填)&…

mapboxGL中的底图切换

概述 底图切换,这么简单的功能还要写一篇文章?值得的,为什么这么说呢?因为mapboxGL的矢量底图有上百个,不同的底图用的样式、图层的名称、图层的内容、字体库、图标库都不一样,尤其是当地图上已经叠加了很…

2022年06月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 Python中 print(“八进制{: o}”.format(12)) 正确的输出结果是?( ) A: 八进制:O B: 八进制:O14 C: 八进制14O D: 八进制14 答案:D 字符串的format()格式。 第2题 下列的程…

计算机组成原理之概述

概述 计组主要讲的是计算机的硬件实现方式。 机器字长 比如8080处理器,如果想处理16位数的整数运算,就需要执行两次。 可见,机器字长会影响到数据的处理速度。 计算机硬件的基本组成 早期的冯诺依曼机 冯诺依曼提出了“存储程序”的概念&…

汽车FMCW毫米波雷达信号处理流程(推荐---基础详细---清楚的讲解了雷达的过程---强烈推荐)

毫米波雷达在进行多目标检测时,TX发射一个Chirp,在不同距离下RX会接收到多个反射Chirp信号(仅以单个chirp为例)。 雷达通过接收不同物体的发射信号,并转为IF信号,利用傅里叶变换将产生一个具有不同的分离峰…

SQL-----STUDENT

【学生信息表】 【宿舍信息表】 【宿舍分配表】 为了相互关联,我们需要在表中添加外键。在宿舍分配表中添加用于关联学生信息表的外键 student_id,以及用于关联宿舍信息表的外键 dormitory_id; sql代码 -- 创建学生信息表 CREATE TABLE st…