4

自建云服务计费系统_赵大奇的技术博客_51CTO博客

 2 years ago
source link: https://blog.51cto.com/u_15754465/5894902
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

自建云服务计费系统

精选 原创

姓赵名大奇 2022-11-29 13:43:44 博主文章分类:LAXCUS分布式操作系统 ©著作权

文章标签 运行时间 开发者 迭代 文章分类 云平台 云计算 yyds干货盘点 阅读数350

自从Laxcus分布式操作系统正式开源两个月以来,可能是它一站式云计算平台属性和超大规模计算能力,给用户带来极大的便利,下载量一直持续增加,最近网站后台总是有用户在问,在Laxcus分布式操作系统的社区版本基础上,编写一个计费系统,应该如何实现,分哪些步骤之类的问题。下面简单说一下这个问题,先说下计费编程的大概情况,下一篇咱们再详细说如何编写Laxcus云计费系统。​

标准的云服务计费系统,目前是属于Laxcus云计算版本的一项功能,Laxcus云计算版本对应云计算服务商,里面的功能大量是针对云计算的硬件环境而设计,这种硬件环境,一般用户的计算机集群或者服务器普遍不具备,所以社区版用户无法使用。但是社区版本也提供了通用性的云服务接口,用户使用这些接口,结合自己的云服务特点,也能够设计一套计费系统。更深一步,因为Laxcus分布式操作系统是开源的,如果开发者对Laxcus分布式系统系统有足够了解,还可以结合自己的硬件环境,直接修改源代码,来设计更复杂的计费系统。今天就用这些接口,来介绍一下如何开发一个简单的计费系统,更多的功能需求,可以在这个上面延伸。希望对使用Laxcus社区版本的用户,提供一个参考示例。​

自建云服务计费系统_迭代

首先让我们感性体验一下。启动Laxcus分布式操作系统的集群管理桌面,上面有一个“我的集群”的应用软件。这是一个动态显示Laxcus集群运行环境的应用,打开它,Laxcus集群里,每个节点的重要运行参数都会在上面显示,包括CPU、GPU的负载,内存、磁盘的用量,瞬时网络流量,已经消耗的全部网络流量,在线人数、Laxcus分布式应用软件的运行数量,都会定时刷新一一列举出来,刷新的时间也是由用户自己定义,系统默认的刷新间隔时间是20秒,最小的刷新间隔时间10秒。​

显示在窗口界面上的参数,是Laxcus集群每个节点的运行参数,在它的里面,其实隐藏了注册用户的运行记录,或者说,每个注册用户在Laxcus集群运行记录的汇总,就是Laxcus集群节点的运行参数,所以二者实际是一体两面,混合统一。​

如果把Laxcus集群的运行记录拆解,把每个用户的运行记录单独提取出来,交给计费系统来处理,就需要使用到一个分布式命令:“Check User Cost”。​

在图形界面或者命令行输入“Check User Cost”命令,它会有如下的显示。​

自建云服务计费系统_运行时间_02

打开命令帮助窗口,Check User Cost命令有如下介绍:​

自建云服务计费系统_开发者_03

在Laxcus分布式操作系统里,所有的命令参数都采用短参数格式,即在参数前面加一个“-”符号,而不是两个。这和Linux系统有所区别。​

Check User Cost命令有以下几个参数:​

  1. Sites,节点的类型。这是一个关键字,在Laxcus集群里,除了FRONT节点和WATCH节点,其它节点都是有效。节点类型是一个必选项,指定节点后,命令将去查询关联节点上的资源消耗记录,如果需要检索多个节点,节点关键字之间用“,”分开。​
  2. Users,用户签名。它对应用户的登录名称,忽略大小写。这也是一个必选项,只有指定用户签名后,系统才能够知道要寻找哪些用户的记录,然后再去关联的节点上查找。​
  3. Includes,指向被检索的命令,允许有多个命令被同时检索,多个命令之间用“,”分隔。这是一个可选项,如果不指定,系统将检索用户的所有命令。​
  4. Excludes,就是在全部命令里,被排除的命令,多个被排除命令之间用“,”分隔。它也是可选项,同时与“Includes”是互斥的。就是说如果指定Includes时,就不能使用Excludes参数,反之亦然。​
  5. Begin 检索的开始时间,时间格式是“年-月-日 时:分:秒”这是必选项。​
  6. End 检索的结束时间,时间格式也Begin参数一样,也是必选项。End和Begin形成匹配。​

