盘点一下分布式模式下的服务治理和监控优化方案

news2024/11/15 23:04:25

什么是服务治理?

相信每一个软件公司(企业)都希望可以确保开发及项目运行流程可以顺利,但是如果要完美完结那么需要其中会有很多的因素存在。包括,最佳实践、架构原则、服务治理以及其他决定性的因素。而其中服务治理指的是用来管理SOA(微服务)所采用和实现的重要环节和因素。下图就算是一个较为完整得RPC模型得服务治理体系机制。

典型的问题

  • 变更管理:变更一个服务通常会引起不可预估的后果,因为服务的消费者对服务的提供者来说是不可知的。

  • 服务质量的保证:弹性添加新服务需要对这些服务给予额外的关注。

分布式应用的治理

服务注册与发现

单体服务拆分为微服务,如果微服务之间存在调⽤依赖,就需要得到目标服务的服务地址,也就是微服务治理的”服务发现“。要完成服务发现,就需要将服务信息存储到某个载体(实例),载体本身是微服务治理的”服务注册中心“,存储到载体的动作即是”服务注册“。

服务的可观测性

微服务由于较单体应用有了更多的部署实例,需要对众多服务间的调用关系、状态有清晰的掌控。

可观测性就包括了调用拓扑关系、监控(Metrics)、日志(Logging)、调用追踪(Trace)等,所下图所示,可以通过采用中心进行流量控制得限流控制能力。

服务流量管控

微服务本身存在不同版本,在版本迭代的过程中,需要对微服务间调用进行控制,以完成微服务版本更迭的平滑。

流量管控主要是根据流量的特征(访问参数等)、百分比向不同版本服务分发,这也孵化出灰度发布、蓝绿发布、A/B测试等服务治理的主题,

面向的统计流量范围,主要包含请求打进来的流量管理和微服务之间的流量管理

服务安全控制

服务的安全控制主要分为:服务的安全和服务的控制两个部分。

服务安全

不同微服务承载自身独有的业务职责,对于业务敏感的微服务,需要对其他服务的访问进行认证与鉴权,也就是安全问题。

服务控制

当服务治理能够充分建设后,就需要有足够的控制能力,能实时进行服务治理策略向微服务分发,包含服务的降级和熔断能力的控制等

服务监控

监控的可视化

监控的可视化,随时了解系统运行情况帮助我们快速定位问题。

  1. 通过数据采样分析进行分析对应的上报数据从而帮助我们快速定位问题。

  2. 通过上报数据的信息,进行多维度的指标计算,方便我们时时刻刻地进行分析系统服务,打造全方位的监控体系。

监控维度

在我们日常的实际项目中,我们实现了四种维度的监控。

容器实例级别的监控

针对于使用的容器服务,例如:Docker、Podman或者moby服务,k8s的pod(单pod只管理一个容器)级别,那么我们监控的就是容器内部的服务级别,可以理解为实例级别,例如下图我们的crm容器实例,下面每一个容器都是一个监控对象

