BR112014010370B1 - Aparelho e método para transferir processos detectores de evento - Google Patents

Aparelho e método para transferir processos detectores de evento Download PDF

Info

Publication number
BR112014010370B1
BR112014010370B1 BR112014010370-4A BR112014010370A BR112014010370B1 BR 112014010370 B1 BR112014010370 B1 BR 112014010370B1 BR 112014010370 A BR112014010370 A BR 112014010370A BR 112014010370 B1 BR112014010370 B1 BR 112014010370B1
Authority
BR
Brazil
Prior art keywords
event
event detector
events
node
detector process
Prior art date
Application number
BR112014010370-4A
Other languages
English (en)
Other versions
BR112014010370A2 (pt
Inventor
Christopher Mutschler
Original Assignee
Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. filed Critical Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V.
Publication of BR112014010370A2 publication Critical patent/BR112014010370A2/pt
Publication of BR112014010370B1 publication Critical patent/BR112014010370B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

aparelho e método para transferir processos detectores de evento. a presente invenção refere-se a métodos (900) e aparelhos (800) transferindo um primeiro processo detector de evento de um primeiro nó (704-1) de um sistema de computação distribuída (300; 700) para um segundo processo detector de evento de um segundo nó (704-2) do sistema de computação distribuída (300; 700), o segundo nó (704-2) sendo diferente do primeiro nó (704-1). o aparelho (800) compreende o dispositivo (802) para copiar um conteúdo do processo do primeiro processo detector de evento para o segundo processo detector de evento, o dispositivo (804) para coordenar os eventos de entrada do primeiro processo detector de evento de modo que os eventos de entrada do primeiro processo detector de evento sejam processados em paralelo tanto no primeiro como no segundo processo detector de evento, e o dispositivo (806) para verificar se os eventos de entrada do primeiro processo detector de evento, os quais são processados em paralelo tanto no primeiro como no segundo processo detector de evento, levam a eventos de saída idênticos tanto no primeiro como no segundo processo detector de evento.

Description

[001] Concretizações da presente invenção geralmente se relacionam com redes de dados e, em particular, com aparelhos e métodos para transferir processos detectores de evento entre diferentes nós de um sistema de computação distribuído.
Antecedentes
[002] Redes de sensores, tais como, por exemplo, redes de sensores sem uso de fios, possuem uma grande gama de aplicações. Por exemplo, redes de sensores sem fios de várias tecnologias podem ser utilizadas para propósitos de localização, tal como localizar humanos e/ou outros objetos. Aqui, "localizar" significa a detecção ou a determinação de uma localização ou posição geográfica. Alguns sistemas especializados de localização ou de rastreamento de posição podem ser utilizados para localizar jogadores e outros objetos (por exemplo, uma bola) em eventos esportivos, tal como, por exemplo, futebol, futebol americano, rúgbi, tênis, etc.
[003] Com a utilização de dados agrupados de localização ou de posicionamento geográfico dos jogadores e/ou de uma bola, é possível derivar informação estatística relacionada com o evento esportivo como um todo, por exemplo, um jogo de futebol, ou relacionada com times ou jogadores individuais. Tais informações estatísticas derivadas podem ser interessantes por várias razões. Por um lado, existem vários interesses comerciais à medida que algumas estatísticas e sua análise podem ser de relevância particular para espectadores em um estádio e/ou em frente de um aparelho de televisão em casa. Por consequência, proporcionar algumas estatísticas pode criar mais interesse nos eventos esportivos. Por outro lado, dados estatísticos derivados a partir de dados brutos de posicionamento podem igualmente ser utili- zados para propósitos de treinamento. Aqui, um oponente e/ou o com-portamento do próprio time pode ser analisado bem como a performance e/ou a condição de saúde de jogadores individuais.
[004] Os sistemas de localização ou de rastreamento de posição mencionados acima podem ser baseados em várias tecnologias. Por exemplo, a informação de localização pode ser determinada baseada na avaliação de sinais de rádio sem uso de fios e/ou em campos magnéticos. Para este propósito, transmissores e/ou receptores, geralmentetambém denotados como sensores, podem ser colocados nos objetos individuais (por exemplo, jogador, bolar, etc.) a ser localizado pelo sistema. Dispositivos correspondentes de recepção e/ou de transmissão também podem ser montados em localizações predeterminadas ao redor de uma área geográfica de interesse, como, por exemplo, um campo de futebol. Uma avaliação de potências de sinal, de tempos de propagação de sinal, e/ou de fases de sinal, apenas para citar algu-mas alternativas técnicas possíveis, pode então levar a fluxos de dados de sensor da posição geográfica de jogadores individuais ou de objetos em diferentes momentos no tempo. Tipicamente, a amostra de dados de localização geográfica é associada com uma marca de tempo indicando em qual tempo um objeto estava localizado em qual posição geográfica. Com esta informação combinada, dados cinemáticos, como velocidade (rapidez), aceleração, etc., igualmente podem ser proporcionados em adição aos dados de localização compreendendo, por exemplo, coordenadas x, y e z. Subsequentemente, os dados de localização e cinemáticos distribuídos pelo sistema sensor de localização também serão referidos como dados de sensor (bruto).
[005] Em um exemplo particular de um sistema de rastreamento sem uso de fios, pessoas ou objetos podem ser equipados com transmissores minúsculos, os quais podem ser embutidos nos calçados, uniformes e bolas e cujos sinais são coletados por uma série de ante- nas colocadas ao redor da área sob observação. Unidades receptoras processam os sinais coletados e determinam seus Tempos de Chegada (ToA). Baseada em um cálculo das diferenças no atraso de propagação, cada posição de transmissor é então continuamente determinada. Em adição, uma rede de computadores integrada com o sistema de rastreamento sem uso de fios pode analisar a posição os dados de sensor de modo a detectar eventos específicos. Operando na banda de 2,4 GHz, o sistema de rastreamento é globalmente livre de licença.
[006] Baseado nos fluxos de dados bruto de sensores emitidos a partir do sistema de localização ou de rastreamento de posição, os assim chamados "eventos" podem ser detectados. Desse modo, um evento pode ser definido como sendo uma ocorrência instantânea de interesse em um ponto do tempo. Em geral, um evento está associado com uma alteração na distribuição de uma quantidade relacionada que pode ser percebida. Um evento pode ser um evento primitivo, o qual é diretamente baseado nos dados de sensores (dados cinemáticos) do sistema de rastreamento, ou um evento composto, o qual é baseado ao invés disso em outros eventos anteriormente detectados. Ou seja, um evento composto não é diretamente dependente de dados brutos de sensores, mas de outros eventos. Nas aplicações de jogo com bola, um evento pode, por exemplo, ser "jogador X chuta bola" ou "jogador X está de posse da bola". Eventos mais complicados, por exemplo, podem ser "impedimento" ou "falta".
[007] A detecção de eventos baseada nos fluxos subjacentes de dados de sensores criou interesse aumentado nas comunidades de base de dados e de sistemas distribuídos nos últimos anos. Uma grande gama e sempre crescente número de aplicações atuais, incluindoaplicações como monitoramento de rede, Negócios Eletrônicos, assistência médica, análise financeira e segurança ou supervisão de evento esportivo mencionada acima, contam com a habilidade em pro- cessar consultas através de fluxos de dados que de forma ideal assumem a forma de séries de eventos ordenadas no tempo. A detecção de evento denota o processamento totalmente automático de dados brutos de sensores e/ou de eventos sem a necessidade de intervenção humana, à medida que em várias aplicações a grande quantidade de dados de sensores fornecida e/ou de eventos não pode ser capturada ou processada mais por uma pessoa humana. Por exemplo, se variações de alta velocidade de jogadores ou de um objeto esportivo, por exemplo, uma bola, forem esperadas, os dados brutos de sensores (localização ou rastreamento de posição) têm que ser determinados em uma taxa de tas suficientemente alta pela rede de sensores (sem uso de fios) subjacente. Adicionalmente, se existir um grande número de jogadores e/ou de objetos (por exemplo, no futebol, existem 22 jogadores e uma bola) a ser rastreado, a quantidade de amostras geral de dados de localização geográfica e cinemáticos por segundo pode ser tornar proibitivamente alta, em particular com respeito aos requerimentos de processamento do evento em tempo real.
[008] Por consequência, mesmo se os fluxos de dados brutos dos sensores e/ou do evento forem analisados e sinalizados totalmente automaticamente, ainda podem existir muitas informações, as quais possivelmente estão longe de interesse em sua totalidade. No futuro, esse problema ficará pior à medida que mais e mais dispositivos serão equipados com sensores e com a possibilidade de proporcionar seus dados de sensores determinados para redes públicas como a Internet (por exemplo, dados de tempo e temperatura determinados pelos dispositivos sem uso de fios como smartphones). Por esta razão, a quantidade de dados de sensores a ser adicionalmente processada em alguns eventos e interesse irá crescer rapidamente. A detecção automá-tica de evento pode proporcionar solução para isso por tentar agregar dados brutos de sensores pedaço por pedaço e determinar eventos mais abstratos e interdependentes, os quais podem sem dúvida transferir mais informações do que os próprios dados bruto de sensores. Por exemplo, além dos exemplos relacionados com futebol mencionados acima, tais eventos determinados poderiam incluir "carro X está localizado no cruzamento Y" ou "congestionamento de trânsito na rota X".
[009] O problema que surge na detecção automática de evento é a capacidade computacional requerida para executar a detecção de evento em relação aos muitos fluxos paralelos de dados de sensores e/ou de evento - e tudo isto sob requerimento de processamento quase em tempo real. Este problema pode ser resolvido pela paralelização de detectores de evento, os quais podem, por exemplo, funcionar em diferentes nós de rede de uma rede de computadores, os quais podem, por exemplo, se comunicar via Ethernet. Desse modo, um detector de evento automaticamente extrai algum evento de interesse a partir de um fluxo de dados de evento ou de sensores de acordo com as especificações de evento de um usuário. Detectores de evento individuais podem ser distribuídos através de diferentes nós da rede de uma rede de dados, onde os diferentes detectores de evento se comunicam utilizando dados de eventos e/ou de sensores percorrendo através da rede utilizando diferentes rotas e ramificações da rede. Desse modo, os dados brutos de sensores e/ou de eventos podem ser transportados em pacotes de dados de acordo com algum protocolo de transporte, como, por exemplo, UDP (Protocolo de Datagrama do Usuário), TCP (Protocolo de Controle de Transmissão) / IP (Protocolo Internet), etc. Entretanto, este conceito causa novos problemas com respeito à carga computacional possivelmente não equilibrada entre diferentes nós da rede e com respeito à sincronização de fluxos de dados de evento dentro da rede. Sem contramedidas adequadas, as cargas computacionais dentre os diferentes nós da rede não são equilibradas e fluxos individuais de dados de sensores e/ou de eventos na rede não ficam sincronizados no tempo um com o outro, o que significa que eventos individuais podem alcançar um detector de evento fora de sua ordem temporal original e desse modo levar a falsos resultados detectados.
[0010] Vejamos um cenário ilustrativo de futebol, onde é suposto que vários detectores de evento paralelos operando automaticamente detectam um passe do jogador A para o jogador B. De modo a detectar o dito evento de "passe", a seguinte sequência precedente de eventos é requerida> "jogador A está de posse da bola", "jogador A chuta a bola", "bola deixa o jogador A", "bola chega próxima do jogador B", "jogador B chuta a bola".
[0011] A detecção de evento para o evento "jogador X chuta a bola" pode ser baseada na sequência de eventos "jogador X próximo da bola" e em um pico de aceleração da bola detectado. Existem as seguintes alternativas para configurar um detector de evento automático para o dito evento "jogador X chuta a bola".
[0012] Podemos aguardar pelos eventos individuais requeridos - um após o outro. Se tivermos visto todos os eventos requeridos na ordem (temporal) correta (aqui, quaisquer critérios de abortamento são desconsiderados para propósito de simplicidade), podemos dizer que vimos ou experimentamos um passe. Entretanto, para aplicações complexas, a detecção de todos os eventos requeridos não necessariamente acontece em um único nó da rede ou em uma única CPU (Unidade Central de Processamento) devido à paralelização de detectores de evento. Por esta razão, não é necessariamente garantido que eventos individuais requeridos alcancem o detector de evento na or- dem correta requerida. Por exemplo, isto pode ser devido à instabilidade da rede, à carga da CPU variante ou não equilibrada ou à carga aumentada da rede.
[0013] Por consequência, poderíamos tentar colocar os eventos em memória temporária e então pesquisar a memória temporária em relação ao padrão correto de evento. Mas, qual tamanho de memória temporária deve ser utilizado? Se dissermos que um passe tem que acontecer dentro de no máximo 5 segundos, teríamos que considerar eventos dentro de um período de tempo de no máximo 5 segundos após o primeiro evento relevante até que tivéssemos detectado o passe ou até que abortássemos. Entretanto, também é possível que o último evento relevante seja computacionalmente muito complexo, o que requer uma memória temporária adicional pequena. Mas, qual é o tamanho desta memória temporária adicional? E, qual é o tamanho da memória temporária relacionada com os detectores de evento composto que requer o evento de "passe" como um evento de entrada? Os atrasos na sinalização de evento são dependentes de toda a configuração do sistema / rede, isto é, da distribuição dos detectores de evento, bem como da carga da rede e da CPU. Nem a configuração final do sistema, nem o cenário de carga, podem ser previstos na hora da compilação.
[0014] A maior parte dos sistemas de detecção existentes não considera o atraso na sinalização do evento mencionado acima e/ou as questões de equilíbrio de carga, à medida que vários casos de processamento de evento ou de atraso de propagação não são relevantes. Entretanto, isto não é o caso particularmente para sistemas de detecção de evento altamente complexo em tempo real, tal como nos cenários financeiros ou de rastreamento de posição.
[0015] O exemplo seguinte relacionado com futebol exemplifica o problema de atraso do evento baseado em um cenário frequentemente requerido de detecção de evento de "impedimento", o qual é esquema-ticamente ilustrado na Fig. 1.
[0016] O jogador 100 passa a bola 110 em direção ao seu companheiro de equipe 120. Na hora verdadeira (real) do passe, isto é, na hora na qual a bola 10 experimenta uma oscilação ou pico de aceleração (veja a Fig. 1, esquerda), o jogador 120 está situado na posição de impedimento por poucos centímetros. Por consequência, o jogo teria que ser interrompido.
[0017] Entretanto, de modo a estar apto a distinguir entre um passe direto ou um drible do primeiro jogador 100, o passe a partir do primeiro jogador 100 para o segundo jogador 120 somente pode ser detectado quando a bola 120 realmente deixa o primeiro jogador 100. Devido a uma taxa de dados limitada dos dados de sensores, esta decisão de distinção pode ter um atraso "natural" adicional de pelo menos alguns milissegundos. Após este atraso natural, o segundo jogador 120 pode, entretanto, não estar mais na posição de impedimento (veja a Fig. 1, direita).
[0018] Aqui, apenas considerar a ordem temporal dos eventos participantes automaticamente gerados não é suficiente para tomar a decisão de impedimento. Além disso, eles têm que ser classificados. Não somente o tempo de cálculo do evento ou do atraso de propagação da rede é relevante, mas também variações causais em tempo real que têm que ser consideradas. A marca de tempo do evento de passe detectado tem que ser reinicializada para o passado, isto é, para o momento no qual a bola experimenta um pico de aceleração.
[0019] Além da estabilidade geral demanda do sistema, é desejável garantir uma distribuição de carga computacional possivelmente igual em um sistema de computação distribuído também devido à importância da ordem temporal de eventos para o acompanhamento correto de decisões ou eventos.
Sumário
[0020] Para detectar eventos, tais como eventos primitivos e/ou compostos, vários detectores de evento podem estar funcionando em nós diferentes de um sistema de computação distribuído. Desse modo, um evento primitivo tipicamente somente é baseado ou derivado a partir de dados de sensores (brutos), ao passo que um evento composto tipicamente é baseado em eventos primitivos ou em outros eventos compostos precedentes. Os dados de sensores podem se originara partir de uma rede de sensores acoplada com o sistema distribuído, onde a rede de sensores em particular pode ser uma rede ou sistema de rastreamento de localização sem uso de fios, de acordo com algumas concretizações, neste caso, os dados de sensores podem com-preender dados cinemáticos, os dados cinemáticos compreendendo amostras de dados de localização geográfica, amostras de dados de velocidade, e/ou amostras de dados de aceleração, onde as amostras de dados individuais correspondem aos intervalos de tempo de amostragem predefinidos, respectivamente. Por consequência, os eventos podem ser detectados por detectores de evento baseado em eventos anteriores e/ou em fluxos de dados paralelos de sensores se originando a partir de um sistema de localização geográfica.
[0021] Tais detectores de evento podem causar diferentes cargas em relação aos seus respectivos nós associados e/ou em relação ao sistema de computação distribuído como um todo, dependendo da condição do sistema e/ou dependendo da complexidade computacional do algoritmo subjacente do detector de evento e/ou dos dados de sensores a serem analisados. Por consequência, em um cenário de locais ou condições que se alteram de uma configuração original do sistema, uma distribuição original dos detectores de evento em relação aos vários nós da rede poderia por sua vez ser sub-ideal com respeito ao equilíbrio de carga computacional ou poderia levar até mesmo a uma pane do sistema de computação distribuído.
[0022] Tais desequilíbrios de carga indesejáveis podem ser contra- atacados pelas concretizações da presente invenção. Por exemplo, se pelo menos um atraso de evento alcançar um valor proibitivamente alto, isto pode ser um indicador para o fato de que um processo detector do evento fonte, a partir do qual o evento correspondente alcança um processo detector de evento destino, está sobrecarregado ou experimenta alguns outros problemas. Em tal cenário, pode ser desejável transferir ou realocar o processo detector de evento fonte maligno para algum outro recurso de hardware do sistema de computação distribuído. Por exemplo, o processo detector de evento fonte maligno pode ser transferido de seu nó atual para outro nó fisicamente separado e diferente do sistema de computação distribuído, o qual possui mais recursos de hardware disponíveis.
[0023] Para este propósito, concretizações da presente invenção proporcionam um aparelho para transferir um primeiro processo detector de evento de um primeiro nó de um sistema de computação distribuído para um segundo processo detector de evento de um segundo nó do sistema de computação distribuído. O segundo nó é fisicamente diferente do primeiro nó. O aparelho compreende o dispositivo para copiar um conteúdo do processo do primeiro processo detector de evento para o segundo processo detector de evento, o dispositivo para coordenar eventos de entrada do primeiro processo detector de evento de modo que os eventos de entrada do primeiro processo detector de evento sejam processados em paralelo tanto no primeiro como no segundo processo detector de evento, e o dispositivo para verificar se os eventos de entrada do primeiro processo detector de evento, os quais são processados em paralelo tanto no primeiro como no segundo processo detector de evento, levam a eventos de entrada idênticos tanto no primeiro como no segundo processo detector de evento.
[0024] De acordo com algumas concretizações, um processo detector de evento é para ser entendido como uma instância de um programa de computador que está sendo executado em um nó do sistemadistribuído. Um processo detector de evento compreende o código de programa do programa de computador e sua atividade atual. O sistemadistribuído pode ser uma rede de computadores distribuída ou um processo com múltiplos núcleos, por exemplo. No caso de uma rede de computadores, um nó, isto é, nó da rede, pode compreender o dispositivo de computador ou uma unidade de processamento (por exemplo, CPU) da mesma se comunicando com outros nós da rede via Ethernet, por exemplo, ou via alguma outra forma de tecnologia de interligação.
[0025] De acordo com algumas concretizações, um processo detector de evento pode compreender uma máquina de estado, a qual pode ser entendida como um modelo comportamental utilizado para projetar um programa de computador subjacente do processo detector de evento. Uma máquina de estado é composta de um número (finito) de estados associados para transições, onde transição é um conjunto de ações que iniciam a partir de um estado e terminam em outro (ou no mesmo) estado. Uma transição é iniciada por um ativador, onde tal ativador pode, por exemplo, ser um evento primitivo ou composto ou dados brutos de sensores informados para o processo detector de evento. Por consequência, de acordo com aspectos da presente invenção, um processo detector de evento pode compreender uma máquina de estado e o conteúdo ou memória do processo detector de evento pode refletir um estado atual da dita máquina de estado, como, por exemplo, variáveis ou arranjos ou variáveis individuais. Para processos detectores de evento, a máquina de estado pode ser uma máquina de estado baseada em software, por exemplo, uma máquina de estado da Linguagem de Modelagem Unificada (UML).
[0026] O aparelho para transferir, o qual também pode ser referido como um aparelho de transferência pode, por exemplo, ser implementado como uma entidade central do sistema de computação distribuído. A dita entidade central pode possuir informações sobre mais ou todos os atrasos de sinais de evento percorrendo ao longo de diferentes rotas no sistema distribuído. Desse modo, um atraso de evento pode, por exemplo, ser devido instabilidade diferente, capacidades diferentes de processamento e/ou aos tempos diferentes de propagação de sinal dos diferentes caminhos ou rotas da rede. Alternativamente, ou adicionalmente, o aparelho de transferência central pode possuir informação em relação a mais ou a todas as situações de carga (por exemplo, carga da CPU) dos nós individuais e/ou informações indicativas de uma carga do sistema como um todo. Por consequência, de acordo com algumas concretizações, o aparelho de transferência pode possuir conhecimento geral de parâmetros do sistema. Ainda de acordo com outras concretizações, o aparelho de transferência também pode ser não central, isto é, distribuído através de vários nós da rede. Neste caso, um nó da rede somente pode possuir informação limitada indicativa de sua própria carga ou situação de atraso de evento. Por consequência, o conhecimento geral dos parâmetros do sistema pode não estar disponível em algumas concretizações.
[0027] Os processos detectores de evento do sistema podem ser distribuídos ao longo dos nós da rede de acordo com algum critério de distribuição de processo detector de evento, o qual pode ser mais ou menos ideal, dependendo do parâmetro geral do sistema ou do nível de conhecido da situação do sistema do aparelho de transferência. Um aparelho de transferência central acoplado com pelo menos vários nós da rede pode possuir mais informações do sistema disponíveis do que concretizações de um aparelho de transferência que está somente acoplado com um único ou com poucos nós da rede.
[0028] Concretizações do aparelho de transferência podem compreender o dispositivo para determinar o segundo nó dentre um conjunto de segundos nós possíveis baseado em um critério de distribuição ideal do processo detector de evento. Dependendo do que é considerado como sendo "ideal", o critério de distribuição ideal de processo detector de evento pode levar a um dentre um atraso geral mínimo de todos os eventos no sistema de computação distribuído, um númeromínimo de subscrições de evento seguras no sistema de computação distribuído, uma variação mínima da carga de um dado nó do sistema de computação distribuído, ou uma carga geral mínima do sistema de computação distribuído. Desse modo, um processo detector de evento, ou um programador de atividade de evento associado com o mesmo, pode subscrever os eventos que são requeridos pelo processo detector de evento para determinar seu evento(s) de saída. Se alguns eventos de entrada forem absolutamente obrigatórios para o detector de evento, pode-se "seguramente subscrever" para os ditos eventos de entrada. Neste caso, os eventos em questão podem ser transportados para o detector / programador de atividade de evento via conceitos controlados de transmissão de erro (por exemplo, Solicitação Automática de Repetição (ARQ)).
[0029] De acordo com algumas concretizações, o aparelho de transferência pode compreender o dispositivo para criar uma instância do processo, a qual é correspondente ao primeiro processo detector de evento, no segundo nó, de modo a obter o segundo processo detector de evento. Uma instância é para ser entendida como uma ocorrência ou cópia de um objeto, esteja atualmente executando ou não. Instâncias de uma classe ou de um processo compartilham o mesmo conjunto de atributos, ainda que tipicamente sejam diferentes no que estes atributos contêm. O procedimento de transferência de processo detector de evento pode, por exemplo, ser executado com o auxílio de um Sistema Operacional (OS) controlando o sistema de computação distribuído. Desse modo, um OS é para ser entendido como um conjunto de programas que gerenciam os recursos de hardware do sistemadistribuído, e proporcionar serviços comuns para software aplicativos, como os processos detectores de evento, por exemplo. Tais serviços do OS também podem compreender funcionalidades de instanciação,isto é, funcionalidades para criar uma instância do processo, à qual o dispositivo para copiar o conteúdo do processo pode ter acesso. Ou seja, o dispositivo de criação pode compreender o dispositivo para acessar as funcionalidades de instanciação do processo de um sistema operacional controlando o sistema distribuído.
[0030] Assim que o segundo processo detector de evento, o qual é uma instância do primeiro processo detector de evento, tiver sido instanciado no segundo nó, ele pode subscrever para o mesmo evento(s) que o primeiro processo detector de evento do primeiro nós já se subscreveu, de modo a receber o mesmo evento(s) ou fluxo(s) de eventos a partir do sistema distribuído como sinais de entrada. Em outras palavras, o dispositivo para criar a instância pode ser operável, após instanciar o segundo processo detector de evento no segundo nó, para subscrever o segundo processo detector de evento em relação ou para eventos de entrada idênticos ao do primeiro processo detector de evento.
[0031] Os serviços do sistema operacional podem adicionalmente compreender copiar funcionalidades, às quais o dispositivo de cópia para copiar o conteúdo do processo pode ter acesso. Ou seja, o dispositivo de cópia pode compreender o dispositivo para acessar as funcionalidades de cópia do processo de um sistema operacional executando nos nós de computação ou em alguma outra entidade de controle do sistema distribuído. O dispositivo de cópia também pode ser ope- rável para "congelar" o conteúdo do processo do primeiro processo de tector de evento em um instante no tempo predefinido de modo a obter uma condição definida do primeiro processo detector de evento no instante do tempo do congelamento. Desse modo, o "congelar" significa que o processo detector de evento levado para um estado determinado e para de responder às suas entradas no instante de tempo de congelamento. Em outras palavras, o primeiro processo detector de evento pode ser interrompido no instante de tempo de congelamento de modo a copiar seu conteúdo para o segundo processo detector de evento instanciado.
[0032] Por consequência, o dispositivo de cópia pode ser adaptado para copiar o conteúdo do processo congelado a partir do primeiro processo detector de evento para o segundo processo detector de evento de modo a obter o mesmo estado determinado ou condição definida no segundo processo detector de evento. Desse modo, o dispositivo para copiar pode ser operável para copiar o conteúdo do processo iterativamente a partir do primeiro processo detector de evento para o segundo processo detector de evento, de modo que o conteúdo do processo, o qual não irá alterar durante o restante do procedimento de cópia, é copiado primeiro. Ou seja, em cada repetição, somente o conteúdo do processo é copiado, o qual não irá alterar durante ao procedimento de cópia restante. Isto permite copiar o conteúdo do processo sem explicitamente paralisar os processos detectores de evento enquanto copiando. Por consequência, os dados contidos no primeiro processo detector de evento podem ser copiados a partir do primeiro nó para o segundo nó em várias repetições. Desse modo, devem ser definidos quais dados pertencem à informação de condição de um detector de evento. No caso de processo, está é, por exemplo, a memória do processo. Enquanto iterativamente copiando o conteúdo do processo, a diferença ou espaço (por exemplo, o delta) do conteúdo do processo a ser copiado fica menor e menor até que a diferença per- maneça pequena, mas não zero. Ou seja, a cópia delta do conteúdo do processo não será zero devido a um detector de evento não congelado poder alterar sua condição continuamente. Portanto, antes de copiar um último delta de conteúdo, o processo detector de evento pode vantajosamente ser congelado.
[0033] Antes do processo detector de evento mais recentemente instanciado, isto é, o segundo, ser iniciado ou ativado no segundo nó, os dados de entrada (idênticos) de ambos os processos detectores de evento podem ser colocados em memória temporária de modo que ambos os processos detectores de evento, os quais, devido à cópia, de forma ideal já possuem a mesma condição interna definida, também obtém dados de entrada externos idênticos iniciando a partir do instante no tempo predefinido, isto é, o instante "congelamento". Por consequência, o dispositivo para copiar também pode ser operável para colocar em memória temporária os eventos de entrada do primeiro processo detector de evento durante e/ou após copiar o conteúdo do processo a partir do primeiro para o segundo processo detector de evento.
[0034] Quando todo o conteúdo do processo relevante tiver sido copiado a partir do primeiro (isto é, da instância antiga) para o segundo (isto é, a nova instância) processo detector de evento e os dados de entrada tiverem sido colocados na memória temporária, ambos os processos detectores de evento podem ser ativados para processamento paralelo dos dados (eventos) de entrada colocados em memóriatemporária (de forma ideal, idênticos), posto que o primeiro e o segundo processo detector de evento estão ambos nas mesmas condições ou estados internos. Ou seja, ambos os detectores de evento podem ser ativados após o procedimento de cópia e colocação na me-mória temporária e podem processar os dados ramificados e, por con-sequência, os mesmos dados de entrada, em paralelo. Para este pro- pósito, o dispositivo para coordenar pode ser operável para programar a atividade da cópia de conteúdo do processo, a colocação em memó-riatemporária e o processamento dos eventos de entrada do primeiro processo detector de evento, de modo que tanto o primeiro como os segundo processo detector de evento estejam executando em paralelo iniciando a partir do instante no tempo predefinido (congelado) e baseado no conteúdo do processo copiado. Desse modo, ambas as instâncias de processo executando em diferentes nós da rede podem produzirsaídas idênticas. Além disso, o dispositivo de coordenação pode ter acesso ao OS para este propósito, por exemplo.
[0035] O dispositivo para verificar, o qual pode, por exemplo, compreender um comparador, pode então verificar se ambos os processos detectores de evento realmente levam à mesma saída, respectivamente. Se este for o caso, o antigo, isto é, o primeiro processo detector de evento pode ser desativado. Desse modo, a carga do primeiro nó pode diminuir. Se ambos os processos detectores de evento não levarem à mesma saída, a cópia anterior e/ou o procedimento de memória temporária provavelmente falhou e o novo (isto é, o segundo) processo detector de evento pode ser desligado para iniciar todo o processo de transferência de detector de evento a partir do começo. Por consequência, de acordo com algumas concretizações, o dispositivo para verificar pode ser operável para desligar o primeiro processo detector de evento no caso dos eventos de saída tanto no primeiro como no segundo processo detector de evento serem idênticos, ou, desligar o segundo processo detector de evento no caso em que os eventos de saída tanto no primeiro como no segundo processo detector de evento não serem idênticos.
[0036] De acordo com um aspecto adicional da presente invenção, também é proporcionado um sistema de computação distribuído para determinar eventos baseado em pelo menos um fluxo de dados (bru- tos) de sensores. O sistema de computação distribuído proporcionado, o qual pode ser uma rede de computadores, compreendemos vários nós distribuídos, cada um possuindo um processo detector de evento associado com o mesmo, e pelo menos uma concretização de um aparelho para transferir processos detectores de evento entre os nós distribuídos do sistema de computação distribuído.
[0037] Em algumas concretizações, o sistema de computação distribuído pode ser acoplado com um sistema de localização para localizar e/ou rastrear objetos dentro de uma área geográfica predefinida, onde o sistema de localização proporciona o pelo menos um fluxo de dados de sensores para o sistema de computação distribuído, o fluxo de dados de sensores transportando dados sendo indicativos de posições geográficas dos objetos localizados. O sistema de localização pode ser baseado em uma rede de sensores sem uso de fios, a qual já foi descrita na parte introdutória deste relatório descritivo.
[0038] Independente de transferir processos detectores de evento, os eventos percorrendo ao longo de caminhos ou rotas diferentes através do sistema distribuído ainda podem experimentar diferentes atrasos, mesmo quando os detectores de evento são (quase) distribuídos de forma ideal no sistema distribuído. Isto pode ser devido aos diferentes atrasos de propagação, aos tempos de processamento de sinal e/ou à instabilidade da rede. Diferenças nos atrasos de evento podem levar a detecções falsas de evento composto, desde que um detector de evento pode consumir eventos de entrada em uma ordem temporal que não corresponde à sua ordem de ocorrência original. Portanto, adicionalmente a distribuir de forma ideal o detector de evento dentre os vários nós da rede, uma recuperação de uma ordem temporal original de eventos alcançando um detector de evento via diferentes caminhos da rede e, por consequência, experimentando diferentes atrasos de processamento e/ou de propagação, pode ser dese- jável para resultados ótimos.
[0039] Isto pode ser alcançado por atrasar os eventos apropriadamente antes de enviar ou retransmitir os mesmos para um detector de evento subsequente. O tempo no qual um evento é retransmitido para o detector de evento subsequente pode ser baseado na marca de tempo original do respectivo evento e nos atrasos de processamento e/ou de propagação de todos os eventos requeridos pelo detector de evento subsequente para determinar seu evento de saída.
[0040] Para este propósito, concretizações da presente invenção também proporcionam um aparelho para sincronizar um primeiro evento com um segundo evento. O primeiro evento tem associado com o mesmo um primeiro valor de tempo do evento baseado em um sinal de relógio comum, enquanto o segundo evento em associado com o mesmo um segundo valor de tempo do evento baseado no sinal de relógio comum. O primeiro e o segundo eventos experimentam atrasos diferentes, respectivamente, enquanto percorrendo através de diferentes caminhos de um sistema de computação distribuído. Pelo menos um evento de saída é para ser determinado baseado no primeiro e no segundo eventos por um detector de evento. De acordo com concreti-zações, o aparelho para sincronizar compreende um compensador de atraso associado com o detector de evento, onde o compensador de atraso compreende uma entrada para receber o primeiro e o segundo eventos e uma saída para enviar versões retransmitidas do primeiro e do segundo eventos recebidos para o detector de evento associado. O compensador de atraso é operável para retransmitir ou enviar o primeiro e o segundo eventos para o detector de evento associado baseado nos atrasos experimentados e baseado no primeiro e no segundo valores de tempo associados, os quais também podem ser referidos como marcas de tempo do evento refletindo o tempo original da ocorrência do evento, respectivamente.
[0041] Ainda de acordo com outro aspecto da presente invenção, o aparelho para transferir o primeiro processo detector de evento pode ser integrado em um sistema de computação distribuído, de preferência, mas não exclusivamente, em combinação com o aparelho para sincronizar o primeiro e o segundo eventos. Tal sistema de computação distribuído pode, por consequência, compreender vários nós distribuídos, onde cada um dos vários nós distribuídos compreende um aparelho para sincronização de acordo com concretizações da presente invenção, e um aparelho para transferir um primeiro processo detector de evento de um primeiro nó do sistema de computação distribuído para um segundo processo detector de evento de um segundo nó do sistema de computação distribuído, onde o aparelho para transferir compreende os aspectos mencionados acima.
[0042] Em outras palavras, concretizações proporcionam um sistema de computação distribuído para determinar baseado em pelo menos um fluxo de dados (brutos) de sensores. O sistema de computação distribuído, o qual pode ser uma rede de computadores, compreendevários nós distribuídos. O sistema de computação distribuído compreende uma concretização do aparelho de transferência de acordo com a presente invenção. Adicionalmente, cada um dos vários nós de computação distribuídos pode compreender um aparelho para sincronizar um primeiro evento, tendo associado com o mesmo um pri-meiro valor de tempo do evento baseado em um sinal de relógio comum, e um segundo evento, tendo associado com o mesmo um segundo valor de tempo do evento baseado no sinal de relógio comum, onde o primeiro e o segundo eventos experimentam diferentes atrasos enquanto percorrendo através de diferentes caminhos do sistema de computação distribuído. Pelo menos um evento de saída é para ser determinado por um detector de evento baseado no primeiro e no segundo eventos. O aparelho para sincronização compreende um com- pensador de atraso associado com o detector de evento, o compensador de atraso possuindo uma entrada para receber o primeiro e o segundo eventos e possuindo uma saída para enviar versões retransmitidas do primeiro e do segundo eventos recebidos para o detector de evento associado, onde o compensador de atraso é operável para retransmitir o primeiro e o segundo eventos para o detector de evento associado baseado nos atrasos experimentados e baseado nos valores de tempo originais associados do primeiro e do segundo eventos.
[0043] Os desequilíbrios de carga indesejáveis mencionados acima dentre os diferentes nós podem, por exemplo, ser detectados por concretizações do aparelho de sincronização ou de seu compensador de atraso. Por exemplo, se pelo menos um atraso de evento alcançar um atraso proibitivamente alto, isto pode ser um indicador para o fato de que um processo detector de evento fonte, a partir do qual os eventos correspondentes alcançam o compensador de atraso, está sobrecarregado ou experimenta alguns outros problemas. Em tal cenário, pode ser desejável transferir um realocar o processo detector de evento fonte maligno para algum outro recurso de hardware do sistema de computação distribuído. Por exemplo, o processo detector de evento fonte maligno pode ser transferido a partir de seu nó fonte atual para outro nó destino fisicamente separado e diferente do sistema de computação distribuído, o qual possui mais recursos de hardware disponíveis. O aparelho para transferir eventos e o aparelho para sincronizar eventos podem, por consequência, ambos de forma sinérgica cooperar da maneira descrita. Ou seja, o aparelho para sincronização pode detectar atraso e por consequência, anomalias de carga dentro do sistema de computação distribuído, enquanto o aparelho para transferir pode transferir processos detectores de evento de modo a melhor equilibrar a distribuição de detectores de evento, levando a menores atrasos como um todo e a menores cargas.
[0044] Além disso, aspectos adicionais da presente invenção proporcionam um método para transferir um primeiro processo detector de evento de um primeiro nó de um sistema de computação distribuído para um segundo processo detector de evento de um segundo nó do sistema de computação distribuído, o segundo nó sendo diferente do primeiro nó. O método compreende uma etapa de copiar um conteúdo do processo do primeiro processo detector de evento para o segundo processo detector de evento, uma etapa de coordenar eventos de entrada do primeiro processo detector de evento de modo que os eventos de entrada do primeiro processo detector de evento sejam processados em paralelo tanto no primeiro como no segundo processo detector de evento, e uma etapa para verificar se os eventos de entrada do primeiro processo detector de evento, os quais são processados em paralelo tanto no primeiro como no segundo processo detector de evento, levam a eventos de saída idênticos tanto no primeiro como no segundo processo detector de evento.
[0045] Algumas concretizações compreendem um circuito de controle digital instalado dentro de um aparelho para executar o método para transferir o primeiro evento e o segundo evento. Tal circuito de controle digital, por exemplo, um processador de sinal digital (DSP), por consequência precisa ser programado. Por consequência, concretizações ainda adicionais também proporcionam um programa de computador possuindo um código de programa para executar concretizações do método, quando o programa de computador é executado em um computador ou em um processador digital.
[0046] Um benefício das concretizações da presente invenção é que eventos podem ser reconhecidos / detectados e enviados para detectores de evento subsequentes somente com um atraso mínimo. Concretizações da presente invenção podem ser implementadas de modo que enviar eventos com menos atraso não seja facilmente pos- sível sem arriscar detecção errônea de evento subsequente. Além disso, com concretizações da presente invenção, os desenvolvedores de detectores de evento não precisam ter qualquer conhecimento especial em relação aos atrasos de evento particular, à medida que as concretizações do sistema distribuído podem medir e administrar estes atrasos de evento automaticamente.
[0047] Outro benefício pode ser visto na auto-organização de um sistema de computação distribuído de acordo com concretizações da presente invenção. Tal sistema de computação distribuído pode reagir em relação à alteração das condições do sistema por transferir processos detectores de evento entre nós da rede, de modo que o sistema ou rede distribuída é sempre capaz de executar processamento robusto e eficiente do sinal de evento.
Breve Descrição das Figuras
[0048] Algumas concretizações de aparelhos e/ou métodos serão descritas a seguir somente a título de exemplo e com referência às figuras acompanhantes, nas quais:
[0049] A Fig. 1 ilustra um cenário de detecção de evento de impedimento específico do futebol.
[0050] A Fig. 2 esquematicamente apresenta um diagrama de blocos do aparelho para sincronizar um primeiro evento com um segundo evento, de acordo com uma concretização da presente invenção.
[0051] A Fig. 3 esquematicamente apresenta uma concretização da presente invenção, onde o aparelho para sincronizar o primeiro evento com o segundo evento é implementado como middleware entre uma rede distribuída e um software detector de evento associado;
[0052] A Fig. 4 apresenta uma tabela de tempo de quatro eventos A, B, C e D, os quais são requeridos por um detector de evento;
[0053] A Fig. 5 esquematicamente ilustra um programador de atividade de evento de acordo com uma concretização da presente in- venção;
[0054] A Fig. 6 esquematicamente apresenta um fluxograma de um método ilustrativo para sincronizar um primeiro evento com um segundo evento;
[0055] A Fig. 7 apresenta uma concretização de um sistema de computação distribuído para determinar eventos baseado em pelo menos um fluxo de dados de sensores, onde o sistema de computação distribuído compreende vários nós de computação distribuídos, onde cada um dos vários nós de computação distribuídos compreende uma concretização do aparelho para sincronizar eventos;
[0056] A Fig. 8 esquematicamente ilustra uma concretização de um aparelho para transferir um primeiro processo detector de evento de um primeiro nó de um sistema de computação distribuído para um segundo processo detector de evento de um segundo nó do sistema de computação distribuído; e
[0057] A Fig. 9 esquematicamente ilustra um fluxograma de uma concretização do método para transferir um primeiro processo detector de evento de um primeiro nó de um sistema de computação distribuído para um segundo processo detector de evento de um segundo nó do sistema de computação distribuído.
Descrição de Concretizações
[0058] Várias concretizações ilustrativas serão agora descritas mais completamente com referência aos desenhos acompanhantes nos quais algumas concretizações ilustrativas são ilustradas. Nas figuras, a espessura de camadas e/ou de regiões pode ser exagerada para clareza.
[0059] Por consequência, apesar de as concretizações ilustrativas serem capaz de várias modificações e formas alternativas, concretizações das mesmas são apresentadas a título de exemplo nas figuras e serão descritas neste documento em detalhes. Entretanto, deve ser entendido que não existe intenção de limitar concretizações ilustrativas às formas particular reveladas, mas ao contrário, concretizações ilustrativassão para cobrir todas as modificações, equivalentes e alternativas se situando dentro do escopo da invenção. Números iguais se referem a elementos iguais ou similares por toda a descrição das figuras.
[0060] Será entendido que quando um elemento é referido como sendo "conectado" ou "acoplado" com outro elemento, ele pode ser diretamente conectado ou acoplado com o outro elemento ou elementos intermediários podem estar presentes. Em contraste, quando um elementoé referido como sendo "diretamente conectado" ou "diretamente acoplado" com outro elemento, não existem elementos intermediários presentes. Outras palavras utilizadas para descrever a relação entre elementos devem ser interpretadas de um modo igual (por exemplo, "entre" em relação a "diretamente entre", "adjacente" em relação a "diretamente adjacente", etc.).
[0061] A terminologia utilizada neste documento é para o propósito somente de descrever concretizações particulares e não é pretendida para ser limitativa de concretizações ilustrativas. Como utilizado neste documento, as formas singulares "um", "uma" e "o"são pretendidas para incluir as formas plurais igualmente, a não ser que o contexto claramente indique de outro modo. Será adicionalmente entendido que os termos "compreende", "compreendendo", "inclui" e/ou "incluindo", quando utilizados neste documento, especificam a presença de aspectos, inteiros, etapas, operações, elementos e/ou componentes declarados, mas não impedem a presença ou a adição de um ou mais outros aspectos, inteiros, etapas, operações, elementos, componentes e/ou grupos dos mesmos.
[0062] A não ser que de outro modo definido, todos os termos (incluindo termos técnicos e científicos) utilizados neste documento pos- suem o mesmo significado como normalmente entendido pelos versados na técnica a qual às concretizações ilustrativas pertencem. Será adicionalmente entendido que os termos, por exemplo, os termos definidos em dicionários normalmente utilizados, devem ser interpretados como possuindo um significado que é consistente com seu significado no contexto da técnica relevante e não serão interpretados em um sentido idealizados ou excessivamente formal a não ser que expressamente assim definido neste documento.
[0063] A Fig. 2 esquematicamente ilustra uma concretização de um aparelho 200 para sincronizar um primeiro evento 202 com um segundo evento 204.
[0064] O primeiro evento 202 possui associado com o mesmo um primeiro valor de tempo original do evento ou marca de tempo baseada em um sinal comum de referência de relógio. O segundo evento 204 também possui associado com o mesmo um segundo valor de tempo original do evento ou marca de tempo baseada no sinal de relógio comum. O primeiro e o segundo valores de tempo original do evento representam um instante do tempo original de ocorrência do evento. O sinal de relógio comum produz um tempo geral do sistema, o qual é válido para todos os nós distintos em um sistema de computação distribuído. Antes de alcançar o aparelho 200 para sincronizar os eventos, cada um dos primeiro e segundo eventos 202, 204 experimenta atraso diferente enquanto percorrendo através de diferentes caminhos ou rotas do sistema de computação distribuído (não apresentado na Fig. 2). Baseado nos dois eventos 202, 204, pelo menos um evento de saída 206 pode ser determinado por um detector de evento 208, o qual pode ser disposto subsequente (sucedendo) ou à jusante do aparelho 200 para sincronizar os eventos 202, 204.
[0065] O aparelho de sincronização 200, o qual também pode ser considerado como um programador de atividade de evento para o de tector de evento 208 em algumas concretizações, compreende um compensador de atraso 210, também referido como dispositivo de compensação de atraso, o qual está associado ou relacionado com o detector de evento subsequente 208. O compensador de atraso 210 possui as entradas 212-1, 212-2 para receber o primeiro e o segundo eventos 202, 204 a partir da rede distribuída. Adicionalmente, o compensador de atraso possui as saídas 214-1, 214-2 para retransmitir ou enviar versões retransmitidas do primeiro e do segundo eventos recebidos 202, 204 para o detector de evento associado 208, o qual pode ser disposto subsequente ou à jusante do compensador de atraso 210. O compensador de atraso 2120 é operável para retransmitir o primeiro e o segundo evento 202, 204 para o detector de evento associado 208 baseado nos atrasos experimentados dos eventos 202, 204 e baseado no primeiro e no segundo valores originais de tempo do evento ou marcas de tempo associadas ligadas com os dois eventos 202, 204.
[0066] Uma configuração ilustrativa de um sistema de computação distribuído 300 (na forma de uma rede), de vários detectores de evento 208, e de uma concretização de um aparelho 200 para sincronizar vários eventos é esquematicamente representada na Fig. 3.
[0067] A Fig. 3 esquemática ilustra uma rede distribuída 300 a partir da qual os eventos 302 e os dados brutos de sensor 304 alcançam o aparelho de sincronização 200, o qual é de forma ilustrativa denotado como "EventCore" na Fig. 3. O aparelho de sincronização 200 pode atuar como um programador de atividade de evento por receber eventos 302 e/ou dados brutos de sensor 304 a partir da rede subjacente 300 por um lado, e por enviar os mesmos para vários detectores de evento 208 acoplados com o aparelho de sincronização 200 em algumassaídas ou instâncias de tempo de retransmissão requeridas, por outro lado. O aparelho de sincronização 200 é adaptado para sincronizar diferentes eventos 302 e/ou dados de sensor 304, os quais são re- queridos pelos detectores de evento subsequentes 208. Desse modo, o aparelho de sincronização 200 pode ser implementado de uma ma-neiradistribuída, de modo que ele possa individualmente sincronizar eventos 302 ou 304 requeridos por cada um dos detectores de evento subsequentes 208. Ou seja, o aparelho núcleo de evento 200 pode compreender vários compensadores de atraso 210 ou instâncias dos mesmos, onde cada um dos vários compensadores de atraso 210 está associado com um dos vários detectores de evento subsequentes 208. Desse modo, uma instância do compensador de atraso 210 e um detector de evento associado 208 podem de preferência ser implementados em um nós comum da rede. De acordo com algumas concretizações, o aparelho de sincronização 200 e suas instâncias de compensador de atraso 210 podem ser implementados como middleware entre a rede 300 e os detectores de evento 208.
[0068] Um sinal de relógio comum 306 é proporcionado para o aparelho de sincronização 200 ou para as diferentes instâncias do mesmo, desse modo possibilitando a sincronização temporal de todos os compensadores de atraso e/ou instâncias de detector de evento 210, 208 da arquitetura de sistema distribuído representada na Fig. 3. Por consequência, cada compensador de atraso 210 tem acesso à mesma base de tempo comum. Em outras palavras, todos (distribuídos) aparelhos de sincronização ou instâncias de compensador de atraso 200, 210 podem recuperar a mesma marca de tempo do sistema em qualquer dado tempo. No caso de uma instância de compensador de atraso 210 receber um evento 302 ou 304, ela pode colocar o dito evento em memória temporária para uma instancia de detector de evento subsequente associada 208 durante uma quantidade de tempo requerida, a qual corresponde a uma probabilidade suficientemente alta de que nenhum outro evento requerido pela instância do detector de evento 208 e transportando uma marca de tempo anterior será re- cebido.
[0069] Para mais detalhes, vamos observar o exemplo seguinte: um detector de evento arbitrário 208 requer os eventos de entrada A, B, C e D de modo a estar apto a corretamente determinar ou detectar um evento de saída composto E baseado nos ditos eventos de entrada. Desde que cada instância da rede é sincronizada pelo sinal de relógio comum global 306, é possível associar um tempo de detecção com cada evento (veja a Fig. 4, coluna do meio). Desse modo, um instante no tempo de detecção de um evento é necessariamente posterior ao instante no tempo de ocorrência real do evento (veja a Fig. 4, coluna esquerda) devido à velocidade limitada do processamento.
[0070] Neste exemplo, o tempo de ocorrência do evento A tevent,Aé 10, entretanto, ele somente é detectado por um detector de evento no tempo de detecção tdetection,A = 14. O detector de evento subsequente para detectar o evento composto R receber o evento A requerido no tempo de recepção tED,A = 16. De forma similar, o evento B realmente acontece em mtevent,B = 12 e é detectado por algum detector de evento em tdetection,B = 13. O detector de evento composto subsequente para detectar o evento composto E recupera o evento B na instância de tempo tED,A = 15. Ou seja, o detector de evento composto para o evento E recebe o evento B antes de ele receber o evento A, o qual, entre-tanto, realmente aconteceu anterior ao evento B. Devido aos atrasos de processamento e de propagação da rede, também o evento C, o qual realmente aparece posterior ao evento A, é recebido anterior ao detector de evento composto subsequente.
[0071] A partir deste exemplo, sem utilizar concretizações da presente invenção, pode ser visto que o detector de evento composto subsequente para o evento E recebe os eventos requeridos A, B, C e D em uma ordem temporal (veja a Fig. 4, coluna mais à direita), a qual é diferente da ordem causal ou temporal original (veja a Fig. 4, coluna mais à esquerda) dos ditos eventos. Por consequência, a tarefa de concretizações da presente invenção é classificar os eventos requeridos A, B, C e D apropriadamente de modo a recuperar a ordem temporal que corresponde à ordem temporal original antes de enviar os eventos requeridos A, B, C e D para o detector de evento composto subsequente. Para este propósito, uma instância do aparelho de sincronização 200 pode ser implementada em cada nó da rede junto com um detector de evento associado 208.
[0072] De acordo com concretizações, um compensador de atraso 210 do aparelho de sincronização 200 (possivelmente distribuído) pode ser operável para retransmitir os vários eventos requeridos para um detector de evento associado de modo que uma ordem temporal das versões retransmitidas dos eventos requeridos A, B, C e D que foram recebidos no compensador de atraso 210, corresponda a uma ordem temporal original dos vários eventos requeridos A, B, C e D. Para este propósito, o compensador de atraso 210 pode retransmitir cada um dos vários eventos A, B, C e D de modo que uma diferença de tempo relativa entre eventos individuais retransmitidos corresponda a uma diferença de tempo relativa original entre os eventos individuais A, B, C e D, respectivamente. Para recuperar a ordem temporal original do evento, o compensador de atraso 210 pode determinar as instâncias de tempo de saída para cada um dos vários eventos A, B, C e D. Desse modo, um evento é retransmitido para o detector de evento associado 210 em sua instância de tempo de saída correspondente. As instâncias de tempo de saída dos eventos podem ser determinadas baseadas no valor de atraso comum e nas instâncias de tempo original de ocorrência dos eventos A, B, C e D.
[0073] Pegando o exemplo acima, as instâncias do aparelho de sincronização 200 e, por consequência, as instâncias do compensador de atraso 210 compreendidas nos mesmos, podem medir ou determi- nar o atrasos de evento seguintes baseadas nos seus respectivos tempos de recepção e em seus respectivos valores de tempo original do evento associados refletindo sua ocorrência real: Evento A: 16 - 10 = 6 Evento B: 15 - 12 = 3 Evento C: 15 - 14 = 1 Evento D: 18 - 15 = 3
[0074] Obviamente, a recepção do evento A no compensador de atraso 210 é substancialmente mais longa comparada com os outros eventos B, C e D requeridos pelo detector de evento composto subsequente. Por exemplo, isto pode ser devido à detecção do evento A em um nó de computação muito remoto levando a um longo de tempo de propagação através da rede 300, ou devido ao evento A sendo detectado por um algoritmo computacional mais complexo com maior tempo de computação. No caso ilustrativo, o atraso longo do evento A provavelmente é devido à detecção do evento levando quatro ciclos de relógio ou de intervalo de tempo.
[0075] Vamos assumir que medimos ou determinados todos os atrasos de todos os eventos de interesse suficientemente frequente e estão na seguinte posição: na instanciai de tempo tDC,C = 1000, o evento C alcança o aparelho 200 para sincronização compreendendo o compensador de atraso 210. O evento C transporta um valor de tempo do evento tevent,C = 999, o que indica que o evento C ocorreu no instante de tempo 999. O compensador de evento 210 examina os atrasos de todos os eventos de interesse, isto é, todos os eventos A, B, C e D requeridos pelo detector de evento composto subsequente associado 208, e determina quanto tempo o evento C tem que ser atrasado até que ele possa ser enviado para o detector de evento subsequente associado 208. Observe que o compensador de evento 210 somente sabe que os eventos A, B, C e D são requeridos pelo detector de evento subsequente associado 208, mas não em qual ordem e para qual propósito.
[0076] As instâncias de tempo de saída para retransmitir o evento C para o detector de evento subsequente associado 208 podem ser determinadas de acordo com
Figure img0001
[0077] Na Equação (1), A, B, C e D denotam o primeiro até o quarto evento, respectivamente, Δ(.) denota um atraso de um evento a partir de sua ocorrência até a entrada do compensador de atraso 210 associado com o detector de evento subsequente associado 208, max(.) denota o operador máximo, e tout,C denota a instância de tempo de entrada do evento retransmitido C.
[0078] Em geral, o compensador de atraso 210 pode ser operável para determinar uma instância de tempo de saída para retransmitir o evento ej a partir de um conjunto de K eventos requeridos baseado em
Figure img0002
[0079] Em um sistema de computação distribuído dinâmico com uma situação de carga que altera da rede 300, possivelmente alterando as capacidades de processamento de nós individuais, e/ou possivelmente dinamicamente alterando caminhos da rede, os atrasos de propagação ou de processamento dos evento alcançando uma instância do compensador de atraso 210 são prováveis de alterar com o tempo ao invés de serem estáticos. O compensador de atraso 210 pode considerar isto por determinar um valor de atraso de evento Δ(ej) de um evento ej a partir de um conjunto de K eventos baseado em um atraso de evento corrente e em vários atrasos de evento anteriormente medidos ou terminados para o dito evento ej. Desse modo, atrasos de evento mais recentes podem ser ponderados mais do que seus atrasos de evento precedentes. Em uma concretização específica, o com- pensador de evento pode ser adaptado para determinar o atraso de evento Δ(ej) do evento ej baseado em
Figure img0003
[0080] onde k denota um conjunto de k atrasos de evento já de-terminados,Δej(i)denota o i-ésimo atraso determinado do evento ej, onde i = 1 corresponde ao último atraso determinado, denota o desvio padrão dos últimos atrasos determinados , e onde denota um fator de segurança. Em algumas concretizações, o fator também pode ser estabelecido para zero para uma computação mais fácil e menos complexa do atraso de evento do evento j. Os adendos individuais da Equação (3) são ponderados de acordo com uma linha geométrica. O fator ^ serve como um fator de normalização, desde que a linha geométrica converge em direção a 2 para "k"suficientemente grande. O termo pode servir como uma memória tem porária de segurança, levando em consideração o desvio padrão dos últimos valores de medição. Com, por exemplo, , isto pode servir para segurança de 99,975%, por exemplo. Desse modo, a segurança de 99,975% significa que um atraso calculado ou predito de acordo com a Equação (3) não é menor do que um atraso da rede real correspondente com uma probabilidade de 99,975%. A memória temporária de segurança pode ser adaptada para uma estabilidade da rede com respeito às variações de atraso, por exemplo.
[0081] Voltando para o exemplo simples acima, o evento C pode ser enviado para o detector de evento subsequente associado 208 na instância de tempo de saída = 1005. Esta é exatamente a instância de tempo na qual podemos dizer que os eventos A, B, e D não aconteceram de forma causativa antes do evento C. Em nosso exem- plo, o detector de evento subsequente associado 208 enviou os eventos seguintes nas instâncias de tempo de retransmissão ou de saída indicadas na tabela seguinte:
Figure img0004
[0082] Como pode ser visto a partir da tabela acima, os eventos A, B, C e D foram enviados pelo compensador de evento 210 para o detector de evento subsequente associado 208 corretamente ordenados de acordo com sua ordem temporal original de ocorrência.
[0083] O princípio de trabalho de um aparelho de sincronização 20 compreendendo um compensador de atraso 210 é esquematicamente representado pela Fig. 5.
[0084] Um evento recebido, denotado pelo número de referência 502, compreende um valor de tempo original do evento tevent e um Identificador de evento ( ID do evento). Adicionalmente, um valor de tempo de saída é associado com o evento 502. O tempo de saída ou de retransmissão do evento pode ser determinado baseado no tempo original do evento e em um valor comum de atraso , o qual é 79 no exemplo representado na Fig. 5. Cálculos possíveis do valor comum de atraso foram descritos acima. O evento 502 a ser retransmitido para um detector de evento subsequente ou à jusante 208 pode então ser inserido em uma memória temporária de retransmissão ou de programação de atividade 504 do aparelho de sincronização 200. A inserção dos eventos recebidos na memória temporária 504 pode ser baseada em suas instâncias de tempo de saída determina- das , nas quais os eventos são para ser enviados para o detector de evento subsequente associado 208. Para o evento ilustrativo 502, o qual acabou de chegar à entrada do compensador de atraso 210, a instância de tempo de saída foi calculada como 367. Por esta razão, ela é inserida no meio de dois eventos colocados em memória temporária que são para ser programados (isto é, enviados) nos tempos de saída 364 e 369, respectivamente. Após os eventos terem sido retransmitidos de acordo com o valor de atraso comum atual δ, o qual é 79 no exemplo representado, os eventos na memória temporária de eventos 504 são programados ou notificados, isto é, enviados, para o detector de evento associado subsequente 208. Após um evento ter sido enviado para o detector de evento associado 208, o evento pode ser apagado antes do próximo evento na memória temporária 405 ser programado.
[0085] A Fig. 6 esquematicamente ilustra um fluxograma de um método 600 para sincronização do primeiro evento 202 e do segundo evento 204 de acordo com uma concretização da presente invenção.
[0086] Como antes mencionado, os dois eventos 202, 204 possuem associados com os mesmos a primeira e a segunda marcas de tempo do evento baseadas no sinal de relógio comum 306, respectivamente. Adicionalmente, tanto o primeiro evento como o segundo evento experimentam atrasos diferentes Δ( e 1), Δ( e 2) enquanto percorrendo através de diferentes rotas do sistema de computação distribuído 300. Para sincronizar os eventos 202, 204, o método de sincronização 600 compreende uma etapa 602 de retransmitir, em um compensador de atraso 210, o primeiro e o segundo evento 202, 204 para o detector de evento associado 208, baseado nos atrasos experimentadosΔ(e1), Δ(e2) e baseado na primeira e na segunda marcas de tempo original do evento associadas . Adicionalmen te, o método 600 compreende uma etapa 604 de detectar, no detector de evento 208 associado com o compensador de atraso 210, pelo menos um evento de saída 206 baseado no primeiro e no segundo eventos de entrada retransmitidos 202’, 204’. O primeiro e o segundo evento de entrada retransmitidos 202’, 204’ também podem ser denotados como versões retransmitidas do primeiro e do segundo eventos de entrada retransmitidos. Tipicamente, estas versões retransmitidas são idênticas ao primeiro e ao segundo evento 202, 204, respectivamente. Entretanto, elas podem ser temporariamente retransmitidas pelo aparelho de sincronização 200 ou pelo compensador de atraso 210 do mesmo.
[0087] O conceito descrito somente funciona de forma confiável se atrasos de evento determinados ou medidos estiverem disponíveis. Logo após a inicialização do sistema, os atrasos de evento são desconhecidos. Entretanto, é possível proporcionar atrasos de evento inicias para o compensador de atraso 210 após uma inicialização do sistema. Tais atrasos de evento iniciais podem ser baseado nas experiências de pior caso para os respectivos eventos. Alternativamente, o aparelho de sincronização pode armazenar seu conhecimento em relação aos atrasos de evento antes de sua desativação, de modo que cada instância de aparelho de sincronização 200 possa recuperar a configuração de um estado anterior (rede) e, por consequência, possa aproxi-mar os atrasos para a configuração atual da rede desde que ele possui informação sobre quais eventos são executados em quais nós do sistema de computação distribuído.
[0088] Os valores de atraso medidos podem ter sido medidos em diferentes situações de rede e/ou de carga de CPU. Isto poderia ser considerado pela normalização apropriada dos respectivos valores de atraso medidos. Por exemplo, o fator de normalização refletindo uma situação de carga atual poderia ser aplicado para o valor de atraso medido sob a dita situação de carga atual. Por exemplo, um fator de normalização correspondendo a uma situação de carga normal poderia ser um. Se um valor de atraso for determinado em uma situação de alta carga, isto pode ser refletido por um fator de normalização maior do que 1. Em contraste, se um valor de atraso for medido sob condições de baixa carga, isto pode ser refletido pelo fator de normalização menor do que 1. O peso real aplicado para o respectivo valor de atraso, por exemplo, na Equação (3), então poderia ser dependente de uma relação entre o fator de normalização do atraso medido e um fator de normalização atual relacionado com a situação de carga atual. Se uma situação de carga atual for menor do que uma situação de carga, onde algum valor de atraso foi determinado, tal abordagem pode levar a um valor de atraso normalizado que é menor do que o valor de atraso atualmente medido de modo a considerar a situação de menor carga ou de carga inferior.
[0089] A Fig. 7 esquematicamente ilustra uma concretização adicional da presente invenção.
[0090] A Fig. 7 esquematicamente apresenta um sistema de computação distribuído 700 para determinar eventos baseado em pelo menos um sensor ou fluxo de dados 702-1, 702-2. O sistema de computação distribuído 700, o qual pode ser uma rede de computadores distribuída ou um processador com múltiplos núcleos, por exemplo, compreende vários nós de computação distribuídos 704, onde cada um dos vários nós de computação distribuídos 704 compreende um aparelho 200 para sincronizar de acordo com concretizações da presente invenção.
[0091] De acordo com uma concretização da presente invenção, cada um dos nós de computação 704 pode por consequência compreender um aparelho de sincronização 200 junto com um compensador de atraso 210. Além disso, cada um dos nós 700 compreendendo um aparelho de sincronização 200 também compreende um detector de evento associado 208. De acordo com uma concretização ilustrativa, os nós de computação 704 podem ser processadores de sinal ou computadores distribuídos. Em algumas outras concretizações, os nós 704 também podem ser diferentes processos de uma unidade de processamento com múltiplos núcleos sendo implementada no mesmo dispositivo de computador e, por consequência, estando localizados essencialmente na mesma posição geográfica.
[0092] Concretizações da presente invenção estão em particular relacionadas com a detecção de eventos baseada em dados brutos de sensor se originando a partir de um sistema de rastreamento sem uso de fios, os quais podem ser utilizados para rastrear jogadores e todas as posições de um evento esportivo com bola, tal como, por exemplo, futebol, futebol americano, rúgbi, tênis, etc. Por consequência, o sistema de computação distribuído 700 pode ser acoplado com tal sistema de rastreamento ou sistema de localização sem uso de fios para localizar e/ou rastrear objetos e todas as pessoas dentro de uma área geográfica predefinida, a qual pode ser um campo de futebol, por exemplo. O sistema de localização informa o pelo menos um fluxo de dados de sensor 702-1, 702-2 para o sistema de computação distribuído, onde o fluxo de dados de sensor transporta dados sendo indicativos de posições geográficas dos objetos localizados. Adicionalmente, o fluxo de dados do sensor também pode transportar outros dados cinemáticosdos objetos localizados.
[0093] Para detectar eventos, tal como eventos primitivos e/ou compostos, vários detectores de evento 208 estão funcionando em diferentesnós 704 do sistema de computação distribuído 700. Tais detectores de evento ou instâncias de detector de evento 208 podem causar diferentes cargas em seus respectivos nós 704 e/ou em todo o sistema de computação distribuído 700, dependendo de uma condição atual do sistema 700 ou dependendo da complexidade dos detectores de evento 208 e/ou dos fluxos de dados de sensor 702-1, 702-2 a serem analisados. Por consequência, em um cenário de locais ou condições que se alteram de uma configuração original do sistema, isto é, uma distribuição dos detectores de evento 208 nos vários nós de rede 704, uma configuração atual do sistema poderia se revelar menos do que a ideal ou poderia até mesmo levar a uma falha do sistema de computação distribuído 700.
[0094] Tais desequilíbrios de carga indesejáveis, os quais conse-quentementetambém levam a atrasos de evento desequilibrados, podem ser detectados pela concretizações do aparelho de sincronização 20 ou, em particular, por seu compensador de atraso ou instância do compensador de atraso 210. Se pelo menos um atraso de evento medidoou determinado Δ(.) alcançar um valor proibitivamente alto, isto pode indicar que um processo detector de evento liberando o evento correspondente e sendo disposto à montante do compensador de atraso 210 pode estar sobrecarregado ou pode experimentar algum outro problema. Em tal cenário, pode ser desejável transferir ou realo- car o processo detector de evento de origem maligno para algum ou recurso de hardware ou nó 704 do sistema de computação distribuído 700. Por exemplo, o processo detector de evento maligno pode ser transferido de seu nó atual para outro nós fisicamente separado e diferente do sistema de computação distribuído 700. Para este propósito, de acordo com um aspecto adicional da presente invenção, também é proporcionado um aparelho 800 para transferir um processo detector de evento entre diferentes nós 704. Concretizações do aparelho 800 para transferir podem ser combinadas com concretizações do aparelho de sincronização 200 e/ou do sistema de computação distribuído 700.
[0095] A Fig. 8 esquemática ilustra um diagrama de blocos esquemático de uma concretização de um aparelho 800 para transferir, o qual também pode ser referido como um aparelho de transferência.
[0096] O aparelho de transferência 800 serve para transferir um primeiro processo detector de evento de um primeiro nó 704-1 do sistema de computação distribuído 700 para um segundo processo detector de evento de um segundo nó 704-2 do sistema de computação distribuído 700. Desse modo, o segundo nó 704-2 é diferente do primeironó 704-1, com respeito à sua localização geográfica ou com respeito a uma unidade de processamento diferente de um processador com múltiplos núcleos, por exemplo. O aparelho de transferência 800 compreende o dispositivo 802 para copiar um conteúdo do processo do primeiro processo detector de evento para o segundo pro-cesso detector de evento. Adicionalmente, o aparelho de transferência 800 compreende o dispositivo 804 para coordenar os eventos de entrada do primeiro processo detector de evento de modo que os eventos de entrada do primeiro processo detector de evento sejam processados em paralelo tanto no primeiro como no segundo processo detector de evento. Além disso, o aparelho 800 compreende o dispositivo 806 para verificar se os eventos de entrada do primeiro processo detector de evento, os quais são processados em paralelo tanto com o primeiro como com o segundo processo detector de evento, levam a eventos de saída idênticos tanto no primeiro como no segundo processo detector de evento.
[0097] Um processo geralmente é para ser entendido como uma instância de um programa de computador que está sendo executado em um dispositivo de computador, o qual pode ser compreendido por um nó da rede. Um processo compreende o código de programa do programa de computador e sua atividade atual. Um processo detector de evento pode compreender uma máquina de estado, a qual pode ser entendida como um modelo comportamental utilizado para projetar programas de computador. Uma máquina de estado é composta de um número (finito) de estados associados com transições. Uma transi- ção é um conjunto de ações que iniciam a partir de um estado e terminam em outro (ou no mesmo) estado. Uma transição é iniciada por um ativador, onde tal ativador pode ser, por exemplo, um evento primitivo ou composto informado para o processo. Por consequência, de acordo com aspectos da presente invenção, um processo detector de evento pode compreender uma máquina de estado e um conteúdo ou memória do processo detector de evento pode refletir um estado atual da dita máquina de estado, como, por exemplo, variáveis individuais ou arranjos ou variáveis.
[0098] Nas concretizações onde existe um conjunto de segundos nós de computação possíveis ou alternativos 704-2 para assumir o controle do primeiro processo detector de evento do primeiro nó 704-1, o aparelho de transferência 800 pode adicionalmente compreender o dispositivo 808 para determinar o segundo nó 704-2 dentre o conjunto de nós possíveis baseado ou de acordo com um critério ideal de distribuição de processo detector de evento. Desse modo, tal critério ideal de distribuição de processo detector de evento pode levar para um dentre um atraso geral mínimo de todos os eventos no sistema de computação distribuído 70, um número mínimo de subscrições de evento seguras no sistema de computação distribuído 700, uma variação mínima da carga de um dado nó 704 do sistema de computação distribuído 700, ou a uma carga mínima geral do sistema de computação distribuído.
[0099] O dispositivo para o dispositivo 808 para determinação pode, por exemplo, compreender uma entidade central da rede que possuiinformação sobre uma condição geral da rede, incluindo a carga de nós individuais 704 e a carga do sistema 700 como um todo. Tal entidade central da rede também pode possuir informação sobre tempos de atraso de evento Δ(.) dos eventos percorrendo através da rede distribuída 700. Em tal caso, a entidade central da rede pode iniciar a transferência de um processo detector de evento, por exemplo, a partir de um nós mais pesadamente carregado 704-1 para um nós menos pesadamente carregado 704-2. Ou, ela pode iniciar uma transferência de processo detector de evento entre diferentes nós 704-2, 704-2 de modo a reduzir um ou mais atrasos de evento no sistema distribuído 700.
[00100] De acordo com outra concretização, o dispositivo 808 para determinação também pode compreender ou ser compreendido de um aparelho de sincronização 200 ou de uma instância do compensador de atraso 210 do mesmo. Uma instância do compensador de atraso 210 tem conhecimento de atrasos destes eventos que ela retransmite para um processo detector de evento subsequente ou à jusante associado. Por exemplo, no caso da instância de compensador de atraso 210 medir um atraso proibitivamente alto de um evento se originado a partir de um detector de evento de origem ou à montante, a instanciai de compensador de atraso 210 pode iniciar a transferência do dito processo detector de evento à montante a partir de seu nó da rede atual para outro nó da rede de modo a reduzir o atraso do evento. No caso da instância do compensador de atraso 210 não possuir conhe-cimento adicional em relação à situação de carga dos nós individuais 704 no sistema distribuído 700, isto pode ser um procedimento simples de tentativa e erro, por exemplo.
[00101] De acordo com algumas concretizações, o aparelho de transferência 800 adicionalmente pode compreender o dispositivo 810 para criar uma instância de processo, a qual é correspondente ao primeiro processo detector de evento, no segundo nó 704-2 de modo a obter o segundo processo detector de evento. O procedimento de transferência de processo como um todo pode, por exemplo, ser executado com o auxílio de um Sistema Operacional (OS), o qual é para ser entendido como um conjunto de programas que gerenciam os re- cursos de hardware do computador, e proporcionam serviços comuns para software aplicativo, tal como um processo detector de evento, por exemplo. Tais serviços do OS também podem compreender funcionalidades de instanciação às quais o dispositivo 802 para copiar o conteúdo do processo pode ter acesso. Ou seja, o dispositivo de criação 810 pode compreender o dispositivo para acessar funcionalidades de instanciação de processo de um sistema operacional executando nos nós de computação individuais 704-1, 704-2 e/ou controlar o sistema distribuído 70. Assim que o segundo processo detector de evento do segundo nó 704-2 tiver sido instanciado, ele pode subscrever com os mesmos eventos que o primeiro processo detector de evento do primeironó 704-1 subscreveu, de modo a receber o mesmo evento(s) ou fluxo(s) de evento a partir do sistema distribuído como sinais de entrada. Em outras palavras, o dispositivo 810 para criar a instância pode ser operável, após a instanciação do segundo processo detector de evento no segundo nó 704-2, para subscrever o segundo processo detector de evento para eventos de entrada idênticos ao do primeiro processo detector de evento.
[00102] Os serviços do OS adicionalmente podem compreender copiar funcionalidades, aos quais o dispositivo de cópia 802 para copiar o conteúdo do processo pode ter acesso. Ou seja, o dispositivo de cópia 802 pode compreender o dispositivo para acessar as funcionalidades de cópia de processo de um sistema operacional executando nos nós de computação 704-1, 704-2 ou alguma outra entidade de controle do sistema distribuído 700. O dispositivo de cópia 802 também pode ser operável para "congelar" o conteúdo do processo do primeiro processo detector de evento em um instante no tempo prede- finido de modo a obter uma condição definida do primeiro processo de-tector de evento. Aqui, "congelar" significa que o processo detector de evento para de responder às suas entradas. O dispositivo de cópia 802 adicionalmente pode ser adaptado para copiar o conteúdo do processo congelado a partir do primeiro processo detector de evento para o segundo processo detector de evento de modo a obter a mesma condição definida no segundo processo detector de evento. Desse modo, o dispositivo 802 para copiar pode ser operável para copiar o conteúdo do processo iterativamente a partir do primeiro processo detector de evento para o segundo processo detector de evento, de modo que o conteúdo, o qual não irá alterar durante um restante do procedimento de cópia, é copiado primeiro. Por consequência, os dados contidos no primeiro processo detector de evento podem ser copiados a partir do primeiro nó 704-1 para o segundo nó 704-2 em várias repetições. Desse modo, devem ser definidos quais dados pertencem à informação de condição de um detector de evento. No caso de processos, esta é a memória do processo, por exemplo. Apesar de iterativamente copiar o conteúdo do processo, a diferença ou brecha (isto é, o delta) do conteúdo do processo a ser copiado fica menor e menor até que a diferença permaneça pequena, mas não zero.
[00103] Antes de um novo, isto é, segundo, processo detector de evento ser iniciado ou ativado no segundo nó 704-2, os dados de entrada(idênticos) de ambos os processos detectores de evento podem ser colocados em memória temporária de modo que ambos os processos detectores de evento, os quais de forma ideal já possuem a mesmacondição interna definida, também obtenham dados de entrada externosidênticos iniciando a partir do instante no tempo predefinido, isto é, o instante de "congelamento". Por consequência, o dispositivo 802 para copiar também pode ser operável para colocar em memória temporária os eventos de entrada do primeiro processo detector de evento durante e/ou após copiar o conteúdo do processo a partir do primeiro para o segundo processo detector de evento.
[00104] Quando todo o conteúdo relevante tiver sido copiado do primeiro (antigo) para o segundo (novo) processo detector de evento e os dados de entrada tiverem sido colocados em memória temporária, ambos os processos detectores de evento podem ser ativados para processamento paralelo do dados (eventos) de entrada (de forma ideal, idênticos) colocados em memória temporária, dadas as mesmas condições ou estados internos do primeiro e do segundo processo detector de evento. Ou seja, ambos os detectores de evento são ativados após o procedimento de cópia e de colocação em memória temporária e processam os dados de entrada ramificados e, por consequência, os mesmos dados de entrada, em paralelo. Para este propósito, o dispositivo 804 para coordenação pode ser operável para processar os eventos de entrada do primeiro processo detector de evento em paralelo tanto no primeiro como no segundo processo detector de evento iniciando a partir do instante no tempo predefinido (congelamento) e baseado no conteúdo de processo copiado. Além disso, o dispositivo de coordenação 804 pode ter acesso ao OS para este propósito, por exemplo.
[00105] O dispositivo 806 para verificação, por exemplo, um compa- rador, então verifica se ambos os processos detectores de evento levamà mesma saída, respectivamente. Se este for o caso, o antigo, istoé, o primeiro processo detector de evento provavelmente falhou e o nono (isto é, o segundo) processo detector de evento pode ser paralisado para iniciar o procedimento de transferência como um todo a partir do começo. Por consequência, de acordo com algumas concretizações, o dispositivo 806 para verificação pode ser operável para desativar o primeiro processo detector de evento no caso dos eventos de saída tanto no primeiro como no segundo processo detector de evento serem idênticos, ou, desativar o segundo processo detector de evento no caso em que os eventos de saída tanto no primeiro como no segundo processo detector de evento não serem idênticos.
[00106] Como foi mencionado acima, concretizações do aparelho de transferência 800 podem ser combinadas com concretizações do aparelho de sincronização 200, à medida que seus aspectos podem de forma sinérgica complementar um ao outro. Por consequência, alguns aspectos da presente invenção também proporcionam um sistema de computação distribuído 700 para determinar eventos baseado em pelo menos um fluxo de dados de sensor, onde o sistema de computação distribuído compreende vários nós de computação distribuídos 704 e uma concretização de um aparelho de transferência de processo de evento 800 para transferir um primeiro processo detector de evento de um primeiro nó 704-1 do sistema de computação distribuído 700 para um segundo processo detector de evento de um segundo nó 704-2 do sistema de computação distribuído 700. Adicionalmente, cada um dos vários nós de computação distribuídos 704 compreende um aparelho 200 para sincronizar um primeiro evento 202, possuindo associado com o mesmo um primeiro tempo do evento baseado em um sinal de relógio comum, e um segundo evento 204, possuindo associado com o mesmo um segundo tempo do evento baseado no sinal de relógio comum, onde o primeiro e o segundo evento 202, 204 (ou el e e2) experimentam diferentes atrasos Δ(e1), Δ(e2) enquanto percorrendo através de diferentes caminhos ou rotas do sistema de computação distribuído 700, e onde pelo menos um evento de saída 206 é para ser determinado por um detector (processo) de evento 208 baseado no primeiro e no segundo eventos 202, 204 (ou e1 e e2). Como já explicado com referência à Fig. 2, o aparelho 200 para sincronizar os eventos 202, 204 compreende um compensador de atraso 2120 associado com o detector de evento 208, o compensador de atraso 210 possuindo as entradas 212-1, 212-2 para receber o primeiro e o segundo eventos 202, 204 e possuindo uma saída 214-1, 214-2 para enviar versões retransmitidas 202’, 204’ do primeiro e do segundo eventos recebidos para o detector de evento associado 208. Concretizações do compensador de atraso 210 são operáveis para retransmitir o primeiro e o segundo eventos 202, 204 para o detector de evento associado 208 baseado no atrasos experimentados Δ(e1), Δ(e2) e baseado no primeiro e no segundo tempos de evento associados , como foi explicado acima em maiores detalhes.
[00107] Aspectos da presente invenção, onde detectores de evento devem ser transferíveis de um nó para outro nó, de preferência enquanto eles estão sendo executados ou estão funcionando, também compreendem um método para transferir um primeiro processo detector de evento de um primeiro nó 704-1 de um sistema de computação distribuído 700 para um segundo processo detector de evento de um segundo nó 704-2 do sistema de computação distribuído 70. Um flu- xograma esquemático de tal método de transferência 900 é ilustrado na Fig. 9.
[00108] O método de transferência 900 compreende uma etapa 902 para copiar um conteúdo de processo do primeiro processo detector de evento para o segundo processo detector de evento. Antes disso, pode ser determinado qual nó de computação ou processo administrativo do mesmo irá manipular o processo / encadeamento detector de evento sobrecarregado. Em algumas concretizações, a etapa de cópia 902 pode compreender copiar dados compreendidos do processo detector de evento a partir do primeiro nó 704-1 para o segundo nó 704-2 em várias repetições, como foi descrito acima. A etapa de cópia 902 desse modo compreende definir quais dados pertencem à informação de condição de um detector de evento. No caso de processo, esta é a memória do processo, por exemplo. Enquanto copiando, o delta do conteúdo de processo a ser copiado fica menor e menor até que as alterações permaneçam pequenas, mas não zero.
[00109] O método 900 adicionalmente compreende uma etapa 904 para processar eventos de entrada do primeiro processo detector de evento em paralelo tanto no primeiro como no segundo processo detector de evento. Para Estée propósito, os dados de entrada do primeiro detector de evento podem ser colocados em memória temporária e/ou copiados para ambos os detectores de evento, de modo que ambos os detectores possam processar fluxos idênticos de dados de entrada. Ambos os detectores de evento podem então ser ativados de modo a processar os ditos fluxos de dados de entrada em paralelo.
[00110] Em uma etapa adicional 906, é verificado se os eventos de entrada do primeiro processo detector de evento, os quais são processados em paralelo tanto no primeiro como no segundo processo detector de evento, levam a eventos de saída idênticos tanto no primeiro como no segundo processo detector de evento. Se este for o caso, isto é, no caso de eventos de saída tanto no primeiro como no segundo processo detector de evento serem idênticos, o primeiro processo detector de evento pode ser desativado (veja a etapa 908). Se este não for o caso, isto é, no caso em que os eventos de saída tanto no primeiro como no segundo processo detector de evento não serem idênticos, o segundo processo detector de evento pode ser desativado e o método de transferência 900 é novamente iniciado na etapa 902.
[00111] Por consequência, a transferência de processos detectores de evento entre diferentes nós da rede pode, por exemplo, ser feita por ter instâncias administrativas, como programadores de atividade (também referidos como processo núcleo de evento), associados com os detectores de evento dos diferentes nós 704, se comunicando umas com as outras. Baseadas nesta comunicação, elas podem decidir transferir processos ou algoritmos detectores de evento das mesmas de um nó para outro nó do sistema 700.
[00112] A descrição e os desenhos meramente ilustram os princípios da invenção. Assim, será apreciado que os versados na técnica estarão aptos a imaginar várias disposições que, apesar de não explicitamente descritas ou apresentadas neste documento, incorporam os princípios da invenção e estão incluídos dentro de seu espírito e escopo. Adicionalmente, todos os exemplos citados neste documento são principalmente pretendidos expressamente para ser somente para propósitos pedagógicos para auxiliar ao leitor a entender os princípios da invenção e os conceitos contribuídos pelo inventor (inventores) para favorecer a técnica, e são para ser construídos como sendo sem limitação para tais exemplos e condições especificamente citados. Além disso, é pretendido que todas as declarações neste documento citando princípios, aspectos e concretizações da invenção, bem como exem-plosespecíficos das mesmas, abranjam equivalentes dos mesmos.
[00113] Blocos funcionais denotados como "dispositivo para..." (executando alguma função) devem ser entendidos como blocos funcionais compreendendo conjunto de circuitos que são adaptados, configurados ou operáveis para executar alguma função, respectivamente. Por consequência, um "dispositivo para alguma coisa" pode igualmente ser entendido como um "dispositivo sendo adaptado configurado ou operável para fazer alguma coisa". Um dispositivo sendo adaptado para executar alguma função, por consequência, não implica que tal dispositivo necessariamente está executando a dita função (em um dado instante no tempo).
[00114] Funções de vários elementos apresentados nas figuras, incluindo quaisquer blocos funcionais, podem ser proporcionadas através do uso de hardware dedicado, como, por exemplo, um processador, bem como hardware capaz de executar software em associação com software apropriado. Quando proporcionadas por um processador, as funções podem ser proporcionadas por um único processador dedicado, por um único processador compartilhado, ou por vários processadores individuais, alguns dos quais podem ser compartilhados. Além disso, o uso explícito do termo "processador" ou "controlador"não deve ser construído para se referir exclusivamente ao hardware capaz de executar software, e pode implicitamente incluir, sem limitação, hardware processador de sinal digital (DSP), processador de rede, circuito integrado de aplicação específica (ASIC), arranjo de portas programáveis em campo (FPGA), memória somente para leitura (ROM) para armazenar software, memória de acesso aleatório (RAM), e armazenamento não volátil. Outro hardware, convencional e/ou customizado,também pode estar incluído.
[00115] Deve ser apreciado pelos versados na técnica que quaisquer diagramas de blocos neste documento representam vistas conceituais de conjunto de circuitos ilustrado incorporando os princípios da invenção.
[00116] De forma similar, será apreciado que quaisquer fluxogra- mas, diagramas em forma de fluxo, diagramas de transição de estado, pseudocódigo, e assim por diante, representam vários processos que podem ser substancialmente representados no meio legível por computador e assim, executados por um computador ou processador, seja ou não tal computador ou processador explicitamente apresentado.
[00117] Adicionalmente, as concretizações seguintes são incorporadas neste documento na descrição detalhada, onde cada concretização pode por si significar uma concretização separada. Apesar de cada concretização poder significar uma concretização separada, é para ser observado que - apesar de uma concretização pode ser referir nas concretizações a uma combinação específica com uma ou mais outras concretizações - outras concretizações também podem incluir uma combinação da concretização com o assunto de cada outra concretização. Tais combinações são propostas neste documento a não ser que seja declarado que uma combinação especifica não é pretendida. Adicionalmente, também é pretendido que se incluam aspectos de uma concretização para qualquer outra concretização, mesmo se esta concretização não for feita diretamente dependente da concretização.
[00118] Adicionalmente é para ser observado que os métodos revelados no relatório descritivo ou nas concretizações podem ser implementados por um dispositivo possuindo o meio para executar cada uma das respectivas etapas destes métodos.
[00119] Adicionalmente, é para ser entendido que a revelação de várias etapas ou funções reveladas no relatório descritivo ou nas concretizações pode não ser construída como estando dentro da ordem específica. Portanto, a revelação de várias etapas ou funções não irá limitar as mesmas a esta ordem particular a não ser que tais etapas ou funções não sejam intercambiáveis por razões técnicas.
[00120] Adicionalmente, em algumas concretizações, uma única etapa pode incluir ou ser repartida em várias sub-etapas. Tais subetapas podem estar incluídas e ser parte da revelação desta única etapa a não ser que explicitamente excluídas.

Claims (9)

1. Aparelho (800) para transferir um primeiro processo detector de evento de um primeiro nó (704-1) de um sistema de computação distribuído (300; 700) para um segundo processo detector de evento de um segundo nó (704-2) do sistema de computação distribuído (300; 700), o segundo nó (704-2) sendo diferente do primeiro nó (704-1), o aparelho compreendendo dispositivo (802) para copiar um conteúdo do processo do primeiro processo detector de evento para o segundo processo detector de evento; dispositivo (804) para coordenar eventos de entrada do primeiro processo detector de evento de modo que os eventos de entrada do primeiro processo detector de evento sejam processados em paralelo tanto no primeiro como no segundo processo detector de evento; e dispositivo (806) para verificar se os eventos de entrada do primeiro processo detector de evento, os quais são processados em paralelo tanto no primeiro como no segundo processo detector de evento, levam a eventos de saída idênticos tanto no primeiro como no segundo processo detector de evento, sendo que o dispositivo (806) para verificação é operável para desativar o primeiro processo detector de evento no caso em que os eventos de saída tanto no primeiro como no segundo processo detector de evento são idênticos, ou, desativar o segundo processo detector de evento no caso em que os eventos de saída tanto no primeiro como no segundo processo detector de evento não são idênticos, caracterizado pelo fato de que o dispositivo (802) para copiar é operável para copiar o conteúdo do processo iterativamente a partir do primeiro processo detector de evento para o segundo processo detector de evento, de modo que o conteúdo que não irá alterar durante um restante do procedimento de cópia seja copiado primeiro, sendo que o dispositivo (802) para copiar é operável para congelar o conteúdo do processo do primeiro detector de evento em um instante no tempo predefinido antes de copiar um último delta de conteúdo e para copiar o último delta de conteúdo congelado a partir do primeiro processo detector de evento para o segundo processo detector de evento.
2. Aparelho (800), de acordo com a reivindicação 1, caracterizado pelo fato de que adicionalmente compreende dispositivo (808) para determinar o segundo nó (704-2) dentre um conjunto de nós possíveis baseado em um critério de distribuição ideal de processo detector de evento.
3. Aparelho (800), de acordo com a reivindicação 2, caracterizado pelo fato de que o critério de distribuição ideal de processo detector de evento leva a um dentre um atraso geral mínimo de todos os eventos no sistema de computação distribuído, um número mínimo de subscrições seguras de evento no sistema de computação distribuído, uma variação mínima da carga de um dado nó do sistema de computação distribuído ou uma carga geral mínima do sistema de computação distribuído.
4. Aparelho (800), de acordo com qualquer uma das reivindicações precedentes, caracterizado pelo fato de que adicionalmente compreende dispositivo (810) para criar uma instância correspondendo ao primeiro processo detector de evento no segundo nó de modo a obter o segundo processo detector de evento.
5. Aparelho (800), de acordo com a reivindicação 4, caracterizado pelo fato de que o dispositivo (810) para criar a instância é operável, após instanciar o segundo processo detector de evento no segundo nó (704-2), para subscrever o segundo processo detector de evento para eventos de entrada idênticos como o primeiro processo detector de evento.
6. Aparelho (800), de acordo com a reivindicação 1, caracterizado pelo fato de que o dispositivo (804) para coordenar eventos de entrada em paralelo é operável para processar os eventos de entrada do primeiro processo detector de evento em paralelo tanto no primeiro como no segundo processo detector de evento iniciando a partir do instante no tempo predefinido e baseado no conteúdo do processo copiado.
7. Aparelho (800), de acordo com qualquer uma das reivindicações precedentes, caracterizado pelo fato de que o dispositivo (802) para copiar é operável para colocar em memória temporária os eventos de entrada do primeiro processo detector de evento durante a cópia do conteúdo do processo.
8. Aparelho (800), de acordo com qualquer uma das reivindicações precedentes, caracterizado pelo fato de que um processo detector de evento compreende uma máquina de estado e sendo que o conteúdo do processo reflete um estado atual da dita máquina de estado.
9. Método (900) para transferir um primeiro processo detector de evento de um primeiro nó (704-1) de um sistema de computação distribuído (300; 700) para um segundo processo detector de evento de um segundo nó (704-2) do sistema de computação distribuído (300; 700), o segundo nó sendo diferente do primeiro nó, o método (900) compreendendo iar (902) um conteúdo do processo do primeiro processo detector de evento para o segundo processo detector de evento; coordenar (904) eventos de entrada do primeiro processo detector de evento de modo que os eventos de entrada do primeiro processo detector de evento sejam processados em paralelo tanto no primeiro como no segundo processo detector de evento; e verificar (906) se os eventos de entrada do primeiro processo detector de evento, os quais são processados em paralelo tanto no primeiro como no segundo processo detector de evento, levam a eventos de saída idênticos tanto no primeiro como no segundo processo detector de evento, sendo que a verificação compreende desativar o primeiro processo detector de evento no caso em que os eventos de saída tanto no primeiro como no segundo processo detector de evento são idênticos, ou, desativar o segundo processo detector de evento no caso em que os eventos de saída tanto no primeiro como no segundo processo detector de evento não são idênticos, caracterizado pelo fato de que o conteúdo do processo é copiado iterativamente a partir do primeiro processo detector de evento para o segundo processo detector de evento, de modo que o conteúdo que não irá alterar durante um restante do procedimento de cópia seja copiado primeiro, sendo que o conteúdo do processo do primeiro detector de evento é congelado em um instante no tempo predefinido antes de copiar um último delta de conteúdo e o último delta de conteúdo congelado é copiado a partir do primeiro processo detector de evento para o segundo processo detector de evento.
BR112014010370-4A 2011-10-31 2011-10-31 Aparelho e método para transferir processos detectores de evento BR112014010370B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2011/069159 WO2013064171A1 (en) 2011-10-31 2011-10-31 Apparatus and method for transferring event detector processes

Publications (2)

Publication Number Publication Date
BR112014010370A2 BR112014010370A2 (pt) 2017-04-25
BR112014010370B1 true BR112014010370B1 (pt) 2021-08-10

Family

ID=45815572

Family Applications (2)

Application Number Title Priority Date Filing Date
BR112014010370-4A BR112014010370B1 (pt) 2011-10-31 2011-10-31 Aparelho e método para transferir processos detectores de evento
BR112014010348-8A BR112014010348B1 (pt) 2011-10-31 2012-03-14 Método e aparelho para migração de um detector de evento e sistema de computação distribuído para a migração de um detector de evento.

Family Applications After (1)

Application Number Title Priority Date Filing Date
BR112014010348-8A BR112014010348B1 (pt) 2011-10-31 2012-03-14 Método e aparelho para migração de um detector de evento e sistema de computação distribuído para a migração de um detector de evento.

Country Status (8)

Country Link
US (2) US9954932B2 (pt)
EP (2) EP2774035B1 (pt)
JP (2) JP5847953B2 (pt)
CN (2) CN104025051B (pt)
AU (2) AU2011380288B2 (pt)
BR (2) BR112014010370B1 (pt)
ES (2) ES2601804T3 (pt)
WO (2) WO2013064171A1 (pt)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2763041A1 (en) * 2013-01-31 2014-08-06 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus, method and computer program for processing out-of-order events
CH709742A1 (de) * 2014-06-05 2015-12-15 Swisstradingbox Ag Börsenhandelssystem.
US9891966B2 (en) 2015-02-10 2018-02-13 Red Hat, Inc. Idempotent mode of executing commands triggered by complex event processing
US10423468B2 (en) 2015-02-10 2019-09-24 Red Hat, Inc. Complex event processing using pseudo-clock
US10151215B2 (en) * 2015-06-01 2018-12-11 Solar Turbines Incorporated High speed recorder for a gas turbine engine
CN105105755B (zh) * 2015-06-25 2017-10-31 简极科技有限公司 一种智能球场系统及其数据获取方法
CN105786618B (zh) * 2016-02-24 2019-06-18 华为技术有限公司 加速器网络中路由报文的方法和装置
US11537419B2 (en) * 2016-12-30 2022-12-27 Intel Corporation Virtual machine migration while maintaining live network links
JP7070664B2 (ja) * 2018-03-30 2022-05-18 住友電気工業株式会社 システム、そのサーバコンピュータ、制御方法及びコンピュータプログラム
US11143055B2 (en) 2019-07-12 2021-10-12 Solar Turbines Incorporated Method of monitoring a gas turbine engine to detect overspeed events and record related data
US11411969B2 (en) * 2019-11-25 2022-08-09 Red Hat, Inc. Live process migration in conjunction with electronic security attacks
US11354207B2 (en) 2020-03-18 2022-06-07 Red Hat, Inc. Live process migration in response to real-time performance-based metrics
JP2022019145A (ja) * 2020-07-17 2022-01-27 富士通株式会社 イベントストリーム処理方法及びイベントストリーム処理プログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3231563B2 (ja) 1994-11-10 2001-11-26 日本電気株式会社 メッセージ到着順序制御方式
JPH09244984A (ja) * 1996-03-08 1997-09-19 Nippon Telegr & Teleph Corp <Ntt> イベント順序補正方法
US6052363A (en) * 1997-09-30 2000-04-18 Northern Telecom Limited Method for causal ordering in a distributed network
WO2004064292A2 (en) 2003-01-08 2004-07-29 Nokia Corporation Apparatus, and associated method, for performing packet zone timing operations at a mobile node operable in a packet radio communication system
US7010538B1 (en) * 2003-03-15 2006-03-07 Damian Black Method for distributed RDSMS
US7487206B2 (en) * 2005-07-15 2009-02-03 International Business Machines Corporation Method for providing load diffusion in data stream correlations
US9009234B2 (en) * 2007-02-06 2015-04-14 Software Ag Complex event processing system having multiple redundant event processing engines
CN100476742C (zh) 2007-02-09 2009-04-08 华中科技大学 基于对象存储设备的负载平衡方法
CN101441528B (zh) * 2007-11-19 2011-03-02 华硕电脑股份有限公司 计算机系统的输入装置与其操作方法
US8479216B2 (en) * 2009-08-18 2013-07-02 International Business Machines Corporation Method for decentralized load distribution in an event-driven system using localized migration between physically connected nodes and load exchange protocol preventing simultaneous migration of plurality of tasks to or from a same node
US8370560B2 (en) 2009-11-16 2013-02-05 International Business Machines Corporation Symmetric live migration of virtual machines
JP5504872B2 (ja) * 2009-12-16 2014-05-28 日本電気株式会社 データストリーム処理システム及び方法、処理ノード再配置装置及びプログラム
US9116749B2 (en) * 2010-04-05 2015-08-25 Futurewei Technologies, Inc. Method for dynamic on demand startup of a process or resource
CN102223597A (zh) * 2010-04-15 2011-10-19 上海启电信息科技有限公司 一种移动定位装置
US8521974B2 (en) * 2010-11-23 2013-08-27 International Business Machines Corporation Migration of data in a distributed environment
US8478743B2 (en) * 2010-12-23 2013-07-02 Microsoft Corporation Asynchronous transfer of state information between continuous query plans

Also Published As

Publication number Publication date
CN103907092B (zh) 2017-03-08
CN104025051B (zh) 2017-05-03
US20140280448A1 (en) 2014-09-18
US9537937B2 (en) 2017-01-03
AU2011380288A1 (en) 2014-04-17
ES2555578T3 (es) 2016-01-05
US9954932B2 (en) 2018-04-24
EP2774035B1 (en) 2016-08-03
WO2013064273A1 (en) 2013-05-10
JP2015501031A (ja) 2015-01-08
BR112014010370A2 (pt) 2017-04-25
EP2774036A1 (en) 2014-09-10
EP2774036B1 (en) 2015-09-16
AU2012331452B2 (en) 2015-06-18
CN103907092A (zh) 2014-07-02
AU2012331452A1 (en) 2014-04-10
US20140297800A1 (en) 2014-10-02
AU2011380288B2 (en) 2015-09-17
WO2013064171A1 (en) 2013-05-10
CN104025051A (zh) 2014-09-03
BR112014010348B1 (pt) 2021-08-03
JP2015501493A (ja) 2015-01-15
ES2601804T3 (es) 2017-02-16
EP2774035A1 (en) 2014-09-10
JP5847953B2 (ja) 2016-01-27
BR112014010348A2 (pt) 2017-04-18
JP5847956B2 (ja) 2016-01-27

Similar Documents

Publication Publication Date Title
BR112014010370B1 (pt) Aparelho e método para transferir processos detectores de evento
BR112014010298B1 (pt) Aparelho para encomendar um primeiro evento e um segundo evento, sistema de computação distribuído para determinar eventos e método para encomendar um primeiro evento e um segundo evento
CN108322280B (zh) 一种分布式计算机网络时钟同步延时补偿方法
Du et al. Clock-RSM: Low-latency inter-datacenter state machine replication using loosely synchronized physical clocks
EP2951692A1 (en) Apparatus, method and computer program for processing out-of-order events
Mutschler et al. Distributed low-latency out-of-order event processing for high data rate sensor streams
Demirbas Scalable design of fault-tolerance for wireless sensor networks
Bovenzi et al. A statistical anomaly-based algorithm for on-line fault detection in complex software critical systems
Freitag et al. Dynamic interference quantification for multicore processors
Mutschler et al. Runtime migration of stateful event detectors with low-latency ordering constraints
Ravindran et al. Assessment of QoS adaptation capability of complex network systems
Lee Adaptive TCP Flow Control for Improving Performance of Mobile Cloud Clusters

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 31/10/2011, OBSERVADAS AS CONDICOES LEGAIS.