加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

弹性计算云Eucalyptus代码(start with A)

发布时间:2020-12-17 02:08:45 所属栏目:安全 来源:网络整理
导读:A Eucalyptus cloud setup consists of three types of components -- the cloud controller,the cluster controller(s),and the node controller(s). The cloud controller is a Java program that,in addition to high-level resource scheduling and syst

A Eucalyptus cloud setup consists of three types of components -- the cloud controller,the cluster controller(s),and the node controller(s). The cloud controller is a Java program that,in addition to high-level resource scheduling and system accounting,offers a Web services interface and a Web interface to the outside world. Cluster controller and node controller are written in C and deployed as Web services inside Apache.

?

Eucalyptus使用了Axis2,啥是Axis2或者说Axis2有啥用。Axis就是快速发布web service的工具,提供了SOAP协议的封装,方便于client端于webservice通信。

log机制使用了log4j。

使用X509认证。

?

class AbstractIsomorph,注释为MappedSuperclass,个人认为是一个保存用户信息和状态的抽象类。

class AbstractKeyStore,这个抽象类很有意思,其静态方法调用了子类的构造函数。并且子类GenericKeyStore是其内部类。感觉设计得不好。其意图是让这个类含有几个抽象的方法,但是这几个抽象方法有一个默认的实现。AbstractKeyStore主要是为了添加证书查找证书,并查找用户名对应的password来认证。并且将alias,cert添加到某一文件中。并将此alias对应的password放入到keystore中。

class AbstractNamedRegistry,这个抽象类将存放、更新某种继承自HasName接口的对象的两种状态。一种是active,一种是disable,这两种状态放在ConcurrentNavigableMap中,并且以对象的名作为key,value就是对象自身。

class AbstractOperation,这个抽象类是操作的抽象,并认为凡是操作就应该有request和reply,并且request和reply继承自EucalyptusMessage

class AccessDeniedException,就是一个禁止访问的异常,继承自EucalyptusCloudException。

class Address,这是一个address类(废话),存放地址id,地址名(?? 个人认为可能是真实地址),cluster的地址,使用者的用户名,实例地址等(其实就是一个描述实例所需要的属性。)并使用高性能锁ReentrantReadWriteLock加以控制。加锁是为了将实例assign出去,或者收回。不过我个人觉得ReentrantReadWriteLock可能使用的有问题。以为我看到函数release()中有this.canHas.writeLock().lock();,并在之后调用了unassign()方法,而unassign()方法中也有this.canHas.writeLock().lock();...难道可以对同一写锁加两次lock?不过我没有研究过ReentrantReadWriteLock。

class Addresses, 这个类继承了 AbstractNamedRegistry, 并且可以填入Address .这就是说,这个类是用来active,disable一个address的。另外它是用来单实例模式,也就是整个cloud中只有这一份实例。(这里会不会崩溃后无法恢复的问题? )

class AddressManager,继承了org.mule.api.lifecycle.Startable类,Startable可能是处理生命周期吧 ..不过这个类是和地址相关的,是用来分配,释放,将address和vm关联起来的类。

class AddressUpdateCallback 继承了QueuedEventCallback并且实现了Runnable,也就是说它可以作为一个线程类。另外它sleep的时间好像有点过长了5*1000.这个类的作用好像是将用户名封装到msg中,然后发送给cluster队列来处理。之后睡一个5*1000秒,然后再醒来看看是否有cluster的回复,然后根据回复设置实例的地址。这里采用线程,是因为需要一直监督address的更新。可以看成是守护线程。

?

?

add_key.pl,这个是perl文件,看不太明白,应该是加入了ssh的public key.不过中间为啥使用loop device,并且将图片加载到loop device上就不得而知了。后来发现,这里image的含义不是图片的意思,而是镜像,也就是将镜像加载到loop device上。

add_key~add_wsdllocation.pl都是perl写成的。

?

class Admin 是用来创建EucalyptusMessage的类。

admin.xml 用来配置www的conf的。
interface Allocator ,这接口用来分配的,根据String requestId,String userName,String vmtype,int min,int max,SortedSet<ClusterNodeState> clusters 来分配资源,会抛出NotEnoughResourcesAvailable异常

class AlreadyExistsException 继承了RuntimeException

class AOEManager 继承了StorageExportManager,是用来导出存储容量的?

interface AppMessages 继承了Messages,从其函数中看,是一个与页面控件事件相关的类。

class AssignAddressCallback ,分配地址的cluster,发送回消息后就会将network configure更新。

class AttachedVolumeInfo 这是一个将附加逻辑磁盘id,逻辑磁盘名,实例id,设备名,状态和添加时间合成的类。如果其为一行,那么一张表就是AttachedVolumes

interface Authenticator 是将X509证书和EucalyptusMessage中信息来生成是否授权的Msg的接口。

aws-base.xml~aws-zones.xml 是将java类映射为XML,是否为Hibernate就不得而知了。

Axis2.xml~class AxisHttpResponseImpl 可以认为是和Axis2打交道的东西。可以以后再研究下。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读