微服务架构-微服务治理基础

目录

一、服务治理由来

1.1 概述

1.2 微服务治理的几个维度

1.2.1 服务定义和SLA

1.2.2 服务注册中心

1.2.3 服务生命周期管理

1.2.4 服务通信和链路治理

1.2.5 服务授权和通信安全

二、服务治理的目标与愿景

2.1 服务治理的愿景

2.2 服务治理的目标

2.2.1 标准化

2.2.2 平台化

2.2.3 智能化

2.2.4 一站式

2.2.5 总结

2.3 服务治理的基础和底线

三、服务治理的工作范畴

3.1 服务治理的实际工作

3.2 服务治理的工作范围

3.2.1 系统可见

3.2.2 系统可控

3.2.3 系统可追溯

3.2.4 系统可量化、可预测

3.2.5 立足全局、业务优先

四、服务治理闭环体系


一、服务治理由来

1.1 概述

在单体服务时代并没有服务治理的概念,随着单个服务慢慢演变和拆分为众多微服务组成的系统,服务提供者与服务使用者之间如果没有明确的契约和规范,开发、测试和运维过程中会带来很大的沟通成本。之前线上服务遇到过的一个真实的例子,服务代码中调用地理围栏服务,这块代码平常没什么变更,大家关注也不多,线上服务调用地理围栏突然发生故障,服务使用方联系之前负责对接的人,发现早已离职,并且这个服务多年没有修改,当前处于无人维护状态,导致出问题时无法及时响应的悲剧。

1.2 微服务治理的几个维度

服务治理就是解决服务提供者和服务使用者之间的链路通信与治理,主要包括如下几个维度的目标。

1.2.1 服务定义和SLA

服务定义是向外界说明当前服务提供者具体提供了哪些功能和能力,具体通过什么方式来使用服务,以及服务对外承诺的服务SLA。

提示:服务等级协议(Service-LevelAgreement),是服务提供方和服务使用方之间的协议,定义了服务品质的承诺 以及达不到承诺的具体惩罚措施,服务品质主要包括QPS、各分位耗时等。

1.2.2 服务注册中心

服务使用者使用服务之前需要先知道服务提供方具体在什么地方,服务注册中心负责管理各个服务的地址信息,用于服务使用者查询。

1.2.3 服务生命周期管理

服务生命周期管理用于对服务部署的整个生命周期进行管理,包含服务的上线和下线,服务的扩容和缩容等。

1.2.4 服务通信和链路治理

服务通信和链路治理是服务提供方和使用方约定,为了达成SLA而采用的一些治理手段,比如超时重试、限流降级等。

1.2.5 服务授权和通信安全

通信安全严格来说也是属于链路通信和治理的范畴,只不过由于安全特别重要,可以将这块单独提出来进行讲述。

二、服务治理的目标与愿景

2.1 服务治理的愿景

服务治理整体愿景是打造可见、可控、可追溯、可预测的全系统视图,立足全局,业务优先。可见即所得,可见皆可控。虽然服务治理的立场是系统全局,但是服务治理必须做到深入业务需求,解决业务实际问题。服务治理的开展和推广是讲究策略的,需要和业务方明确服务治理的长期收益。除此以外,服务治理要能溯源系统问题,提升定位效率。服务治理还要有能力提前发现全系统中的异常,如场景单点故障、全系统容量瓶颈和不合理的容量冗余等。

2.2 服务治理的目标

服务治理的目标是提供标准化、平台化、智能化的一站式服务治理设施,支持业务的稳定运行和高效迭代。服务治理的范围贯穿服务的全生命周期。

2.2.1 标准化

标准化是服务治理一切工作的基石,服务治理在规范、工具、框架和平台各个层次上都要有统一的标准。

2.2.2 平台化

平台化是擎天柱,标准如果完全依靠人来执行,不仅效率非常低,也很难保证不会出现各种遗漏以及落地和标准不一致的现象,将标准进行平台化落地,可以保证服务治理标准可以高效、稳定执行。

2.2.3 智能化

智能化是服务治理的理想状态,属于远景目标和仰望的星空,期望所有的服务治理工作能逐步通过自动化和智能化方式推进。

2.2.4 一站式

一站式,强调服务治理的闭环体系,所有通用的可感、可控、可追溯治理均能通过闭环高效完成。

2.2.5 总结

服务治理基础设施的呈现形式多样,具体包括规范、工具、框架和平台等。

从方法论的角度看,服务治理是把复杂的、重复的事情简单化,把简单的事情标准化,标准的事情流程化,流程的事情自动化。

2.3 服务治理的基础和底线

稳定是服务治理的基础和底线,易用才能提高用户效率,服务治理一般只关注稳定性和效率,对性能关注比较少,具体来说稳定运行,提高业务的稳定性,是服务治理的第一目标;高效迭代,提高业务的迭代效率,是服务治理的另一目标。

三、服务治理的工作范畴

3.1 服务治理的实际工作

基于上述服务治理目标,服务治理的实际工作包括两部分:一站式的服务治理平台、普适性的服务开发框架。其中一站式的服务治理平台作为服务治理输出的根据地,最重要的作用是服务治理规范的固化。

服务治理规范从经验到wiki、从wiki到平台的发展趋势也表明了服务治理规范是业务方和服务治理团队之间一个非常重要的桥梁。普适性的服务开发框架,是服务治理团队非常重要的一个抓手,平台能做的事情是有限的,而广泛使用的开发框架则可以完成更多的事情。普适性笔者认为是服务开发框架最重要的优点,如何和业务方结合、提升服务开发框架的普适性非常重要。

3.2 服务治理的工作范围

从内容上看,服务治理具体工作范围可以概括如下。

3.2.1 系统可见

主要是服务治理平台的工作,具体包含服务静态描述,比如服务基本信息、服务等级、全局依赖拓扑、路由关系、IDL(SDK)、权限、SLA、流量控制策略等,服务治理平台需要有能力帮助我们梳理依赖层级、判定服务等级。

服务实时拓扑,具体包括全局流量拓扑、报表审计等,服务治理平台需要有能力展示实时流量状态,基于场景定位线上问题。

3.2.2 系统可控

打通服务治理平台和服务开发框架,为其他平台输出能力,具体包括路由切换、降级预案等。

3.2.3 系统可追溯

将问题现场进行录制,如流量录制、日志录制等方式,然后使用相应的跟踪和追溯系统,对典型场景下的常见问题进行回放和溯源,做到“一次录制,多次回放”。基于追溯和回放机制,可以解决根因定位、场景分析等问题。

3.2.4 系统可量化、可预测

系统可预测,是指预测业务接下来一段时间的行为,比如流量、容量、安全等,同时通过各种工具和平台检测系统的潜在风险。以容量规划为例,需要能够预见和判断业务接下来一段时间的增加趋势和运营活动,判断可能的流量峰值以及对系统容量的影响;接下来通过全链路压测、单系统压测等方式探测系统可能的容量风险。

3.2.5 立足全局、业务优先

服务治理的目的是解决业务的稳定性和效率问题,必须完全聚焦业务,从业务出发,重点解决业务当前的痛点问题。

四、服务治理闭环体系

服务治理本质上来说是解决微服务化后产生的一系列挑战,比如效率治理、稳定性治理、效果治理、性能成本治理等。这些治理举措一般作用于设计开发阶段,我们可以称之为“正向治理”,在服务上线后,可以基于运行时的各种数据,进行综合治理和反馈,从而构成一个治理闭环,如下图所示:

在上述服务治理闭环中,通过多维度的度量数据收集,结合静态的服务元数据信息,构成一个完整的服务治理数据集,然后基于这些数据进行综合度量和分析。根据分析结果会产生相应的控制和管控措施,分别从线上和线下两个维度进行综合治理,同时将治理结果负向反馈回来,作为进一步治理的输入。

后续内容会围绕这个治理闭环展开,对服务治理进行深入剖析。

好了,本次内容就分享到这,欢迎大家关注《微服务架构》专栏,后续会继续输出相关内容文章。如果有帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

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

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

相关文章

墨天轮《2023年中国数据库行业年度分析报告》正式发布!

为明晰发展脉络,把握未来趋势,墨天轮于5月29日正式发布 《2023年中国数据库年度行业分析报告》。该报告由墨天轮联合业界专家学者共同编写,共330页,旨在梳理和洞察中国数据库行业的发展趋势、技术创新、市场动态以及面临的挑战&am…

Java-集合基础

集合 一、含义 集合是Java API所提供的一系列类,可以用于动态存放多个对象 (集合只能存对象)集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。(集合中不能放基本数据类型,但可以…

Source Insight 变量高亮快捷键F8 失效

SourceInsight4.0,使用的时候,高亮快捷键F8突然不能用了 查半天发现,是用了“有道翻译”的原因,热键冲突,如下,把下面的热键换一个就好了

中国商业化重水需求依赖进口满足 国内行业发展前景广阔

中国商业化重水需求依赖进口满足 国内行业发展前景广阔 重水又称氘化水或氘水,是水的一种,常温常压下为无色无味液体,它的摩尔质量比一般水要重。普通的水是由两个只具有质子的氢原子和一个氧16原子所组成,但在重水分子内的两个氢…

mac安装allure及allure:command not fund问题解决

一、下载 下载连接:https://github.com/allure-framework/allure2/releases 选择任意压缩包进行下载 二、解压 解压后是一个文件夹 三、打开终端 # bash终端 vim ~/.bash_profile # zsh终端 vim ~/.zshrc四、配置环境变量 export PATH/usr/bin:/bin:/usr/sb…

Flink系列二:DataStream API中的Source,Transformation,Sink详解(^_^)

在上面篇文章中已经对flink进行了简单的介绍以及了解了Flink API 层级划分,这一章内容我们主要介绍DataStream API 流程图解: 一、DataStream API Source Flink 在流处理和批处理上的 source 大概有 4 类: (1)基于本…

Python网页处理与爬虫实战:使用Requests库进行网页数据抓取

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

【前端】Vuex笔记(超详细!!)

最近花了两周时间,完完全全的跟着Vuex官方的视频学完了Vuex并且详详细细的做了笔记,其中总结部分是我对于整个视频课程的总结,视频部分是跟着视频做的笔记,如果总结部分有不懂的话,直接去视频部分查找对应的笔记即可&a…

ios:文本框默认的copy、past改成中文复制粘贴

问题 ios 开发&#xff0c;对于输入框的一些默认文案展示&#xff0c;如复制粘贴是英文的&#xff0c;那么如何改为中文的呢 解决 按照路径找到这个文件 ios/项目/Info.plist&#xff0c;增加 <key>CFBundleAllowMixedLocalizations</key> <true/> <…

Keras深度学习框架实战(1):图像分类识别

1、绪论 1.1 图像分类的定义 图像分类是计算机视觉领域中的一项基本任务&#xff0c;其定义是将输入图像分配给预定义类别中的一个或多个。具体来说&#xff0c;图像分类系统接受一个图像作为输入&#xff0c;并输出一个或多个类别标签&#xff0c;这些标签描述了图像中的内容…

第十三届蓝桥杯物联网试题(国赛)

还是那句话不能掉以轻心&#xff0c;全力以赴吧&#xff0c;遇事不要慌&#xff0c;该做的都做了&#xff0c;冷静沉稳的处理&#xff0c;看看配置&#xff0c;看看代码&#xff0c;还是不行就重启&#xff0c;都没问题换个板子 下面对比较复杂的部分的处理过程进行展现&#x…

git报错prohibited by Gerrit: not permitted: update

git push报错&#xff1a; Push to refs/for/[branch] to create a review, or get Push rights to update the branch. Contact an administrator to fix the permissions (prohibited by Gerrit: not permitted: update)原因&#xff1a; 使用Gerrit代码审核时&#xff0c;本…

CentOS 7基础操作02_优化Linux操作系统中的服务

1、实验环境 公司在文件服务器中新安装了CentOS系统.由于默认启动的服务程序较多&#xff0c;系统运行缓慢。现需要对系绞服务进行适当优化&#xff0c;减少一些不必要的自启动服务.并设置系统在开机后直接进入字符模式。 2、需求描述 根据实际使用需求对CentOS 7操作系统中的…

postgressql——PGPROC XLOG(6)

PGPROC相关结构 在共享内存中,核心数据结构围绕PROC_HDR指向的两个list:PROC和XACT PRCO内存连续,维护链表结构方便申请释放,对应每个后台服务进程,PID为OS标识、PGPROCNO为内部标识 XACT内存连续,维护快照需要的xmin和xid,XACT从PROC拆出来是为了更高的cache line命中…

IBM开源Granite Code模型,多尺寸可选,支持多种代码任务,性能媲美 CodeLlama

前言 近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;在代码领域展现出惊人的潜力&#xff0c;为软件开发流程带来了革命性的改变。代码 LLM 不仅能够生成高质量代码&#xff0c;还能帮助程序员修复错误、解释代码、编写文档等等&#xff0c;极大地提高了软件开发…

【kubernetes】探索k8s集群的存储卷、pvc和pv

目录 一、emptyDir存储卷 1.1 特点 1.2 用途 1.3部署 二、hostPath存储卷 2.1部署 2.1.1在 node01 节点上创建挂载目录 2.1.2在 node02 节点上创建挂载目录 2.1.3创建 Pod 资源 2.1.4访问测试 2.2 特点 2.3 用途 三、nfs共享存储卷 3.1特点 3.2用途 3.3部署 …

Web程序设计-实验05 DOM与BOM编程

题目 【实验主题】 影视网站后台影视记录管理页设计 【实验任务】 1、浏览并分析多个网站后台的列表页面、编辑页面&#xff08;详见参考资源&#xff0c;建议自行搜索更多后台页面&#xff09;的主要元素构成和版面设计&#xff0c;借鉴并构思预期效果。 2、新建 index.h…

正则匹配优化:匹配排除多个字符串的其他字符串

(^entity|^with|...)\w优化 (?!entity|with|has|index|associations|input)\w(?!): 匹配排除项 效果 继续优化 匹配会过滤掉带有关键字的字段&#xff0c;在过滤的时候是可以加上尾部结束匹配符的 效果&#xff1a;

thinkphp6 自定义的查询构造器类

前景需求&#xff1a;在查询的 时候我们经常会有一些通用的&#xff0c;查询条件&#xff0c;但是又不想每次都填写一遍条件&#xff0c;这个时候就需要重写查询类&#xff08;Query&#xff09; 我目前使用的thinkphp版本是6.1 首先自定义CustomQuery类继承于Query <?p…

【C语言回顾】预处理

前言1. 简单概要2. 预处理命令讲解结语 上期回顾: 【C语言回顾】编译和链接 个人主页&#xff1a;C_GUIQU 归属专栏&#xff1a;【C语言学习】 前言 各位小伙伴大家好&#xff01;上期小编给大家讲解了C语言中的编译和链接&#xff0c;接下来我们讲解一下预处理&#xff01; …