商用库部分系统服务培训.doc
《商用库部分系统服务培训.doc》由会员分享,可在线阅读,更多相关《商用库部分系统服务培训.doc(22页珍藏版)》请在三一办公上搜索。
1、商用库部分系统培训国电南瑞科技股份有限公司电网控制分公司新系统平台开发组2005年01月目录引言3一. 历史数据服务的定义以及在新系统中的定位4二历史数据服务包含的内容和相应的分类8三历史数据服务和数据库服务器的联接方式10四数据复制与同步服务的实现方式12五新系统中1+N功能的实现机制15六数据库服务器的异常处理和切换机制16七历史数据采样简介18八缓存机制以及缓存目录20九数据追捕的作用以及工作流程21十其他服务211.模型更新服务212.直接SQL服务213历史数据查询以及统计服务224历史数据修改服务225商用库告警服务22引言在新一代电力调度自动化系统的统一支撑平台中,历史数据服务作
2、为数据库管理系统的重要组成部分,扮演着重要的角色。这些服务和其它各类服务之间的一个最重要的区别就是它们需要直接和商用数据库进行联接并交换数据,要注意的是这些服务的运行往往需要数据库(ORACLE、SYBASE等)客户端动态库支持。由于读写商用数据库的实质是磁盘文件的I/O操作,在三层体系结构中还需要通过网络进行访问,其速度和实时系统有着数量级上的差别,所以对于历史数据服务来说,首先需要解决的是相对慢的读写速度和系统连续不断读写需求(如高频率采样、画面上的不间断查询)之间的矛盾,确保商用数据库的操作不会成为整个系统正常运转的瓶颈。另外,由于系统中存在着冗余配置的数据库服务器,包括主备数据库服务器
3、、镜像服务器、灾备服务器以及在安全隔离区以外的WEB服务器等。系统需要保证在各种配置和各种情况下数据库服务器之间数据的同步和一致,因此,数据的复制和同步机制变得非常重要。再者,考虑到调度自动化系统的高可靠性要求,系统不仅在正常情况下能够高效处理数据,还必须具备在恶劣的外部环境下确保可靠运行。例如,在数据库损坏或者网络异常中断的情况下如何保证系统还能保持大部分的功能不受影响,在切换的过程中如何保证数据没有丢失等等。因此,数据库服务器以及相关的应用服务器的异常处理和切换机制也是新系统平台中十分关注并且需要很好解决的问题。一. 历史数据服务的定义以及在新系统中的定位在新系统的统一平台中,十分强调服务
4、的概念。所谓服务(SERVANT),也就是一个或者一组运行在相关服务器上的后台进程(多线程),它们为其它的各个客户进程提供数据的查询、更新以及应用逻辑的处理,使得数据的处理能够集中在服务器上,客户端只要关注自己的人机交互以及某些应用逻辑。这同时也是新系统C/S/S结构的要求。在新系统的平台设计中,存在着众多的服务。例如,下装服务、数据更新服务、查询服务、任务管理服务、告警服务、系统配置服务、日志管理服务、历史数据采样服务等等。在这些众多的服务当中,有一类服务需要直接和商用数据库打交道,如下装、数据更新、查询、历史数据采样等(实际上,在商用库部分实现中,诸如历史数据采样等的服务我们并不划分在历史
5、数据服务中,以后的篇幅中我们会逐步阐述其中的原因)。我们将所有和商用数据库打交道的服务以及支持商用数据库之间复制和同步的服务统称为历史数据服务。那么,在整个新系统的体系当中,历史数据服务究竟处于什么位置,完成什么样的功能呢?在回答这个问题之前,我们先要阐明几个和C/S/S结构有关的概念。所谓C/S/S结构,简单地说,指的是系统硬件和软件的三层体系结构。一方面是将整个系统的结点划分为客户机、应用服务器和数据库服务器三个层次,另一方面是将所有的软件划分为客户应用软件、应用服务软件和数据库管理软件三个层次。其中,客户应用软件主要处理人机交互以及某些应用逻辑;应用服务软件完成大部分的应用逻辑处理以及和
6、数据库的交互;数据库管理软件完成数据的存储、组织和管理。具体应用到我们的新一代调度自动化系统中,上述所有的那些服务在物理上就应该驻留在应用服务器当中。结合新系统的体系结构设计方案,应用服务器又可以分为SCADA应用服务器、PAS应用服务器、前置应用服务器等,根据每个服务的不同性质,将这些服务分布在各个服务器结点当中,相互配合、协调来完成整个系统的功能。那么,我们提到的历史数据服务应该位于哪个应用服务器上呢?为了解答这个问题,我们需要将各种类型的服务器进行一些概念上的定义和明确。这些术语贯串了整个设计方案。 数据库服务器安装了具体商用数据库(ORACLE)的服务器结点。 应用服务器专门负责处理应
7、用或者业务逻辑的服务器,其上运行着众多的服务进程。但是,这些进程不和商用数据库直接联系。 历史数据服务器专门负责处理和商用数据库直接交换数据的服务器,其上运行着我们的历史数据服务进程。必须指出,所谓的应用服务器和历史数据服务器都是逻辑上的概念,其逻辑划分是以服务的性质来决定的,并不是一个系统中必须在物理上配置这些独立的硬件。也就是说,应用服务器完全可以和历史数据服务器共存于一个物理结点中,或者,三种服务器都共存于一个物理结点中。但是,在逻辑上,特别是软件的逻辑划分上我们采用这些术语,以方便整个方案的阐述,不致引起概念的混淆。现在,我们可以比较明确地回答上面遗留的问题了。历史数据服务在逻辑上分布
8、于历史数据服务器当中(不得不再次强调历史数据服务器是一个逻辑概念),它们主要完成和商用数据库直接交换数据的功能,其结果(数据的查询和更新)被其它服务进程或者客户应用进程引用。为什么要单独将历史数据服务以及历史数据服务器划分为一个逻辑上的概念呢?其一,这主要是为了解决在引言部分提出来的第一个问题,即商用数据库相对实时系统较慢的处理速度不能成为整个系统正常运转的瓶颈。例如,在很多调度系统中,包括现在的OPEN2000系统,历史数据采样进程在一个时间周期内(通常是5秒),既要从实时库中读取所有需要采样的遥测的数据和状态值,又要将这些数据拼接成相应的SQL并在数据库中执行。在数据量较大或者突发紧急事件
9、(CPU负荷短暂地升高)的情况下,这些涉及到磁盘I/O操作的SQL执行根本就来不及处理,以至于会经常造成漏掉采样点的情形。为了避免这种情况,我们需要将SQL执行的部分单独提取出来作为一个服务,使得采样服务专心处理实时数据的读取(在内存中处理),而不至于因为SQL的执行速度慢导致漏掉下一个采样周期。这也是前面提到历史数据采样服务不被划分在历史数据服务中的最重要的原因。其二,由于系统中分布着各种应用服务器(SCADA,PAS,前置等),出于效率上的考虑(主要是尽量避免从网络上读取实时数据),一些服务进程会同时分布于各台应用服务器上。同样以采样为例,新系统中采样服务是作为公用服务提供给各个应用使用,
10、也就是每个应用都拥有自己的数据采样服务。由于不同应用在物理上可能的不同分布,所以采样服务也会同时分布于各个应用服务器中。如果不将其中的SQL执行部分划分出来,则势必在每个应用服务器上都需要相应的商用数据库客户端软件。这样,和我们的C/S/S结构就存在一些冲突,同时也会潜在地增加系统的成本。其三,这样的划分有助于简化数据库服务器的复制、同步、异常以及切换时的处理机制。在考虑上述可靠性要求的时候,我们的视线只要集中于那些直接和商用数据库打交道的服务进程,也就是我们的历史数据服务。这样,可以对历史数据服务采用统一的机制来解决这些问题。将来增加其它的服务或者应用进程时,只需要将和数据库相关的部分提交给
11、历史数据服务来处理,而无须关心数据库服务器的诸多可靠性要求。图1表示了各种服务器和相应的服务在整个系统中的分布。图2表示了各种服务器以及客户机在数据处理上的层次关系。图1 数据库服务器、历史数据服务器、应用服务器以及各种服务在系统中的分布图2 各种服务器以及客户机在数据处理上的层次关系二历史数据服务包含的内容和相应的分类从前面给出的定义可以看出,所有和商用数据库直接进行数据交换以及支持数据库服务器的复制和同步的服务都属于历史数据服务。所以,历史数据服务实质上是一个服务包。这个包中拥有下列服务进程: db_modify_server 模型更新服务提供客户端或者应用进程通过约定的接口进行数据库更新
12、操作的服务。该服务的特点是调用方需要立即知道执行的结果,并且需要同步更新每个应用服务器上的实时数据库。 sql_sp_server 直接SQL以及存储过程服务提供客户端或者应用进程通过直接SQL语句或者执行存储过程来进行数据库更新操作的服务。该服务的特点是调用方需要立即知道执行的结果,但是无需同步更新实时数据库。 db_commit 数据提交服务提供给一些需要更新商用数据库数据的服务进程(如采样、告警登录等)提交各自形成的SQL命令的服务。该服务的特点是调用方并不等待(或者说不关心)SQL命令执行的结果,但是存在着时序相关和时序无关两种类型。基于效率的和并行操作的考虑,该服务其实包含2个进程。
13、db_commit sample(采样)db_commit scada(除采样外的其它数据) download_server 数据下装服务提供将商用数据库的数据下装到实时数据库的服务。该服务的特点是没有数据库更新操作,本质上属于查询操作。 query_sample_server历史数据查询统计类服务提供客户端或者应用进程进行历史数据查询以及统计的服务。该服务的特点也是没有数据库更新操作。 db_replicate 复制处理服务所有上述这些服务进程并不直接同步其它的数据库服务器,而是统一通过调用复制动态库来完成上述工作。该动态库的特点是并不直接和数据库打交道,仅仅将数据复制请求写入复制请求文件队
14、列。然后再由db_replicate程序处理相应的文件队列,并对远程数据库服务器进行实际的数据复制和同步工作。因此针对系统中的每一个数据库服务器,都有一个db_replicate服务进程与之对应。从上面的分析可以看出,虽然同属于历史数据服务,但是各个不同的服务完成不同的功能,并且具有不同的特点。而这些特点决定了其在数据提交、复制以及后面要讨论的数据库服务器切换过程中的机制会有所不同。为了方便阐述,我们根据它们不同的特点将这些服务划分为以下五类: 查询类服务包括download_server,数据查询和数据统计服务。 需要知道执行结果的数据更新类服务,简称为更新类服务包括db_modify_se
15、rver,sql_sp_server两个服务,本质上是时序相关的。 时序相关的数据提交服务,简称相关提交类服务包括和时序相关的数据提交服务。如发生遥信变位后,将开关状态写入开关表中,这种数据提交操作无论在复制还是切换过程中都有着严格的时间顺序要求,否则将可能产生错误的结果。 时序无关的数据提交服务,简称无关提交类服务包括和时序无关的数据提交服务。如采样或者事件登录,由于形成的SQL命令中本身带有时标,所以在复制或者切换过程中无所谓执行的先后顺序。 复制类服务包括db_replicate服务进程,负责数据复制和同步工作。在下面的篇幅中,我们将使用以上的分类方法和对应的术语。三历史数据服务和数据库
16、服务器的联接方式前面提到,所谓历史数据服务,都是需要直接和商用数据库交换数据的服务进程。那么,在明确了历史数据服务的定义以及其包括的内容以后,我们需要关注一下它们和数据库服务器的联接方式。根据系统的不同规模和用户的不同要求,系统中存在各种各样的数据库服务器。一般说来,我们可以将系统中的数据库服务器分为以下几种类型:主数据库服务器、备数据库服务器、灾难备份数据库服务器、镜像数据库服务器以及WEB数据库服务器。其中,主备数据库服务器是系统运转的核心数据存储结点,其它的数据库服务器都通过系统的复制机制保持同步。其实,主备数据库服务器可以不止两台,可以是多台,而且并不是传统的主备之分,只有优先级之设定
17、,个中理由将在后续篇幅中逐步阐明。之所以称为主备数据库服务器,主要是为了叙述上的方便。每个历史数据服务进程根据不同的性质都需要建立和上述的各种数据库服务器的联接,才能和数据库进行通讯和交换数据。基于系统的三层架构,这些服务和数据库的联接只能通过网络方式进行,即通过指定主机、端口号以及数据库实例和特定的数据库建立联接。由于我们在系统中采用双网的连接方式,所以我们首先要考虑和解决的就是如何克服单网卡故障带来的数据库联接的中断问题。幸运的是,在新系统的平台设计中,网络管理服务恰好提供了上述问题的解决方案。该服务(net_pathing)的一个重要功能就是能够完全屏蔽结点的多个网卡地址,提供给其它应用
18、和服务进程的是一个该结点的虚拟地址。对于系统中所有的应用和服务进程来说,面对的只是一个地址,对于目标结点来说,只有网络正常和网络中断两种状态,而无须考虑双网(或者多网)的切换。这样,在和数据库服务器的联接中我们完全不需要考虑单网卡故障带来的中断和切换问题。接下来,我们需要关注每个具体的历史数据服务和前面提到的各种数据库服务器的联接方式。经过分析我们发现,由于系统的主备数据库服务器是数据复制的源头,所以除了db_replicate进程以外,其它所有的历史数据服务进程都只需要和主数据库服务器通讯。而db_replicate需要和所有的数据库服务器相连(WEB的情况比较特殊,因为其在安全隔离区之外,
19、在后面的数据复制与同步机制中有详细讨论)。另外,需要指出的是,复制动态库不和任何数据库服务器联接。在系统正常运转的情况下,所有的历史数据服务进程(无论是在主历史数据服务器还是备历史数据服务器上)都和当前的主数据库服务器建立联接并交换数据,备数据库服务器的数据通过复制机制进行同步。当主数据库服务器的联接发生中断,这些进程重新建立和备数据库服务器的联接,同时备升为主,并保持主服务器状态。这样的处理方式使得历史数据服务进程的数据流程比较简明、清晰,并且可以有效地克服交叉故障的情况。在以后的章节里将详细阐述各种情况下数据库服务器的复制、异常和切换机制。图3表示了各历史数据服务进程和各个数据库服务器的联
20、接方式。其中,虚线代表了在备数据库服务器值班的情况下的联接。图3 历史数据服务进程和数据库服务器的联接方式四数据复制与同步服务的实现方式数据的复制与同步,也就是各个数据库服务器中的数据保持一致,一直是困扰着国内各EMS和DMS厂商的一个大问题。这个问题如果不能真正解决好,系统的可靠性也就会相应地大打折扣。因此,在新系统的整体设计,特别是数据库系统的设计中,这个问题得到了我们特别的关注。我们一直在寻求一些比较成功和可靠的商业解决方案。不幸的是,由于电力调度系统具有连续运行、实时、数据量大、切换速度要求很高以及自身特殊的安全性规定等特点,使得目前我们还没有找到合适的产品。主要的原因有以下三点: 这
21、些商业解决方案基本上都必须通过数据库日志来实现。而我们的系统由于数据量非常大,一般不能保存这些日志,否则数据库的日志会很快占满整个数据库空间。这也是我们为什么需要选择自动清除日志的数据库选项(SYBASE),或者必须运行在非归档模式(ORACLE)下的根本原因。 电力调度系统要求的切换速度很高,一般的商业解决方案无法达到这些时间指标。 对于和调度系统不在一个安全隔离区的WEB数据库来说,中间隔着一个电力系统专用物理隔离设备,该隔离装置只能允许TCP/IP的单向访问。这直接造成了所有的商业软件无法得到应用。因此,在新系统的设计中,我们只能自己来实现数据的复制和同步机制。首先,我们需要明确数据复制
22、的概念和范围。我们所说的数据复制与同步,是指所有系统中涵盖的各种数据库服务器中商用数据库里的数据保持实时的同步。这些数据库服务器包括系统的主备数据库服务器、灾备数据库服务器、镜像数据库服务器以及WEB数据库服务器等,正如我们前面已经提到的那样;另外,这种复制和同步在系统的主备数据库服务器之间是双向的,而对于其它的数据库服务器而言是单向的,即只能由主备数据库服务器向其它的服务器同步和复制数据,这些服务器只是起到一个备份或者只读访问的功能;再有,我们需要保证在各种恶劣的情况下依然能够维持数据的一致。接下来,我们阐述在本设计方案中数据复制和同步的实现方式。前面我们已经介绍了在历史数据服务器(逻辑概念
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 商用 部分 系统 服务 培训

链接地址:https://www.31ppt.com/p-3702738.html