DDS开发规范的一些理解_第1页
DDS开发规范的一些理解_第2页
DDS开发规范的一些理解_第3页
DDS开发规范的一些理解_第4页
DDS开发规范的一些理解_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.7发现配置在DDS实现中,参与者参与到应用程序中,必须发现其他参与者。DDS使用了domain(域)给数据当DDS应用程序写入,参与者链接到域,同时需要确保他们的配置允许每一个参与者来发现其他统一个域的参与者。DDS提供了一个中心发现方法和点对点发现方法来完成同一个域中的参与者。中心模式使用一个独立的服务DCPSInfoRepo服务,点对点模式使用DDS-RTPS发现协议标准来达到无中心的发现。使用任何一种方法的应用程序能够使用多维配置属性来满足实现需求。每一种方法都提供了默认配置,如果没有通过命令行或者配置文件进行配置的话。如何细化配置达到更好的发现性能。使用多个DCPSInfoRepo服务,或者需要使用DDS-RTPS来满足互操作要求,为了达到这个目的,可以联合使用domain repository和rtps_discovery。7.3.1域配置OpenDDS配置文件使用domain部分来配置一个或者多个发现域,每一个域在同一个文件中指定一个发现配置。OpenDDS应用程序可以使用基于DCPSInfoRepo服务的中心发现模式,或者基于DDS-RTPS发现协议标准的点对点发现方法,或者这两种方法的结合。DCPSInfoRepo方法对应的类型是rtps_discovery,一个单独域只能使用一种类型的发现。看7.3.2和7.3.3查看更多repository和rtps_discovery的配置属性。一个域可以跟一个整数联系起来,配置文件可以在两种方法支持他。第一种方法是简单的是例子值和域联系起来,例如:domain/1DiscoveryConfig=DiscoveryConfig1(more properties.)我们的例子使用域关键字来标识域,这个关键字是/1.斜线后面的数值是和域连系的整数值。另一个可选的方法是使用更加容易识别的名字,增加DomainId属性,同时给它赋值。domain/booksDomainId=1DiscoveryConfig=DiscoveryConfig1这个域使用books名字,DomainId赋值1,DDS应用需要这个数值来读取配置。多个域实例可以在一个配置文件中使用这种方式进行区分。一旦一个或者多个域实例已经确定,这个域的发现属性必须确定。在我们以上的例子中,属性DiscoveryConfig必须指向另外还有发现属性的section,或者指定发现的内置变量(DEFAULT_REPO或者DEFAULT_RTPS)例子名字是DiscoveryConfig1。例子名字必须和repository orrtps_discovery联系。我们例子的扩展:domain/1DiscoveryConfig=DiscoveryConfig1repository/DiscoveryConfig1RepositoryIor=:12345在这个例子中我们的域指向repository,这用来OpenDDS DCPSInfoRepo服务。可以看7.3.2.或者 有一些情况,当特定域并没有在配置文件中指定。例如,如果一个OpenDDS应用将域ID3分给他的参与者,上面的例子不支持域ID为3的配置,下面可以用:commonDCPSInfoRepo=:12345DCPSDefaultDiscovery=DEFAULT_REPOdomain/1DiscoveryConfig=DiscoveryConfig1repository/DiscoveryConfig1RepositoryIor=:12345DCPSDefaultDiscovery属性告诉应用如果参与者没有指定域ID的话就给他指定DEFAULT_REPO发现类型,意思是使用DCPSInfoRepo服务,这个DCPSInfoRepo服务可以在:12345找到。表7-2中,DCPSDefaultDiscovery属性还有两个数值可以用。DEFAULT_RTPS连续值通知应用来告诉在文件中没有域配置的参与者使用RTPS发现来发现参与者。DCPSSefaultiscovery属性的最后选项告诉应用来应用使用其中一种已经定义的配置作为默认配置提供给那些没有在文件中定义的参与域。这里有一个例子:commonDCPSDefaultDiscovery=DiscoveryConfig2domain/1DiscoveryConfig=DiscoveryConfig1repository/DiscoveryConfig1RepositoryIor=:12345domain/2DiscoveryConfig=DiscoveryConfig2repository/DiscoveryConfig2RepositoryIor=:12345通过在common中增加DCPSDefaultiscovery属性,那些没有分配到域id的参与者将使用DiscoveryConfig2的配置。更多关于RTPS发现的类似配置参看7.3.3。这是domain可用的属性。7.3.2配置应用程序的DCPSInfoRepo一个OpenDDS DCPSInfoRepo是一个用来参与者发现的本地或者远程节点。配置参与者应该如何发现DCPSInfoRepo是本节的目的。假设DCPSInfoRepo服务已经在:12345上启动。应用程序可以是他们的OpenDDS参与者通过命令行选项或者配置文件发现这个服务。在我们2.1.7节的“Running the Example”我们使用命令行参数来发现DCPSInfoRepo服务:Publisher DCPSInfoRepo file:/repo.ior这里假设DCPSInfoRepo用下面语句启动:$DDS_ROOT/bin/DCPSInfoRepo o repo.iorDCPSInfoRepo服务在这个文件中产生他的位置对象信息,参与者需要读取这个文件来进行连接。基于IORs的文件的使用来寻找发现服务,然而在大多数环境中无效,所以应用程序使用命令行选项来拿简单的指定运行DCPSInfoRepo服务的主机和端口:Publisher DCPSInfoRepo :12345上面假设DCPSInfoRepo已经在主机()上启动:$DDS_ROOT/bin/DCPSInfoRepo ORBListenEndpoints iiop:/:12345如果应用需要对另外的设置使用配置文件,应该讲发现内容放到文件中,来降低命令行的复杂性。配置文件的使用同时能够使多个应用共享通用的OpenDDS配置。上面的例子可以移动到配置文件的common部分:commonDCPSInfoRepo=:12345命令行将变成如下:publisher DCPSInfoRepo pub.ini我们再来看7.3.1中的例子,配置文件可以指定域和与这些域相关联的发现配置。这种情况下RepositoryIor属性将和命令行表达同一个信息,即指定一个运行的DCPSInfoRepo服务。两个域的配置如下:domain/1DiscoveryConfig=DiscoveryConfig1repository/DiscoveryConfig1RepositoryIor=:12345domain/2DiscoveryConfig=DiscoveryConfig2repository/DiscoveryConfig2RepositoryIor=:12345domain/1下的DiscoveryConfig属性是域1的所有参与者使用DiscoveryConfig1定义的配置。这指向了reposity部分,RepositoryIor的值为:12345。最终,当定义了DCPSInfoRepo的DiscoveryConfig属性,还可以包含DEFAULT_REPO。commonDCPSInfoRepo=localhost:12345domain/1DiscoveryConfig=DiscoveryConfig1repository/DiscoveryConfig1RepositoryIor=:12345domain/2DiscoveryConfig=DEFAULT_REPO这种情况下,域2的参与者将引用DCPSInfoRepo的发现属性,这个在common中已经定义。如果DCPSInfoRepo的值没有在common中提供,将会在命令行中当做一个参数提供:publisher -DCPSInfoRepo localhost:12345 -DCPSConfigFile pub.ini这样设定了DCPSInfoRepo的值,如果参与者在pub.ini文件中读到了DEFAULT_REPO,这有一个值。如果DCPSInfoRepo没有在配置文件和命令行中定义,那么他的默认值是file:/repo.ior。如前所述,这在应用环境中不能很有效,所以需要通过其中一种方法设定DCPSInfoRepo的值。 配置多个DCPSInfoRepo实例一个DDS程序中的DDS实体可以关联多个DCPS信息库(DCPSInfoRepo)。库信息和域关联能够使用配置文件或者通过应用程序API进行配置。内部默认、命令行参数和配置文件选项会起作用,就像现有应用一样,这些应用不想使用多DCPSInfoRepo关联。参考图7-2,一个进行使用多个DCPSInfoRepo库。Process A和B都是配置了进行相互通信,并且在InfoRepo_1中发现其他。这是基本发现的简单应用。然而,随着特定域(Domain 1)的使用,上下文的额外层被部署。DDS实体(data readers/data writers)被限制在同一个域中和其他实体通信。者提供了一个分割交通的有效方式。Process C和D配置了相同的方式,运行在域2中,使用InfoRepo_2。当有一个应用进行需要使用多个域和不同的发现服务时就遇到了问题。这就是例子中的Process E。它有两个订阅者,一个订阅者从InfoRepo_1发布,一个从InfoRepo_2。可以从配置文件configE.ini中查看如何这样工作。下面是配置文件,只展示发现部分,不显示传输内容。configE.inidomain/1DiscoveryConfig=DiscoveryConfig1repository/DiscoveryConfig1RepositoryIor=:12345domain/2DiscoveryConfig=DiscoveryConfig2repository/DiscoveryConfig2RepositoryIor=:12345Process E读到这个配置文件会发现多个domian部分。每一个域都有一个整数和一个定义的DiscoveryConfig。对第一个域(domain/1),DiscoveryConfig属性是用户定义的DiscoveryConfig1值。这个属性使得OpenDDS实例去寻找repository 或者 rtps_discovery这样的标示和DiscoveryConfig1。在我们的例子中,找到了repository/DiscoveryConfig1,这就是域domain/1的发现配置。这部分告诉我们这个域使用的DCPSInfoRepo的地址可以通过RepositoryIor属性得到。这里他是,端口12345。RepositoryIor值可以是一个完整的CORBA IOR或者简单主机:端口。第二个域名字为domain/2,相应的库部分repository/DiscoveryConfig2标示第二个域的配置和InfoRepo_2库。在一个配置文件中可以有任意数量的域部分或者库。没有详细配置的域都被关联到默认发现配置上。每个DCPSInfoRepo可以连接到多个域,然而一个域不能共享给多个DCPSInfoRepo。这里是repository部分的合法属性。7.3.3 DDS-RTPS发现配置OMG DDS-RTPS规范给了下面例子来说明OpenDDS使用的发现方法,还有两种不同的协议来完成发现操作。引用8.5.1节如下:RTPS把发现协议划分为两个独立协议1、参与者发现协议2、终端发现协议参与者发现协议(PDP)说明了在一个网络中参与者如何发现彼此。一旦两个参与者发现彼此,他们在终端使用终端发现协议(EDP)来交换信息。排除这种因果关系,两种协议都是成熟的这节讨论的配置选项允许用户指定属性值来改变简单参与者发现协议(SPDP)的行为和检点终端发现协议(SEDP)默认设置。DDS-RTPS的发现配置可以用简单的简单基本发现来完成,或者是用在7.3.1中的域。简单配置通过在我们的例子配置文件的common中指定属性来实现。configE.ini (for RTPS)commonDCPSDefaultDiscovery=DEFAULT_RTPS所有DDS-RTPS发现的默认值都是用这种格式采用的。这个基本配置的不同时指定一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论