盘点一下分布式模式下的服务治理和监控优化方案
什么是服务治理?
相信每一个软件公司(企业)都希望可以确保开发及项目运行流程可以顺利,但是如果要完美完结那么需要其中会有很多的因素存在。包括,最佳实践、架构原则、服务治理以及其他决定性的因素。而其中服务治理指的是用来管理SOA(微服务)所采用和实现的重要环节和因素。下图就算是一个较为完整得RPC模型得服务治理体系机制。
典型的问题
变更管理:变更一个服务通常会引起不可预估的后果,因为服务的消费者对服务的提供者来说是不可知的。
服务质量的保证:弹性添加新服务需要对这些服务给予额外的关注。
分布式应用的治理
服务注册与发现
单体服务拆分为微服务,如果微服务之间存在调⽤依赖,就需要得到目标服务的服务地址,也就是微服务治理的”服务发现“。要完成服务发现,就需要将服务信息存储到某个载体(实例),载体本身是微服务治理的”服务注册中心“,存储到载体的动作即是”服务注册“。
服务的可观测性
微服务由于较单体应用有了更多的部署实例,需要对众多服务间的调用关系、状态有清晰的掌控。
可观测性就包括了调用拓扑关系、监控(Metrics)、日志(Logging)、调用追踪(Trace)等,所下图所示,可以通过采用中心进行流量控制得限流控制能力。
服务流量管控
微服务本身存在不同版本,在版本迭代的过程中,需要对微服务间调用进行控制,以完成微服务版本更迭的平滑。
流量管控主要是根据流量的特征(访问参数等)、百分比向不同版本服务分发,这也孵化出灰度发布、蓝绿发布、A/B测试等服务治理的主题,
面向的统计流量范围,主要包含请求打进来的流量管理和微服务之间的流量管理
服务安全控制
服务的安全控制主要分为:服务的安全和服务的控制两个部分。
服务安全
不同微服务承载自身独有的业务职责,对于业务敏感的微服务,需要对其他服务的访问进行认证与鉴权,也就是安全问题。
服务控制
当服务治理能够充分建设后,就需要有足够的控制能力,能实时进行服务治理策略向微服务分发,包含服务的降级和熔断能力的控制等
服务监控
监控的可视化
监控的可视化,随时了解系统运行情况帮助我们快速定位问题。
通过数据采样分析进行分析对应的上报数据从而帮助我们快速定位问题。
通过上报数据的信息,进行多维度的指标计算,方便我们时时刻刻地进行分析系统服务,打造全方位的监控体系。
监控维度
在我们日常的实际项目中,我们实现了四种维度的监控。
容器实例级别的监控
针对于使用的容器服务,例如: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…
盘点一下分布式模式下的服务治理和监控优化方案相关推荐
- Debug 模式下,出现 变量已被优化掉,因而不可用 的问题
Debug 模式下,出现 变量已被优化掉,因而不可用 的问题. 出现的问题如下: 解决方案如下: 1. 在VS 软件顶部工具栏上,选择 项目 -> 属性,打开属性栏: 2. 打开属性页后,依次点 ...
- 一文理解分布式开发中的服务治理
我们在分布式开发中经常听到的一个词就是 "服务治理". 在理解"服务治理"的概念之前让我们先理解什么是分布式系统,分布式系统之间如何通过RPC(Remote P ...
- 架构设计:分布式结构下,服务部署发布
本文源码:GitHub·点这里 || GitEE·点这里 一.服务发布简介 分布式系统架构下,服务发布是一件很麻烦的事情,特别是在构建自动发布流程和灰度测试的策略两个核心方面.通常情况下如果不涉及数据 ...
- 架构设计 | 分布式体系下,服务分层监控策略
本文源码:GitHub·点这里 || GitEE·点这里 一.分布式故障 分布式系统的架构,业务开发,这些在良好的思路和设计文档规范之下,是相对来说好处理的,这里的相对是指比较分布式架构下生产环境的突 ...
- 干货 | 携程微服务体系下的服务治理之道和优化实践
作者简介 HongLiang,携程高级技术专家,专注系统性能.稳定性.承载能力和交易质量,在技术架构演进.高并发等领域有丰富的实践经验. 一.背景 微服务架构在中大型互联网公司中被广泛应用,随着业务的 ...
- 微服务治理平台的RPC方案实现
文章作者:用友云平台 原文链接:http://blog.51cto.com/14084875/2326311?utm_source=tuicool&utm_medium=referral 复制 ...
- Kubernetes K8S在IPVS代理模式下Service服务的ClusterIP类型访问失败处理
Kubernetes K8S使用IPVS代理模式,当Service的类型为ClusterIP时,如何处理访问service却不能访问后端pod的情况. 背景现象 Kubernetes K8S使用IPV ...
- 大数据之-Hadoop完全分布式_完全分布式模式下的集群配置---大数据之hadoop工作笔记0034
然后前面我们准备好了,完全分布式下用的集群环境,下面我们,开始配置hadoop集群 我们这里用hadoop102,hadoop103,hadoop104 这3台机器. 需要hadoop102,103, ...
- php在fpm运行模式下实现服务之间的服务熔断、服务监控、调用日志
https://github.com/hongg-coder/http-manager 前言 相信在场各位的泥腿子(如果大佬请跳过这段话)每天工作都是穿梭在curd和curl的爱恨情仇之中,但是本文不 ...
最新文章
- 1、Python 日期时间格式化输出
- 基于JSP实现医院病历管理系统
- arduino红外遥控库IRremote的IRsend类sendRaw函数溢出问题及其解决方法
- 2、Flume1.7.0入门:安装、部署、及flume的案例
- 删除第一个_学习数据结构--第二章:线性表(顺序存储、插入、删除)
- ML.NET 示例:搜索引擎结果排名
- JavaScript学习笔记:常量,枚举,宏定义
- 使用CountDownLatch模拟高并发场景
- Linux工作笔记-两Linux系统互传文件(使用SSH)
- 799元!乐视智能门锁新品Le1S发布
- Beanshell相关
- 2018厦门大学计算机技术分数线,厦门大学2018年各省市录取分数线
- 珍珠项链(洛谷-P2768)(Dp矩阵加速)
- html分页样式居中,bootstrap分页样式怎么实现?
- 电脑wifi网络连接,可以上QQ和微信但是无法浏览器无法使用解决方法
- 【黑灰产犯罪研究】Web应用攻击
- const static 数组指针
- 计算机网络——HTTP
- 关于c#:如何续订过期的ClickOnce证书?
- Python基础:函数的返回值return
热门文章
- 腾讯多媒体实验室:基于三维卷积神经网络的全参考视频质量评估算法
- DOM初探(17)——查看元素的尺寸与位置
- qcustomplot 峰值_QT 本程序可读取Yokogawa 光谱仪多个数据文件(CSV格式)并寻峰 - 下载 - 搜珍网...
- 商品促销——策略模式
- Ramnit感染型病毒创建傀儡进程的方法
- 从360遇上苹果说起
- 程序员的一天:一寸光阴一寸金
- 解决IOS下window.open页面打不开问题
- 两个各四只青蛙过河java_Java实现 LeetCode 403 青蛙过河
- Steamsets安装教程