针对于SpringBoot的应用,我们一般处了专门的监控服务,例如,夜莺、Zabbix和Promethus等,还可以参考SpringBoot-Admin,自己实现了一套监控界面,监控Spring Boot应用。

  • Zabbix(www.zabbix.com/):老牌劲旅的监控服务

  • Nagios(www.nagios.org/):夜莺服务监控机制

  • open-falcon(github.com/XiaoMi/open…

主要指标

  • Spring Boot Admin:github.com/codecentric…

  • GC/threaddump/heapdump⽇志的分析:gceasy.io/:解析分析相关的GC服…

应用实例级别的监控

针对于应用级别的服务实例监控,例如我们有crm服务系统,那么如果我们集群部署、分布式部署等方式,那么会针对于将应用的整体,下图就是整体的应用体系作为一个指标对象,它的指标对象监控维度就是将所有的内部的容器实例监控指标合并。

  • Prometheus(github.com/prometheus/… 当然Prometheus不仅能监控容器,还能监控数据库、操作系统,甚⾄可以和Spring Boot集成,但⽬前业界主要⽤来监控容器。

系统级的监控

调用链监控

  • Sleuth + Zipkin,可选的调⽤链监控⼯具。

  • SkyWalking(github.com/apache/incu…

  • PinPoint(github.com/naver/pinpo…

日志监控及优化

  • Skywalking快速找到性能瓶颈

  • ELK分析⽇志快速找到问题

JVM监控及调优工具推荐

  • GCPlot(github.com/dmart28/gcp…

  • FastThread(fastthread.io/):

  • GCEasy(gceasy.io/):dump堆、dum…

  • VisualVM/JDK Mission Control等⼯具帮助我们分析问题

中间件级别监控

Zabbix监控是一个老牌劲旅了。

Redis监控

  • Redis Live(github.com/nkrode/Redi…

  • Redis Stat(github.com/junegunn/re…

  • Cache Cloud(github.com/sohutv/cach…

  • Prometheus(github.com/prometheus/…

Kafka监控

  • Kafka Manager(github.com/yahoo/kafka…

MySQL

  • MyCAT(github.com/MyCATApache…

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

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

相关文章

网络入侵检测 Network Intrusion Detection System (NIDS)

网络入侵检测 Network Intrusion Detection System--NIDS网络入侵检测 Network Intrusion Detection System (NIDS)1.学习内容2.数据集说明3.NIDS组件4.基于SDN的网络入侵检测5.实验步骤下载数据集下载代码配置环境结构目录运行程序训练结果6.总结参考论文数据集申明&#xff1…

JVM垃圾回收——CMS垃圾收集器

目录 一、什么是CMS垃圾收集器 二、CMS垃圾收集的过程 三、CMS收集器的不足 四、CMS收集器的参数配置 一、什么是CMS垃圾收集器 虽然HotSpot虚拟机已经在jdk14中移除了CMS垃圾收集的参数,但是考虑到还有很多开发是基于jdk8开发的,所以还是有必要了解…

leetcode17. 电话号码的字母组合

文章目录题目思考代码和注释总结题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 来源:力扣(…

【计算机毕业设计】5.网上书店系统maven源码

一、系统截图(需要演示视频可以私聊) 摘要 随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化、网络化和电子化。网上销售,它将是直接市场营销的最新形式。本论文是以构建网上书店系统为…

善网ESG周报(第一期)

ESG报告: 诺基亚最新ESG报告已出炉 报告显示,诺基亚的ESG战略着重于环境、工业数字化、安全和隐私、缩小数字鸿沟、以及企业责任。 Lazada 发布首份ESG报告:为东南亚六国创造约110万经济机会 报告提出,Lazada在区域赋能方面、…

BGP进阶:BGP 综合实验二

实验拓扑及说明 设备编号及互联线路如图所示;所有设备的互联地址段采用10.1.xy.0/24,其中xy为设备编号,x为编号较小的设备,y为编号较大的设备。例如R2及R3之间的直连链路,网段为10.1.23.0/24,这条链路上R2的…

2023年系统规划与设计管理师-第一章信息的综合知识

1. 思维导图 2.信息补充 2.1 信息的传输模型 2.2 信息质量的七大属性 2.3 信息化的基本内涵 2.4 电子商务类型 2.5 电子商务类型 2.6 电子商务的特征 2.7 电子商务的基础设施 2.8 加快商务发展的基本原则 2.9 企业信息化 2.10 信息系统的组成部分 2.11 信息系统的生命周期 2.12…

世界杯 | 中国首次承建世界杯主赛场,基建狂魔用BIM征服世界杯

hi,家人们,我是建模助手。 呐,一如既往地,这次世界杯中国除了球队,其他基本都去了卡塔尔,我可不是在搞幽默,本次世界杯可真是中国元素满满—— 包括但不限于Made in China的纯电大巴、无人驾驶地…

技术分享 | 无人驾驶汽车的眼睛

根据智能化程度的不同,自动驾驶被分为5个等级:L1辅助驾驶、L2部分自动驾驶、L3有条件自动驾驶、L4高度自动驾驶、L5完全自动驾驶,即真正的无人驾驶。 日渐活跃于公众视野的“无人驾驶”概念,往往是指L3及以上级别的自动驾驶。目前…

深度解析为什么做深度学习,都用python,而不用java或者c++

前言 Python是解释语言,这让写程序方便不只一点。举例来说,在C等编译语言里写一个矩阵乘法,需要自己分配操作数(矩阵)的、分配结果的内存、手动对BLAS接口调用gemm、最后如果没用smart pointer还得手动回收内存空间。P…

看完这篇SpringBoot让我在阿里成功涨薪40%,感谢

前言: SpringBoot的好处是把Java2EE的各项技术的整合变得非常的简单,但是也有它的缺点,它的封装性太强,如果你想了解SpringBoot底层的原理,你必须对SpringMvc、Spring注解等比较了解,你才能更好的去了解Sp…

Jenkins项目中有中文文件出错处理

jenkins build的时候报 ... Malformed input or input contains unmappable characters... 提示是由于项目中有中文文件名,乱码处理不了 ERROR: Build step failed with exception java.nio.file.InvalidPathException: Malformed input or input contains unmappab…

Java学习之继承二细节(学习重点)

目录 继承细节 第一条 父类代码 子类代码 测试代码 运行结果 第二条 第三条 第三条-1 第三条-2 第四条 一、调用父类Base的无参构造器 二、一个参数的构造器 三、两个参数的构造器 第五条 第六条 第七条 第八条 第九条 第十条 继承细节 第一条 子类继承了父类所有的…

用DIV+CSS技术设计的美食主题网站(web前端网页制作课作业)美食餐饮网站设计与实现(HTML+CSS+JavaScript)

👨‍🎓静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的…

ImmunoChemistry艾美捷总细胞毒性试验试剂盒方案

ImmunoChemistry艾美捷总细胞毒性试验试剂盒是一种单管三色试验,用于定量评估细胞凋亡和坏死引起的细胞介导的细胞溶解活性。该试验采用绿色荧光细胞染色剂CFSE标记靶细胞,红色活/死活力染料7-AAD用于识别细胞毒性试验样品中存在的死细胞,橙红…

【前端验证】fork-join_none线程立即执行的一次代码优化记录

我们的目标是┏ (゜ω゜)☞芯片前端全栈工程师~喵! 前言 【system verilog】fork-join_none与循环语句共同使用的行为探究 很早之前写过关于fork-join_none的探究文章,最近被人指出了一些错误: 我仔细理解了下他的意思,觉得确实…

电容笔和触控笔有什么区别?平价好用的电容笔排行榜

从导电材料、作用机理、用途等方面来看,电容笔与一般的触摸笔有很大区别。电容笔的笔头设计为中等大小,笔头材料通常更耐磨损。随着技术的发展,人们的生活水平越来越高,人们都想要一支更好用的电容笔,不管是图纸绘画&a…

Java真的不难(五十一)SpringBoot使用EasyExcel实现导出

EasyExcel: 大家好久不见! 一、什么是EasyExcel? EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 github地址: https://github.com/alibaba/easyexcel 官方文档地址&#xf…

MAC安装redis的简单方法

使用mac的包管理工具brew一行命令搞定安装。若未安装brew,命令行先输入以下命令安装brew。 /bin/bash -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" brew install redis6.2 brew services restart redis6.2 一、安装…

三台服务器使用docker搭建redis一主二从三哨兵,概念-搭建-整合springboot【保姆级】

一、前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群。 redis有两种高可用的方案: High availability with Redis Sentinel(哨兵)Scaling with Redis Cluster&…