OpenStack计费项目CloudKitty的强化及运用

2023-05-16

本文转自Openstack中国社区Openstack计费项目CloudKitty的强化及运用

本文作者: “Li Xiangjun”

在OpenStack开发社区向“Big Tent”模式全面转型之际,一个新的项目—CloudKitty进入了人们的视野。该项目基于OpenStack对外提供Rating-as-a-Service的服务,旨在解决IaaS层计费方面的需求。

Why we need it

云计算的一个最大特征就是“按需使用,按量付费”,那么基于OpenStack的云平台如何来实现计费方面的需求呢?很遗憾,社区在很长一段时间内都没有给出一个切实可行的解决方案(有这方面的尝试,像BP:https://wiki.openstack.org/wiki/Ceilometer/blueprints/Add_Billing_in_Ceilometer就是计划在Ceilometer框架内添加计费的功能,但最后都没有了下文),很多公司都是各自为OpenStack开发自己的计费服务作为其产品化的一部分。随着OpenStack的不断发展,社区在计费方面的诉求也越来越强烈。为了填补OpenStack计费方面的空白同时也为了避免重复造轮子,CloudKitty应运而生。

How it works

一般意义上来讲,要最终实现对IaaS层的计费需要如下几个步骤:


Step 1. Metering: 收集资源的使用数据,其数据信息包括:使用对象(what),使用者(who),使用时间(when),使用量(how much)

Step 2. Rating: 将资源使用数据按照商务规则转化为可计费项目并计算费用

Step 3. Billing: 结账开票,也就是根据指定的时间段计算用户总的资源使用费用(由于各个公司对于billing都有自己独特的需求,所以该步骤一般都是用户自己实现的)

在OpenStack所有组件中,Ceilometer负责收集虚拟资源的详细使用数据,充当Metering的角色。CloudKitty做的事情就是从Ceilometer端获取计量数据,然后根据事先定义好的计费规则对这些使用数据进行Rating,为最终的billing提供数据支撑。如上图所示,CloudKitty在整个计费流程中充当的是Rating的角色。

CloudKitty的架构如下图所示:


主要包括四个部分:

  • Data collection (collector)
  • Rating processing
  • Storage
  • Report writer

分别说明如下:

  •  Collector:负责收集虚拟资源的原始使用信息并转化为CloudKitty能够识别的数据格式。Collector采用插件式设计,可以根据不同的计量组件或不同的meter数据获取方式装载不同的collecotr(理论上甚至可以为CloudStack开发一个collecotr让CloudKitty可以在CloudStack上工作),至于在运行时装载哪个collector可以在配置文件中进行配置。目前社区已实现ceilometer的collector。
  •  Rating processing:计费引擎, CloudKitty的核心组件,对外提供设定价格的API接口,对内负责计算所有虚拟资源使用记录的费用。它从collector获取原始的使用记录,然后根据事先设定好的价格及计价策略对这些记录进行费用的计算。同样该模块采用插件式设计,具有良好的可扩展性。现在社区实现了一个名为hashmap的rating module。我们可以根据自身的需求开发我们自己的rating module。还可以在同一时刻加载多个rating module,并且设置执行的先后顺序。最后该模块处理好的计费信息会传递给Storage和Report writer。
  •  Storage:负责把rating processing处理好的计费信息持久化存储到后端数据库。由于在设计的时候引入了ORM框架sqlalchemy所以支持多种类型的数据库,例如mysql、postgresql、sqlserver。另外查询计费信息和创建报表的API也封装在这个模块中。
  •  Report writer:最终的计费信息在存储到后端数据库的同时,还可以用文件的形式存储到磁盘上,方便与第三方系统交换数据。目前支持输出json格式的文件。

分析了CloudKitty的应用架构后,那我们对CloudKitty的内部数据处理流程就很好理解了。如下图所示,从分析计量组件产生的数据,到最终根据计价策略完成对资源使用数据的计费, 总共需要4步:


CloudKitty从Ceilomter获取资源的使用记录,根据admin用户预先设定的计费策略生成计费记录,然后end user就可以通过CLI或GUI查询到自己的计费信息。

Current status and Roadmap

相对于OpenStack的其它组件,CloudKitty算得上是一个比较年轻的项目了,去年8月才在社区注册。在今年6月份我们决定采用它做为公司内私有云的计费模块时它还是一个孵化项目,到今年十月底的时候就已经转变为OpenStack的正式项目了。之所以发展这么快我认为一个很大的原因就是上文提到的OpenStack计费方面的需求太强劲,社区太需要一个项目来填补metering和billing之间的空白了。CloudKitty加入Big Tent后,社区活跃度有了质的提升,根据社区统计数据,CloudKitty加入Big Tent两周后获得的contributions比加入前半年的总计还要多。CloudKitty近期(M cycle)主要的开发计划大致如下:

  • 添加Gnocchi支持

主要是性能/可伸缩性方面的考虑。当前的CloudKitty在架构上存在一个很大的性能方面的风险(其实问题根源在Ceilometer),由于CloudKitty需要调用Ceilometer的API获取虚拟资源的使用信息,但是大家都知道在数据规模比较大(数千台虚拟机)的情况下,Ceilometer在查询的时候会有很大的性能问题,这样就会导致CloudKitty的collector在收集数据的时候速度变慢,从而产生连锁反应使整个CloudKitty的处理速度慢下来。近期,Ceilometer社区为解决查询时的性能问题导入了一个名为Gnocchi的组件(Gnocchi是一个时间序列存储后端,它对存储和检索时间序列的数据有着天然的性能优势),专门向外提供Metric数据的查询服务。所以为了适配这个变化,CloudKitty正在开发一个工作在Gnocchi上的collector,希望利用Ceilometer的这个改进一劳永逸的解决获取计量数据时的性能瓶颈。

  •  增加名为pyscript的rating module

装载了这个rating module后,支持用户编写python代码来灵活定义自己的计费规则。以前要自定义计费策略你必须自己开发一个独立的rating module,在这个过程中你需要对CloudKitty的内部实现有一定程度的认识,但是有了pyscript计费模块后,你完全可以把CloudKitty当做一个黑盒,只要专注于用python来实现你自己的计费策略并上传到pyscript即可,这样就大大降低了CloudKitty的使用门槛。

  • 提升图形界面

CloudKitty在图形界面这一块还比较欠缺,社区最近主要是想提升统计报表的功能。



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenStack计费项目CloudKitty的强化及运用 的相关文章

  • STM32F103寄存器方式点亮LED流水灯

    STM32F103寄存器方式点亮LED流水灯 一 程序设计思路1 GPIO 模式2 控制引脚输出电平3 开启外设时钟 二 编程实现1 C语言2 汇编语言3 实现 三 总结四 参考 以 STM32最小系统核心板 STM32F103C8T6 4
  • 看一看Rust,记录笔记:类型系统

    文章目录 第五章 xff1a 类型系统泛型泛型与容器泛型与结构体泛型与枚举泛型与函数泛型与方法 trait系统trait 定义与实现trait 作为参数impl Traittrait 约束 返回实现trait 的类型标准版常用trait格式
  • st-gcn复现

    1 st gcn执行命令 进入存储代码的目录 xff0c 激活pytorch环境 xff0c 之后运行命令 python main span class token punctuation span py demo span class t
  • 论文学习

    一 论文搜索 全球最大的预印本系统 https arxiv org 不懂为何有些网络是无法登录该网站 xff0c 有些却可以 sci hub xff08 擅长根据doi号下载文献 xff09 sci hub网址 xff1a https sc
  • 工控

    一 关注的网站 安全客 xff1a https www anquanke com 公司 北京九思易自动化软件公司 xff1a http controlease com 该公司和我想做的东西类似 xff0c 或者可以说是一样的 在SCADA系
  • 开发工具汇总

    转自帖子https www jincon com archives 488 网盘地址 xff1a 链接 xff1a https pan baidu com s 1J7UkIABiOaYSDRaGDJCmIg 提取码 xff1a p9vo
  • 远程控制工具——Centos7上向日葵安装使用(xy)

    最近发现国产软件向日葵远控确实很好用windows linux mac androdid ios 全平台支持确实很棒今天就给大家演示一下linux版的安装教程 首先在windows系统安装向日葵远控服务端用于控制其他远程主机 向日葵官网 x
  • opencv中的cv2.namedWindow()函数使用

    用法 xff1a cv2 namedWindow 窗口标题 默认参数 窗口大小可以改变 xff1a cv2 namedWindow 34 image 34 cv2 WINDOW NORMAL 或者cv2 namedWindow 39 ima
  • 常用shell脚本_失败自动重复下载

    常用shell脚本 失败自动重复下载 在网络不稳定时 xff0c 下载可能常常会中断或者失败 xff0c 通过脚本下载来实现下载失败之后 xff0c 重新下载 比如在github上下载一个包 xff1a span class token c
  • python中的range()函数

    python range 函数可以创建一个整数列表 xff0c 一般用在for循环中 函数语法 range start stop step 参数说明 xff1a start 计数从start开始 xff0c 默认是从0开始 stop 计数到
  • Is the docker daemon running?问题解决方法

    在运行 sudo docker ps a时出现 Cannot connect to the Docker daemon at unix var run docker sock Is the docker daemon running 此时已
  • docker端口映射或启动容器时报错Error response from daemon: Container is not running

    docker端口映射或启动容器时 xff1a docker exec it 7c5a2350c4cb bin bash 出现了错误 xff1a Error response from daemon Container 757d542c43e
  • GPU0和GPU1的区别

    1 GPU0就是我们俗称的集显 61 集成显卡是主板自带的显卡 2 GPU1就是独显独立显卡 xff0c 是单独的一张显卡性能一般是会比集显要高 一般在我们的电脑中 xff0c 有独立显卡的话 xff0c 就默认不会使用集显 xff0c 所
  • 进制转换

    二 八 十六转化为十进制 系数 xff1a 每一个位置上的数 xff0c 称为系数 基数 xff1a x进制 xff0c 基数就是x 权 xff1a 对数据系统从右往左进行编号 xff0c 并且从0开始 xff0c 每一个编号就是该系数所对
  • linux同时连接内外网的设置

    因为工作的原因 xff0c 经常会用有线网卡连接服务器进行配置 xff0c 无线网卡上外网 查看当前网关信息 pipci 64 ubuntu ip route show default via 192 168 2 1 dev enp2s0
  • ARM 汇编的立即数

    https blog csdn net a99778800 article details 6759825 ARM 汇编的立即数 大多数的数据处理指令和部分状态寄存器访问指令用到立即数 xff0c 在 ARM 中不是所有数都能用作立即数 x
  • Error: Invalid or corrupt jarfile xxxx-1.0-SNAPSHOT.jar

    解决方法 xff1a 1 请看 xff1a 395条消息 Linux jar报错处理 Exception in thread main java lang No Error Invalid or corrupt jarfile 错误 尝试打
  • IntelliJ IDEA配置maven远程仓库

    最近在搭建springMVC 43 mybatis的框架 xff0c 在添加jar包的时候出问题了 以前都是直接将jar包放到lib里面即可 xff0c 但是看到现在用maven的比较多 xff0c 就去配置maven 然后发现 xff0c
  • DNS & CDN & HTTPDNS 原理简析

    http www jianshu com p a73e963b63b1 DNS amp CDN amp HTTPDNS 原理简析 背景 xff1a 域名系统 DNS Domain Name System 作为域名和 IP 地址相互映射的一个
  • 图像拼接之MATLAB实现

    转自http www cnblogs com naive p 3579610 html 背景介绍 图像拼接是一项应用广泛的图像处理技术 根据特征点的相互匹配 xff0c 可以将多张小视角的图像拼接成为一张大视角的图像 xff0c 在广角照片

随机推荐

  • Centos重新安装 python2.7 和 yum

    由于Centos7自带的python大多是2 7版本 有时想装个python3的版本 于是把本来自带的yum一起给删了 这种情况下就要重装 python2 7 和 yum 一 删除Centos自带的python版本 强制删除已安装pytho
  • golang install 'gopls'

    前两天使用vs code写golang程序时 xff0c 突然提示gopls需要更新 xff0c 没有梯子的我 xff0c 很悲催的发现无法正常后取更新 xff0c 而没有这个工具的话 xff0c vs code的代码补齐和调转等功能完全无
  • 高校博士生待遇汇总

    笔者转载 xff0c 没有核实 xff0c 转自2011年的一份博客 xff0c 有兴趣的看看 xff0c 不喜勿喷 xff01 xff01 xff01 原文出自 xff1a http www 360doc com content 11 0
  • 国内从事计算机视觉(CV)领域的公司

    经常碰到朋友问我国内从事计算机视觉 xff08 CV xff09 领域的公司的发展情况 xff0c 产品情况 xff0c 甚至找工作等问题 xff0c 这里 xff0c 我给出自己收集的国内从事CV相关领域的公司网址及其主要产品 xff0c
  • 四川大学 opencv 人脸识别 手势识别 研究项目

    http v youku com v show id XNDAzMjkxOTAw html from 61 y1 2 1 92 3 3 1 1 1 1 2
  • 计算机领域著名的国际会议

    2013 3 7 理论计算机科学领域最顶级学术会议FOCS和STOC 1 IEEE Symposium on Foundations of Computer Science FOCS http ieee focs org 2 STOC Th
  • 人工智能的四个阶段

    人工智能的四个阶段 参考 人工智能 王万森 提起 人工智能 xff0c 从字面上看很容想到与之相对应的 自然智能 xff0c 自然智能基本的解释就是自然界本身具有的智能 xff0c 而人工智能就是人类所创造出来的智能 xff0c 在这里人类
  • 人工神经网络发展历程

    简要介绍人工神经网络发展五大历程 xff0c 都是具有标志性的 xff1a xff08 1 xff09 MP神经网络模型 xff0c 由此开始 xff0c 可以说神经网络始于 20世纪40年代 xff08 2 xff09 Hebb规则 xf
  • 柯西不等式证明(cauchy不等式)

    泛函分析中柯西不等式证明 xff1a
  • Time of flight cameras(TOF carmeras)

    TOF cameras Time Of flight 新型3D图像传感器 xff0c 该传感器使用红外线或者光脉冲来估计光线从发射到检测到的时间延迟来测量距离
  • 求逆矩阵的方法

    一般求逆矩阵的方法有两种 xff0c 伴随阵法和初等变换法 但是这两种方法都不太适合编程 伴随阵法的计算量大 xff0c 初等变换法又难以编程实现 适合编程的求逆矩阵的方法如下 xff1a 1 对可逆矩阵A进行QR分解 xff1a A 61
  • 柯西列

    柯西列 xff1a 无穷数列 xff0c x1 x2 xn xn 43 1 当n为无穷大时 xff0c xn与xn 43 1的距离无穷小
  • Dynamic Feature Learning for Partial Face Recognition (CVPR 2018)

    破题 xff1a 本文提出的模型是Dynamic Feature Learning xff08 DFL xff09 本人要做的事情是Partial Face Recognition xff08 PFR xff09 摘要 xff1a DFL由
  • 安装Docker Desktop报错WSL 2 installation is incomplete的问题(解决报错)

    我们安装Docker Desktop的时候 他会问我们是否需要使用WSL2 基于Windows的Linux子系统 如果我们不适用 就会使用Hyper v虚拟机运行 不过相比于虚拟机 子系统在性能方面更加出色 在我们选择使用WSL2之后 并且
  • vs2013报错:error MSB8020: The build tools for v141 (Platform Toolset = ‘v141‘) cannot be found.

    vs2013报错 xff1a error MSB8020 The build tools for v141 Platform Toolset 61 v141 cannot be found T 原因 xff1a 该项目使用vs2017创建
  • Debian系统更新apt源

    docker search了一个tomcat的镜像 xff0c 发现是Debian系统 xff0c 里面啥啥命令都没有 xff0c 使用的这个难受啊 xff0c 于是 xff0c 强迫症犯了 xff0c 要安装相应软件 xff0c 在容器里
  • Isaac Gym(一)在Ubuntu20.04.1中安装Isaac Gym

    在Ubuntu20 04 1中安装Isaac Gym 前提1 安装 Conda1 1 下载Anaconda3安装文件1 2 运行1 3 设置路径 2 安装 Isaac Gym2 1 下载Isaac Gym安装文件2 2 解压并删除安装包2
  • 在rviz中出现For frame [laser]: Fixed Frame [laser_link] does not exist

    参考 xff1a 链接 一 激光雷达在rviz中没有显示扫描数据 二 解决方法 topic报frame transform之类错误 xff0c 就有两个办法 xff1a 1 把global fixed frame设成topic自己所在的坐标
  • ubuntu安装nerd font字体

    步骤 1 下载nerd font字体文件到某个文件夹 在网址https www nerdfonts com font downloads xff0c 找到JetBrainsMono xff0c DroidSansMono xff0c Dej
  • OpenStack计费项目CloudKitty的强化及运用

    本文转自Openstack中国社区Openstack计费项目CloudKitty的强化及运用 本文作者 xff1a Li Xiangjun 在OpenStack开发社区向 Big Tent 模式全面转型之际 xff0c 一个新的项目 Clo