如果是编程,调用Check User Cost命令,需要使用DSDK软件包。DSDK软件包全名是Distributd Software Development Kit,是Laxcus分布式操作系统提供给用户,用来进行分布式编程的API。DSDK类似于Windows或者Linux提供的SDK从功能上来说差不多,区别在于,Laxcus提供的处理工作都是分布的,所以调用DSDK API指令后,这些指令会分散到不同的计算机节点上运行,而不象Windows、Linux上的指令,只在本地执行。这是它们的根本不同,但是在操作使用上,用户和开发者不会有这种感觉,就象完全在本地处理一样。​

Check User Cost命令的返回结果里,有大量参数需要在这里逐个说明一下,理解后,才好处理后面的编程工作。​

首先是用户名称,它与命令中的“Users”参数对应。 这个比较好理解,每个用户都有一个登录身份,用户名称就是它的ID,通过用户名,计费系统才能识别每一个用户在集群中执行的工作、产生的网络流量,计算消耗的时间。​

第二个是节点,它与命令中的“Sites”参数对应。Laxcus计算机集群有很多的节点,每个节点处理一项单一主要工作,比如Data节点主要处理大数据工作,Disk节点负责存储操作,Work节点执行分布式计算工作,Build节点处理数据和资源的重组工作,Call节点管理分布计算业务的调度处理。​

第三个是命令名称。在Laxcus集群中,命令相当于赋于业务一个可识别的工作身份,类似于用户名称,通过命令名称,可以快速识别用户执行的每一项操作,同时,根据命令名称,可以进行有针对性的计费工作。这也是Laxcus赋予计费的一项特权。​

第四个是迭代次数。迭代就是指命令在Laxcus集群中执行的工作次数,因为Laxcus集群上的计算工作不一定只局限于某一个节点,很多时候会分散到不同的节点上去执行,根据迭代次数,我们可以给计费系统增加多一个判断选项。​

第五个是服务号。服务号其实包括两个参数,根据图片上的显示,前面是分配给命令的ID,这个ID具有唯一性,在分布计算启动时,由运行环境动态生成。并且在随后的计算过程中,会分配给关联的子命令,这样命令和子命令之间,就形成一个联动的整体,完成一项巨复杂的分布式计算工作,并且能够在界面上显示出来,供用户查阅和识别。服务器的第二个参数是它的执行编号,编号顺序是从1开始,然后一直无限延伸下去,直到结束。越复杂的计算工作,执行编号会越大。为了方便开发者理解,这里显示的编号都很小,最大的编号是3,也就示意着只执行了3次分布计算工作。​

第六和第七是计算工作的开始和结束时间,它与命令中的Begin、End参数对应。这个非常好理解,两个时间都精确到毫秒级别,就不多解释了。​

第八个是运行时间,也就是结束时间减去开始时间的差值。通过运行时间,用户再结合自己的资源计费标准,就可以得到一个消费额度。这个工作将由开发者来完成。​

第九个是迭代时间。这个不太好理解,在这里需要多说明一下。在Laxcus分布式操作系统,所有的分布式计算工作都是由调度器来组织实施和管理。Laxcus调度器类似超算上普遍使用的SLURM,或者其它调度工具。Laxcus调度器每执行一次调度,会消耗一定的CPU、线程、时间。迭代时间,就是Laxcus调度器为每项分布计算工作调配资源消耗的时间总和,这个时间属于运行时间的一部分,但是它和运行时间又不太一样。实际上,计算工作时间,就是等于运行时间减去调度时间。​

第十和第十一项是网络IO在接收和发送数据产生和消耗的流量。这个计费系统需要又一项重要参数,根据它们,计费系统可以精确计算每一笔计算业务,得出相应的消耗额度。​

第十二项是优先级。在Laxcus分布式操作系统,计算业务可以定制不同的优先级,高优先级的计算业务,总是优先被执行。也就是说,一个计算环境中,高优先级的计算业务,被系统优先赋予计算资源,而低优先级的计算业务,总是在高优先级的计算业务结束后,才能获得资源使用权。目前Laxcus集群对用户计算业务,共分有四次优先权限,分别是:Max、Normal、Mini、None。默认情况下,所有计算业务都是None状态,即不设置优先级,这样系统会给所有用户,按照时间顺序平均分配计算资源。用户如果需要优先获得使用计算机资源的特权,那么可以联系系统管理员,这是由它负责管理的权限之一。​

如果用户没有太复杂的计费要求,通过以上计费参数,再结合DSDK提供的API接口,一个基本的计算系统就能生成的。​

根据一个开发者的经历,如果开发人员在熟悉Laxcus分布式操作系统和DSDK编程的情况下,设计开发一个基本的计费系统,也就是两三天的时间。​

下一篇我将详细介绍如何使用DSDK中的API,在Laxcus分布式操作系统上,设计一套简单的计费系统。今天的介绍就到这里,有兴趣的读者可以继续关注我的内容。​


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK