CI/CD 开发流程介绍
CI 与 CD 基础 持续集成(Continuous Integration)指开发人员在特性分支(频繁)提交代码,立即执行构建和单元测试,代码通过测试标准后集成到主干的过程。强调的是分支代码的提交、构建与单元测试,这个过程的产出是单元测试报告。 持续交付(Continuous Delivery)是在持续集成的基础上,将构建的代码部署到「类生产环境」,完成 QA 测试之后手动部署到生成环境的过程。强调代码部署,这个过程产出测试报告。 持续部署(Continuous Deployment)是持续交付的下一步,强调部署生产环境代码的过程自动化,同时可以处理上线通知等操作。与持续交付主要的区别是手动跟自动。 以上图片参考:The Product Managers’ Guide to Continuous Delivery and DevOps CI/CD 的必要性 以一言概之的话就是:机械的事情让机器做。一个开发团队,没有 CI/CD,我想可能是这样子的:无法管理代码多人多地协作(git repository 也是 CI 的一部分),系列的 shell 需要人工处理,代码的发布需要登录 ...
ICSE 2021丨MicroDiag:微服务系统下的细粒度应用性能诊断系统
论文标题 | MicroDiag: Fine-grained Performance Diagnosis for Microservice Systems 论文来源 | ICSE 2021 论文链接 | https://hal.inria.fr/hal-03155797/document 源码链接 | 未公布 TL;DR 论文中提出一种细粒度的自动根因定位系统 MicroDiag,不仅可以定位到根因组件并且可以挖掘出更加详细的异常信息(指标间异常的因果关系)。MicroDiag 主要思想是基于各个组件间的依赖图和不同的异常传播模式构造指标间的因果关系来推理根因。实验部分在两个微服务集群中测试 MicroDiag 的性能,结果表明定位的 Top3 准确性达到 97%,最低优于 baseline 方法 31.1%。 Problem Formulation 将微服务系统中各个服务、容器和服务器用组件集合 CCC 表示,每个组件的指标集合用 MMM 表示,其中 McM^cMc 表示组件 c∈Cc\in Cc∈C 的指标集合,micm_i^cmic 表示组件 ccc 的第 iii 类指标(例 ...
ICSE 2021丨MicroHECL:大规模微服务系统中的高效根因定位方法
论文标题 | MicroHECL: High-Efficient Root Cause Localization in Large-Scale Microservice Systems 论文来源 | ICSE 2021 论文链接 | https://arxiv.org/pdf/2103.01782.pdf 源码链接 | 未公布 近期,由阿里云云效团队联合复旦大学 CodeWisdom 研究团队、阿里技术风险部安全生产团队,合作完成的论文《MicroHECL: High-Efficient Root Cause Localization in Large-Scale Microservice Systems》被 ICSE 2021 SEIP track 录用。本文针对大规模微服务系统的三种可用性问题,提出了一种高效的根因定位方法 MicroHECL。 MicroHECL 基于动态构建的服务间的依赖图,分析了所有可能的异常传播链路,并基于相关性分析对候选根因进行了排序。本文将机器学习和统计方法相结合,并通过个性化的模型来检测不同类型的服务异常(如性能异常、可靠性异常、流量异常)。为了提高 ...
WSDM 2021 | 快速有效的无监督时间序列异常检测框架 FluxEV
论文标题 | FluxEV: A Fast and Effective Unsupervised Framework for Time-Series Anomaly Detection 论文来源 | WSDM 2021 论文链接 | https://dl.acm.org/doi/10.1145/3437963.3441823 源码链接 | 未公布 TL;DR 论文中提出的时间序列异常检测模型 FluxEV 主要是对之前的 SPOT 算法进行优化,主要包括两项:1) SPOT 仅对极值较为敏感因此不能检测出局部波动的异常。2) 使用矩估计 MOM(Method of Moments) 优化 SPOT 中最大似然估计的计算效率。实验部分在两个大型数据中验证 FluxEV 性能优于其它 baselines。 Algorithm/Model FluxEV 流式异常检测模型如下图所示: 主要四个步骤: Data Preprocessing Fluctuation Extraction Two-step Smoothing Processing MOM-based Automatic Thr ...
TopoMAD:云系统中基于时空数据的无监督异常检测模型
论文标题 | A Spatiotemporal Deep Learning Approach for Unsupervised Anomaly Detection in Cloud Systems 论文来源 | TNNLS(B) 2020 论文链接 | https://ieeexplore.ieee.org/document/9228885 源码链接 | 数据集:https://github.com/QAZASDEDC/TopoMAD TL;DR 针对云系统中的脏数据问题,论文中提出一种无监督的异常检测模型 TopoMAD (topology-aware multivariate time series anomaly detector) ,该模型通过随机的 seq2seq 变分自动编码器模型来表示云系统数据的时空特征。系统拓扑和时序信息是指不同组件间根据滑动窗口聚合的指标数据,然后分别使用 GCN 和 LSTM 来提取系统空间特征和时序特征。实验部分在两个数据集中验证了论文提出的模型优于其它 baselines。 Problem Statement 对于拓扑多变量时间序列的异常检测 ...
AddGraph:基于时空图注意力网络的动态图异常检测
论文标题 | AddGraph: Anomaly Detection in Dynamic Graph Using Attention-based Temporal GCN 论文来源 | IJCAI 2019 论文链接 | https://www.ijcai.org/Proceedings/2019/0614.pdf 源码链接 | 未公布 TL;DR 论文结合GNN提出了动态图中半监督的边异常检测模型 AddGraph,同时考虑了节点的结构,属性和时序特征。对于标签数据不足的问题,在训练过程中采用了 negative sampling 和 margin loss 两个技巧。在两个真实数据集的实验中取得了较好的效果。 Problem Definition 论文中的方法主要用于推荐系统中的异常操作检测,举个例子:异常的用户想自己的物品被推荐,那怎么办,那就找几个人疯狂点自己的东西的同时点那些本身就已经是popular的item,这样就会让自己的物品和popular的有相似的特征等,就会增加这些物品的被推荐的rank。这同时会产生很多新的edge,这 ...
Python 日期时间戳解析方法详解
由于从事智能运维 AIOps 相关的算法研究,因此日常接触的最多就是时间序列相关的数据。在不同场景下时间字符串表示的格式可能都不相同,因此本文记录下所了解的字符串解析方法。 time 模块 一般情况下都是将时间字符串转为时间戳或者反之转换,time 模块即可解决问题; 12345import time# 时间戳转为日期time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(t))# 日期转为时间戳time.mktime(time.strptime(d, "%Y-%m-%dT%H:%M:%S.%fZ")) ⚠️ 注意:上面时间转换方法操作简单,可以满足大部分需求;但是存在两种问题: 时区问题,例如 UTC 格式;【如果是时间戳就没什么区别?】 字符串格式问题,例如不同的日期字符串格式; datetime 模块 datetime 模块比 time 模块功能更加丰富; 详细的接口说明参考:https://docs.python.org/zh-cn/3.8/library/datetime.html 例如 ...
SPOT:基于极值优化理论的流式单变量时间序列异常检测模型
论文标题 | Anomaly Detection in Streams with Extreme Value Theory 论文来源 | KDD 2017 论文链接 | https://dl.acm.org/doi/10.1145/3097983.3098144 源码链接 | Ref: https://github.com/DawnsonLi/EVT TL;DR 论文首次提出基于极值优化理论来检测单变量时间序列中的异常点,不依赖于手工设定阈值和假设数据的分布情况,唯一的参数是 risk 来控制负阳例的数量;论文中提出的 SPOT 方法不仅可以用于离群点异常检测,更适用于自动设定阈值,此外针对数据漂移情况提出改良的 DSPOT 模型;实验部分在真实数据集中验证了其有效性。 Algorithm/Model Background 其背景知识较为复杂,包括: 极值理论(EVT,Extreme value theory) 极值分布函数 (EVD,Extreme value distributions) POT(Peaks-Over-Threshold)方法 参数最大似然估计及其优化技巧 以 ...
ISSRE 2020丨TraceAnomaly:基于深度贝叶斯网络的微服务调用链异常检测模型
论文标题 | Unsupervised Detection of Microservice Trace Anomalies through Service-Level Deep Bayesian Networks 论文来源 | ISSRE(B) 2020 论文链接:https://ieeexplore.ieee.org/document/9251058 源码链接:https://github.com/NetManAIOps/TraceAnomaly TL;DR 论文中基于深度贝叶斯网络提出了一种 Trace 调用链异常检测模型 TraceAnomaly,主要想法是利用正常数据来离线训练深度模型学习正常的行为模式,上线测试模型时如果新的 Trace 具有较小的异常分数(似然值)则为异常的;在实验中模型测试的准确率和召回率均超过 0.97 ,性能远优于当前的 baselines 方法; Algorithm/Model 论文中提出的 TraceAnomaly 模型的架构如下图所示: 以一个服务的调用 Trace 为例,调用信息如下所示: 整体流程可以分为以下几步: Trace 特征 ...
Git 协作规范
在个人仓库中编码可以随心所欲,但是作为一个团队合作编码时需要符合一定规范来提升团队效率,因此本文记录下 Git 协作规范; Git 协作规范 完整流程参考:https://nvie.com/posts/a-successful-git-branching-model/ master:稳定版本代码,不能在master 直接开发。 hotfix:基于master,并最后合并到master和develop。生命周期较短,用了修复bug或小粒度修改发布。 develop: 开发中代码,一般从feature branches、release 或hotfix合并过来。 release:用于发布测试代码,基于develop,修改后又合并回develop。稳定后合并进入master并打tag,生命周期很短,只是为了发布。不同版本的release不一样,比如release/1.0.0、release/2.0.0。 feature:功能feature开发的分支,基于develop,各个开发者自己维护,最终合并进入develop。一般按开发的功能命名,也可以按开发者名字命名。 Git commi ...
Python 执行 shell 命令的常用方式
在使用 Python 编写自动化脚本的时候,难免会需要执行一些基本的 shell 命令,而 Python 执行 shell 命令的方式有好几种,如果根据需要选择最适合的方式显得非常重要,这篇文章总结和对比一下几种常见的 Python 运行 shell 命令的方式。 os.system() os.system() 可以说是最为基本的运行shell命令的方式了,这个方法的特点就是直接运行命令,并将运行之后的状态值返回码返回,所以结果是一个 int 类型,这个方式比较常见是运用在只需要执行 shell 命令而不需要得到命令的返回结果的场景。 比如执行一个创建目录的操作就可以执行实用这个方法: 123456789>>> import os>>> cmd = "mkdir /tmp/tt">>> res = os.system(cmd)>>> print(res)0>>> res = os.system(cmd)mkdir: cannot create directory ‘/tmp/t ...
Python 代码优化技巧(三)
近期写数据处理脚本时,由于数据量太大导致数据处理时间非常长,因此总结下使用到的加速技巧。 历史参考文章: Python 代码优化技巧(一) Python 代码优化技巧(二) 多线程处理 在历史文章中也提到了多线程处理方法,例如将一个大的 DataFrame 根据CPU数量拆成多份分别处理后合并; 123456789101112131415161718192021222324import numpy as npimport pandas as pdfrom multiprocessing import cpu_count, Pooldef parallelize(func, df): """ Split data into max core partitions and execute func in parallel. https://www.machinelearningplus.com/python/parallel-processing-python/ Parameters ---------- df : pan ...
MEPFL:基于系统调用日志的微服务潜在故障预测和定位模型
论文标题 | Latent Error Prediction and Fault Localization for Microservice Applications by Learning from System Trace Logs 论文来源 | ESEC/FSE 2019 论文链接 | https://dl.acm.org/doi/10.1145/3338906.3338961 源码链接 | 未公布 TL;DR Algorithm/Model Experiments Thoughts Contact
Hexo Butterfly Valine 评论系统添加邮箱提醒
文章转载来源:https://blog.csdn.net/qq_35117024/article/details/107248047 工具创始人:https://github.com/DesertsP/Valine-Admin LeanCloud 证书部署失败问题 参考论坛:https://forum.leancloud.cn/t/topic/23975 目测需要工作人员手动签发证书。 使用二级域名解析即可,因为www.dreamhomes.top 域名解析和原始dreamhomes.github.io 域名解析存在冲突导致域名解析不成功! 解析成功图片如下图所示: LeanCloud 邮箱通知中评论消失问题 注意参数配置,我的问题在于 SITE_URL 后面多加了个 / 符号导致邮箱中链接出现问题; 邮件通知模板修改 邮件通知模板在云引擎环境变量中设定,可自定义通知邮件标题及内容模板。 环境变量 示例 说明 MAIL_SUBJECT PARENTNICK,您在{PARENT_NICK},您在PARENTNICK,您在{SITE_NAME}上的评 ...
Hexo Butterfly 标签外挂
Tabs 12345678910111213141516171819202122232425262728293031323334353637383940414243444546{% tabs Tags %}<!-- tab 出師表 -->Tab<!-- endtab --><!-- tab 圖庫 -->{% gallery %}![](https://i.loli.net/2019/12/25/Jj8FXuKVlOea4Ec.jpg)![](https://i.loli.net/2019/12/25/eqBGrXx9tWsZOao.jpg){% endgallery %}<!-- endtab --><!-- tab 李白 -->Tab{% subtabs 李白詩集 %}<!-- tab 行路難-->Tab<!-- endtab --><!-- tab 將進酒 -->Tab<!-- endtab --> ...