BR112012012942B1 - sistema e método para fornecer qualidade de serviço em uma fábrica de mensagem de área ampla - Google Patents

sistema e método para fornecer qualidade de serviço em uma fábrica de mensagem de área ampla Download PDF

Info

Publication number
BR112012012942B1
BR112012012942B1 BR112012012942-2A BR112012012942A BR112012012942B1 BR 112012012942 B1 BR112012012942 B1 BR 112012012942B1 BR 112012012942 A BR112012012942 A BR 112012012942A BR 112012012942 B1 BR112012012942 B1 BR 112012012942B1
Authority
BR
Brazil
Prior art keywords
message
quality
computer
latency
path
Prior art date
Application number
BR112012012942-2A
Other languages
English (en)
Other versions
BR112012012942A2 (pt
Inventor
Kyriakos Karenos
Fan Ye
Minkyong Kim
Hui Lei
Dimitrios Pendarakis
Hao Yang
Original Assignee
International Business Machines Corporation
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 International Business Machines Corporation filed Critical International Business Machines Corporation
Publication of BR112012012942A2 publication Critical patent/BR112012012942A2/pt
Publication of BR112012012942B1 publication Critical patent/BR112012012942B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

SISTEMA E MÉTODO PARA FORNECER QUALIDADE DE SERVIÇO EM UMA FÁBRICA DE MENSAGEM DE ÁREA AMPLA Técnicas para transmitir dados de acordo com pelo menos um requisito de qualidade de serviço. Um caminho de mensagem é calculado especificando uma sequência de computadores intermediários selecionada a partir de uma rede de computadores intermediários interconectados. O caminho de mensagem é estimado estatisticamente para satisfazer o pelo menos um requisito de qualidade de serviço . Métrica de qualidade de serviço é recebida sobre a rede de computadores intermediários interconectados. Se o caminho de mensagem é determinado para não satisfazer a requisito de qualidade de serviço, um novo caminho de mensagem é calculado especificando uma nova sequência de computadores intermediários selecionada a partir da rede de computadores intermediários interconectados. O novo caminho de mensagem é estimado estatisticamente para satisfazer o pelo menos um requisito de qualidade de serviço.

Description

FUNDAMENTOS DA INVENÇÃO Campo da invenção
[0001] A presente invenção se refere em geral ao envio de mensagem. Mais especificamente, a presente invenção se refere a técnicas para prover qualidade de serviço (QoS) para a transmissão de mensagens por redes que potencialmente cobrem uma grande área geográfica.
Descrição dos Fundamentos
[0002] Qualidade de serviço (QoS) é um requisito, conjunto de requisitos, impostos na transferência de dados por uma rede de computador. Uma rede que provê qualidade de serviço é configurada para causar transferências de dados a ser realizadas de acordo com o requisito ou conjunto de requisitos. A rede pode prover uma garantia que os requisitos da qualidade de serviço serão reforçados. A qualidade de serviços (QoS) do substrato de envio de mensagem desempenha um papel crítico no desempenho global do sistema como percebido pelos usuários finais.
[0003] Mensagens de publicação/assinatura é um mecanismo fundamental para interconectar diferentes serviços e sistemas na arquitetura de computação orientada por serviço moderno. No paradigma de publicação/assinatura, publicadores transmitem mensagens para assinantes. Cada mensagem pode estar associada com um tópico específico. Um assinante pode assinar para um tópico de maneira a receber mensagens transmitidas por publicadores naquele tópico. Um número arbitrário de assinantes pode assinar para o mesmo tópico. É notado que publicar/assinar comumente é abreviado como "pub/sub".
SUMÁRIO DA INVENÇÃO
[0004] Um aspecto da invenção é um método para transmitir dados de acordo com pelo menos um requisito de qualidade de serviço. O método inclui calcular um caminho de mensagem que especifica uma sequência de computadores intermediários selecionada a partir de uma rede de computadores intermediários interconectados. A sequência começa com um computador intermediário inicial conectado com um computador remetente e termina com um computador intermediário final conectado com um computador de recepção. O caminho de mensagem é estimado estatisticamente para satisfazer a pelo menos um requisito de qualidade de serviço. Uma operação de transmissão transmite uma mensagem a partir do computador intermediário inicial para o computador de recepção através da sequência de computadores intermediários especificados pelo caminho de mensagem. O método inclui adicionalmente receber métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados. Uma operação de determinação determina se o caminho de mensagem satisfaz a pelo menos um requisito de qualidade de serviço com base em uma métrica de qualidade de serviço. Se o caminho de mensagem é determinado para não satisfazer a pelo menos um requisito de qualidade de serviço, a operação de cálculo é repetida para um novo caminho de mensagem especificando uma nova sequência de computadores intermediários selecionada a partir da rede de computadores intermediários interconectados. O novo caminho de mensagem é estimado estatisticamente para satisfazer a pelo menos um requisito de qualidade de serviço.
[0005] Outro aspecto da invenção é um computador intermediário acoplado com uma rede de computadores intermediários interconectados para transmitir dados de acordo com pelo menos um requisito de qualidade de serviço. O computador intermediário inclui uma unidade de cálculo configurada para calcular um caminho de mensagem especificando uma sequência de computadores intermediários selecionada a partir da rede de computadores intermediários interconectados. A sequência começa com um computador intermediário inicial conectado com um computador remetente e termina com um computador intermediário final conectado com um computador de recepção. O caminho de mensagem é estimado estatisticamente para satisfazer a pelo menos um requisito de qualidade de serviço.
[0006] O computador intermediário inclui adicionalmente uma unidade de transmissão e uma unidade de recepção. A unidade de transmissão está configurada para transmitir uma mensagem a partir do computador intermediário inicial para o computador de recepção através da sequência de computadores intermediários especificados pelo caminho de mensagem. A unidade de recepção está configurada para receber métrica de qualidade de serviço sobre a rede de computador intermediário interconectado. Uma unidade de determinação do computador intermediário está configurada para determinar se o caminho de mensagem satisfaz a pelo menos um requisito de qualidade de serviço com base em uma métrica de qualidade de serviço. Se o caminho de mensagem é determinado para não satisfazer a pelo menos um requisito de qualidade de serviço, a unidade de determinação faz com que a unidade de cálculo calcule um novo caminho de mensagem especificando uma nova sequência de computadores intermediários selecionada a partir da rede de computadores intermediários interconectados. O novo caminho de mensagem é estimado estatisticamente para satisfazer a pelo menos um requisito de qualidade de serviço.
[0007] Mais um aspecto da invenção é um produto de programa de computador para transmitir dados de acordo com pelo menos um requisito de qualidade de serviço. O produto de programa de computador compreende um meio de armazenamento legível por computador tendo código de programa legível por computador incorporado com o mesmo. O código de programa legível por computador está configurado para: calcular um caminho de mensagem especificando uma sequência de computadores intermediários selecionada a partir de uma rede de computadores intermediários interconectados, a sequência começando com um computador intermediário inicial conectado com um computador remetente, a sequência terminando com um computador intermediário final conectado com um computador de recepção, o caminho de mensagem sendo estimado estatisticamente para satisfazer a pelo menos um requisito de qualidade de serviço; transmitir uma mensagem a partir do computador intermediário inicial para o computador de recepção através da sequência de computadores intermediários especificados pelo caminho de mensagem; receber métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados; determinar se o caminho de mensagem satisfaz a pelo menos um requisito de qualidade de serviço com base em uma métrica de qualidade de serviço; e se o caminho de mensagem é determinado para não satisfazer a pelo menos um requisito de qualidade de serviço, executar o código de programa de cálculo para um novo caminho de mensagem especificando uma nova sequência de computadores intermediários selecionada a partir da rede de computadores intermediários interconectados, o novo caminho de mensagem sendo estimado estatisticamente para satisfazer a pelo menos um requisito de qualidade de serviço.
BREVE DESCRIÇÃO DOS DESENHOS
[0008] O assunto que é considerado como a invenção é particularmente destacado e distintamente reivindicado nas reivindicações na conclusão da especificação. Os objetivos anteriores e outros objetivos, funcionalidades, e vantagens da invenção são aparentes a partir da seguinte descrição detalhada tomados em conjunto com os desenhos anexos em que: A FIG. 1 mostra um exemplo de ambiente que incorpora a presente invenção. A FIG. 2 ilustra um exemplo de caminho de mensagem. A FIG. 3 demonstra um exemplo de sequência de operações para transmitir dados de acordo com pelo menos um requisito de qualidade de serviço. A FIG. 4 demonstra um exemplo de sequência de operações para receber métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados. A FIG. 5 demonstra um exemplo de sequência de operações para calcular um caminho de mensagem. A FIG. 6 demonstra um exemplo de sequência de operações para ordenar uma pluralidade de mensagens esperando transmissão através de um comum segmento de caminho de mensagem entre computadores intermediários. A FIG. 7 ilustra um exemplo de computador intermediário para transmitir dados de acordo com pelo menos um requisito de qualidade de serviço. A FIG. 8 ilustra um modelo de rede para uma concretização da presente invenção. A FIG. 9 demonstra um exemplo de estabelecimento de rota dentro da concretização. A FIG. 10 ilustra uma implementação do fluxo de WMB em cada intermediário de sobreposição na concretização. A FIG. 11 mostra um gráfico do atraso de ponta a ponta tanto para a concretização quanto para ligação direta.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[0009] A presente invenção é descrita com referência às concretizações da invenção. Através da descrição da invenção referência é feita às Figs. 1 a 11. Quando em referência às Figuras, estruturas e elementos semelhantes mostrados através da mesma são indicados com numerais de referência semelhantes.
[00010] Em referência agora à FIG. 1, um exemplo de ambiente 102 que incorpora a presente invenção é mostrado. É inicialmente notado que o ambiente 102 é apresentado para os propósitos de ilustração apenas, e é representativo de inúmeras configurações em que a invenção pode ser implementada. Assim, a presente invenção não deve ser interpretada como limitada para as configurações do ambiente mostradas e discutidas aqui.
[00011] O ambiente 102 inclui nós 104, 106, 108. Um nó pode ser qualquer um de uma grande variedade de dispositivos tecnológicos. Um nó pode ser implementado em hardware, software ou uma combinação dos mesmos. Um nó pode ser um computador ou pode ser software que executa em um computador. Em qualquer caso, o computador pode compreender um ou mais processadores de computador. Os nós podem ser heterogêneos em termos de características de hardware, características de software, ou ambos.
[00012] Um nó pode ser, ou pode compreender, um sensor 104. Um sensor pode gerar e transmitir dados de evento. Um nó também pode ser, ou pode compreender, um atuador 106. Um atuador pode receber e atuar nas diretivas de controle. Os sensores e atuadores podem ser distribuídos no campo.
[00013] Um nó também pode ser, ou pode compreender, um elemento de processamento 108. Um elemento de processamento pode incorporar capacidades de processamento da etapa final do processo (back-end), tais como capacidades analíticas. Um elemento de processamento pode realizar tarefas de processamento de back-end, tal como processamento de evento. Um elemento de processamento pode estar localizado em um centro de dados ou um escritório de back-end.
[00014] É notado que enquanto três nós são suficientes para demonstrar a presente invenção, o número de nós incluídos no ambiente não está limitado a três. Pelo contrário, o número de nós pode ser muito grande.
[00015] Os nós 104, 106, 108 são interconectados entre si. Esta interconexão permite que os nós se comuniquem entre si. É enfatizado que como um resultado, os sensores 104 e atuadores 106 incluídos no ambiente são interconectados com, e podem se comunicar com, os elementos de processamento 108.
[00016] É enfatizado que o ambiente 102 pode ser distribuído por uma grande área geográfica. Especificamente, quaisquer nós incluídos no ambiente, incluindo quaisquer sensores 104 e atuadores 106, podem ser distribuídos por uma grande área geográfica.
[00017] Os nós incluídos no ambiente 102 podem constituir um sistema acionado por evento. Assim, alguns nós, tais como os sensores 104, podem gerar eventos. Outros nós, tais como os elementos de processamento 108, podem responder aos eventos.
[00018] O ambiente 102 inclui adicionalmente uma pluralidade de computadores intermediários 110. Um computador intermediário pode ser um computador de propósito geral. Tal computador pode incorporar qualquer um de uma grande variedade de arquiteturas. O computador pode ser baseado em um sistema de operação de propósito geral tal como o sistema de operação z/OS® de IBM®, o sistema operacional AIX® de IBM, o sistema operacional Linux®, qualquer um de sistema operacional UNIX® ou o sistema operacional Windows®. IBM, z/OS e AIX são marcas registradas de International Business Machines Corporation, Armonk, Nova Iorque, Estados Unidos da América, nos Estados Unidos da América, outros países, ou ambos. Linux® é a marca registrada de Linus Torvalds nos Estados Unidos da América e outros países. UNIX é uma marca registrada do Grupo Aberto nos Estados Unidos da América e outros países. Windows é uma marca registrada de Microsoft Corporation, Redmond, Washington, Estados Unidos da América, nos Estados Unidos da América e/ou outros países. Um computador intermediário também pode ser um computador de propósito especial fabricado especificamente para implementar a presente invenção.
[00019] Um computador intermediário 110 pode compreender um ou mais processadores de computador. Um computador intermediário também pode incorporar qualquer de uma grande variedade de produtos de programa de computador. Os computadores intermediários podem ser heterogêneos em termos de características de hardware, características de software, ou ambos.
[00020] O computador intermediário 110 pode compreender um aplicativo de software ou produto de programa de computador incorporando lógica que implementa qualquer uma das ou todas as operações descritas aqui a seguir como sendo realizadas pelo computador intermediário. Assim, executando este aplicativo de software ou produto de programa de computador no computador intermediário faz com que o computador intermediário atue como um intermediário de acordo com a presente invenção.
[00021] Os computadores intermediários 110 são interconectados entre si de maneira a formar uma rede 112. Os computadores intermediários interconectados coletivamente implementam uma malha de mensagens que interconecta os nós 104, 106, 108. Para alcançar este objetivo, os computadores intermediários interconectados transmitem mensagens entre os nós. A malha de mensagens pode ser middleware.
[00022] A malha de mensagens provê funcionalidade de mensagens. Mensagens podem incluir qualquer um de uma grande variedade de técnicas para trocar informação. Mensagens podem ser implementadas usando uma grande variedade de métodos. Mensagens podem ser providas como uma camada em um sistema mais largo que provê conectividade de nível de aplicativo para todos os componentes dentro do sistema mais amplo. De maneira apropriada, mensagens podem ser um mecanismo que facilita a integração de componentes de sistema diverso.
[00023] Em uma concretização da presente invenção, os computadores intermediários 110, os nós 104, 106, 108, ou ambos implementam o padrão de Sistema de Mensagens Java™. Java é uma marca ou marca registrada de Sun Microsistemas, Inc., Santa Clara, Califórnia, Estados Unidos, ou os seus subsidiários nos Estados Unidos da América e outros países. Os anteriores componentes de sistema podem empregar este padrão para entender a troca de mensagens entre os mesmos.
[00024] Os computadores intermediários 110 podem ser pares em uma estrutura de rede de pessoa para pessoa. Desta forma, os intermediários podem não ser designados os papéis de clientes e servidores.
[00025] Os computadores intermediários 110, e a malha de mensagens implementada desta forma, pode ser espalhada por uma grande área geográfica. Isto facilita de maneira vantajosa a conexão de nós que em si são espalhados por uma grande área geográfica.
[00026] O ambiente 102 pode ser um sistema distribuído. Neste sentido, os nós 104, 106, 108, os computadores intermediários 110, ou ambos podem ser distribuídos.
[00027] Cada nó 104, 106, 108 incluído no ambiente pode ser conectado com um ou mais computadores intermediários 110. A conexão entre um nó e um computador intermediário pode ser efetuado por um componente de ligação 114.
[00028] Cada nó pode ser diretamente conectado com um número de computadores intermediários. Isto é possível pois um nó pode se comunicar com outros nós através de um computador intermediário em que é conectado. Este computador intermediário pode fazer com que a comunicação seja retransmitida para o nó de destino. Um nó ode ainda estar inconsciente de computadores intermediários diferentes do que aqueles em que está diretamente conectado.
[00029] Em uma concretização da presente invenção, cada nó está diretamente conectado com um ou menos computadores intermediários. Em uma concretização da presente invenção, cada nó está conectado diretamente com dois ou menos computadores intermediários. Em outra concretização da presente invenção, cada nó está conectado diretamente com três ou menos computadores intermediários.
[00030] O ambiente 102 pode incluir adicionalmente uma pluralidade de domínios de mensagem diferentes 116. Domínios de mensagem diferentes podem ser distribuídos em diferentes localizações. Domínios de mensagem diferentes podem ser associados com diferentes organizações. Domínios de mensagem diferentes podem empregar diferentes protocolos de rede. Diferentes nós 104, 106, 108 podem estar localizados em diferentes domínios de mensagem. Da mesma forma, diferentes computadores intermediários 110 podem estar localizados em diferentes domínios de mensagem. Entidades dentro de um domínio de mensagem comum podem ser consideradas como sendo locais entre si.
[00031] Por razões de desempenho, qualquer um dos ou todos os nós 104, 106, 108 no ambiente 102 podem ser conectados com um computador intermediário 102 que está localizado dentro do mesmo domínio de mensagem 116. Assim, um domínio de mensagem pode compreender um ou mais computadores intermediários e todos os nós que são conectados com qualquer computador intermediário compreendido pelo domínio de mensagem. Os computadores intermediários compreendidos pelo domínio de mensagem então podem ser responsáveis pela comunicação entre nós compreendidos pelo domínio de mensagem e nós em outros domínios de mensagem.
[00032] O ambiente inclui adicionalmente uma ou mais redes 118. Uma rede pode ser qualquer um de uma grande variedade de sistemas conhecidos na técnica para permitir que dois ou mais sistemas se comuniquem. Uma rede pode ser, ou pode compreender, a Internet pública ou um subconjunto dos mesmos. Uma rede também pode ser, ou pode compreender, qualquer tipo de rede pública, tal como a rede de telefone comutado público (PSTN) . Uma rede também pode ser, ou pode compreender, uma rede privada virtual (VPN) ou qualquer tipo de rede privada. Uma rede pode ser, ou pode compreender, uma rede de área larga (WAN) ou uma rede de área local (LAN). De maneira notável, as redes podem ser heterogêneas, apesar de isso não ser necessário.
[00033] Uma rede 118 pode empregar qualquer uma de uma grande variedade de tecnologias de rede tal como ethernet, IEEE 802.11, IEEE 802.16, a tecnologia de Bluetooth®, token ring, Linha de Assinante Digital (DSL), acesso de Internet por cabo, acesso de Internet por satélite, Rede Digital de Serviços Integrados (ISDN) e acesso de Internet discada. Bluetooth é uma marca registrada de Bluetooth SIG, Inc., Bellevue, Washington, Estados Unidos da América. Uma rede pode incluir várias topologias e protocolos conhecidos para os peritos na técnica, tal como TCP/IP, UDP, e Protocolo de Voz por Internet (VoIP). Uma rede pode compreender conexões físicas diretas, ondas de rádio, micro-ondas ou qualquer combinação dos mesmos. Adicionalmente, uma rede pode incluir vários dispositivos de rede conhecidos do perito na técnica, tal como roteadores, comutadores, pontes, repetidores, etc.
[00034] Os computadores intermediários interconectados 110 podem se comunicar através de qualquer uma ou todas as redes 118. Mais especificamente, mensagens transmitidas por qualquer um dos computadores intermediários podem ser transmitidas por qualquer uma ou todas as redes. É enfatizado que uma malha de mensagens que implementa a presente invenção pode ser distribuída para facilitar envio de mensagens através dos tipos anteriores de redes.
[00035] Os computadores intermediários interconectados 110 podem ser conectados entre si através de ligações de rede 120. As ligações de rede podem ser providas através de qualquer uma ou todas as redes 118. Cada computador intermediário pode ter ligações de rede direta para apenas um pequeno número de computadores intermediários vizinhos. Se um computador intermediário deseja se comunicar com um computador intermediário em que não é diretamente ligado, a comunicação pode ser roteada através de outros computadores intermediários até alcançar o computador intermediário de destino. É enfatizado que como um resultado, conexões em par entre cada par de computadores intermediários não são necessárias.
[00036] É notado que WAN's, incluindo a Internet pública, apresentam vários desafios a partir de um ponto de vista de comunicações. Falando de maneira geral, WAN's possuem diferentes padrões de dinâmica e falha do que LAN's, tais como a rede encontrada em um centro de dados. Especificamente, já que as WAN's tipicamente são espalhadas por uma grande área geográfica, comunicações através de WAN's são frequentemente comunicações de longo alcance. Como um resultado, comunicação através de WAN's frequentemente possui baixa confiabilidade (por exemplo, é propenso ao erro). Comunicação através de WAN's também frequentemente possui alta latência, ou latência muito alta, entre os nós. Além disso, a Internet pública e outros serviços com base em Protocolo de Internet (IP) proveem apenas conectividade de melhores esforços. Os peritos na técnica vão perceber que a conectividade dos melhores esforços não oferece qualquer garantia de qualidade de serviço específica. Adicionalmente, aplicações tipicamente não podem controlar um comportamento de rede de uma WAN.
[00037] O ambiente 102, e comunicação entre os nós 104, 106, 108 incluídos no mesmo, pode facilitar qualquer uma de uma grande variedade de aplicações em qualquer um de uma grande variedade de domínios de aplicação. As aplicações podem incluir sem limitação de informação de aviação e sistemas de vigilância de espaço aéreo, sistemas de transporte inteligente, grades inteligentes para produção de energia e distribuição, redes de utilidade e de eletricidade inteligente, central de controle e comando para cidades inteligentes, gerenciamento de água inteligente, e resposta e preparação para emergência. As aplicações podem ser críticas da missão por natureza. Os nós podem ser pontos finais da aplicação.
[00038] Em adiantamento de tais aplicações, uma grande variedade de dados de evento e diretivas de controle pode ser transportada dentre os sensores 104, os atuadores 106, e os elementos de processamento 108 (possivelmente incluindo central de dados e escritórios de back-end em que os últimos estão localizados) através da malha de mensagens. Isto pode ocorrer para qualquer uma das aplicações descritas acima. No entanto, é contemplado que os dados de evento específicos e diretivas de controle variam dependendo da aplicação específica.
[00039] Em muitas situações, dados transmitidos de acordo com a presente invenção, tais como os dados gerados pelos sensores e diretivas de controle, são sensíveis ao tempo, críticos da missão, ou ambos. Por exemplo, os sensores em uma grade de energia podem monitorar o estado da grade e detectar possíveis falhas de energia. Estes sensores podem gerar eventos. Um evento pode ser um alarme que indica uma possível falha de energia. A menor que o alarme seja recebido prontamente, pode ser muito tarde para evitar uma saída de energia atual. Assim, os eventos gerados pelos sensores claramente devem ser distribuídos de uma maneira confiável, como falha para detectar um alarme é claramente perigoso. Segue que estes dados de sensor que indicam um evento de falha dentro de uma grade de energia são claramente sensíveis ao tempo e críticos da missão.
[00040] Similarmente, dados de sensor que indicam uma localização de uma ou mais aeronaves suspeitas são claramente sensíveis ao tempo e críticos da missão. Comandos de controle de comutação também são comumente sensíveis ao tempo e críticos de missão. Mais em geral, muitas aplicações conhecidas na técnica necessitam de informação a ser distribuída de uma maneira sensível ao tempo e altamente confiável.
[00041] A malha de mensagens é operável para prover uma qualidade de serviço (QoS) definida, e, portanto, previsível. Em outras palavras, a malha de mensagens tem conhecimento de QoS. A provisão de QoS pode incluir efetuar um ou mais requisitos de qualidade de serviço para mensagens e dados transmitidas através da malha de mensagens. Os requisitos de QoS que podem ser reforçados pela malha de mensagens incluem sem limitação latência, confiabilidade, disponibilidade e rendimento. Os requisitos de QoS podem ser reforçados em uma base de ponta a ponta.
[00042] A presente invenção compreende uma armação e conjunto de mecanismos para prover esta qualidade de serviço definida dentro da malha de mensagens. Isto é alcançado efetivamente endereçando à dinâmica e a heterogeneidade das subjacentes redes e sistemas sobre os quais a malha de mensagens opera. Isto é adicionalmente alcançado endereçando a qualquer condição de falha que ocorre dentro das redes e sistemas.
[00043] A provisão de uma QoS previsível definida pode fazer beneficamente que as mensagens sejam distribuídas pelos componentes e subsistemas de uma maneira confiável e oportuna. Isto é claramente vantajoso no caso de dados que são sensíveis ao tempo, críticos da missão ou ambos.
[00044] Além disso, diferentes mensagens podem ter diferentes requisitos de QoS. Requisitos de QoS diferenciados podem ser especificados com base em uma grande variedade de critérios. Requisitos de QoS podem ser especificados por tópico de mensagem, tal que todas as mensagens que pertencem a um tópico especificado dividem um conjunto de requisitos de QoS. Os requisitos de QoS podem ser especificados por sessão de conexão, tal que todas as mensagens dentro de uma sessão de conexão dividem um conjunto de requisitos de QoS. Os requisitos de QoS podem até ser especificados para uma mensagem individual.
[00045] De maneira a transmitir uma mensagem, um nó de envio 104, 106, 108 inicialmente pode transmitir a mensagem para um computador intermediário 110 em que o nó de envio é conectado. Este computador intermediário então pode determinar um caminho de roteamento para a mensagem. O caminho de roteamento pode compreender uma sequência de computadores intermediários. Adjacentes computadores intermediários nesta sequência podem ser diretamente conectados entre si. Assim, cada computador intermediário, por sua vez, pode transmitir a mensagem para o próximo computador intermediário na sequência. O computador intermediário final na sequência então pode transmitir a mensagem para o nó de recepção. O caminho de roteamento também pode especificar o nó de envio, o nó de recepção, ou ambos.
[00046] A presente invenção inclui um algoritmo de roteamento configurado para estabelecer caminhos de roteamento como descrito acima. Estes caminhos de roteamento estão sujeitos aos requisitos de QoS de ponta a ponta, incluindo qualquer requisito de latência e disponibilidade assim imposto.
[00047] Os computadores intermediários 110 podem monitorar as redes, os computadores intermediários, os nós 104, 106, 108, ou qualquer combinação dos mesmos. O monitoramento pode ser realizado periodicamente. O monitoramento também pode ser crônico e contínuo. Tal monitoramento pode detectar que os requisitos de QoS são violados para um ou mais caminhos de roteamento. Os requisitos de QoS são considerados como sendo violados quando o desempenho atual do caminho de roteamento contradiz qualquer um dos ou todos os requisitos de QoS. Sempre que uma violação de requisitos de QoS é detectada, os caminhos de roteamento são ajustados. O caminho de roteamento ajustado é intencionado a se conformar para os requisitos de QoS. Desta maneira, a presente invenção automaticamente gerencia os caminhos de roteamento para garantir que eles se conformam para os requisitos de QoS mesmo quando as condições de rede e o estado de sistema mudam com o tempo.
[00048] Em uma concretização da presente invenção, uma mensagem é transmitida usando roteamento de múltiplos caminhos. Especificamente, uma pluralidade de caminhos de roteamento é determinada como descrito acima. Replicação de mensagem é realizada tal que uma cópia duplicata da mensagem é transmitida ao longo de cada um dos caminhos de roteamento. Assim, a mensagem será recebida desde que um caso da mensagem alcança o seu destino. Isto pode ocorrer mesmo se um subconjunto apropriado de caminhos de roteamento falhar.
[00049] Como um resultado, roteamento de múltiplos caminhos vantajosamente aumenta a confiabilidade do envio de mensagens. Isto ajuda a alcançar requisitos de QoS com relação à confiabilidade. Além disso, roteamento de múltiplos caminhos aumenta a probabilidade de encontrar um requisito de QoS especificando uma latência máxima. Isto ocorre pois mesmo se um caso da mensagem é atrasado, outro caso da mensagem ainda pode chegar a tempo. No entanto, as vantagens anteriores são alcançadas no custo de tráfego aumentado.
[00050] É notado que roteamento de múltiplos caminhos não necessita inerentemente de reconhecimento e retransmissão da mensagem. Assim, roteamento de múltiplos caminhos não causa a penalidade de latência associada com este reconhecimento e retransmissão.
[00051] Em uma concretização da presente invenção, os computadores intermediários 110 coletivamente pode implementar uma malha de mensagens que provê troca de mensagens de acordo com a paradigma de publicação/assinatura. Neste paradigma e concretização, um publicador publica informação. O publicador pode ser um nó 104, 106, 108 no ambiente 102. A informação pode incluir qualquer tipo de dados e pode ser expressa na forma de uma mensagem. Assinantes que estão interessados na informação assinam a mesma. Os assinantes também podem ser nós no ambiente. Um número arbitrário ou possivelmente grande de assinantes pode assinar para a informação transmitida por um único publicador. O publicador transmite a informação para um computador intermediário. O computador intermediário então despacha a informação para cada dos assinantes, possivelmente com a assistência de outros computadores intermediários. É enfatizado que como um resultado, QoS é provido para a troca de mensagens de acordo com o paradigma de publicação/assinatura.
[00052] É notado que os nós podem ser pontos finais dos publicadores e assinantes como opostos aos publicadores e assinantes em si.
[00053] Como notado acima, cada nó pode ser conectado com um computador intermediário local. Como os publicadores e assinantes são nós, cada publicador e cada assinante, ou os pontos finais dos mesmos, assim podem ser conectados com um computador intermediário local, por exemplo, um computador intermediário no mesmo domínio de mensagem 116. Reciprocamente, cada computador intermediário pode ser anexado com pelo menos um publicador e pelo menos um assinante no mesmo domínio de mensagem.
[00054] Em uma concretização adicional da presente invenção, o paradigma de publicação/assinatura é baseado em tópico. Tópicos ajudam os publicadores e assinantes no entendimento de quais dados são úteis para a outra parte. Um tópico pode ser interpretado como um marcador que é aplicável para toda a informação associada com uma categoria identificada pelo tópico. De maneira apropriada, um publicador especifica um tópico que descreve uma informação publicada desta forma. Um assinante então pode assinar para este tópico de maneira a receber esta informação. Um número arbitrário e possivelmente grande de assinantes pode assinar para um único tópico. Requisitos de QoS diferenciados podem ser especificados para cada tópico de mensagem como descrito acima.
[00055] Assim, para cada tópico, os computadores intermediários podem estabelecer e gerenciar caminhos de roteamento como descrito acima de maneira a conectar todos os publicadores e assinantes no ambiente 102 que publicam ou assinam naquele tópico. Os caminhos de roteamento são estabelecidos submetidos aos requisitos de QoS da aplicação e o estado de sistema.
[00056] É notado que malhas de mensagens de publicação/assinatura são eficientes para permitir que grandes números de componentes de sistema para se comunicar entre si. Além disso, nos sistemas de publicar/assinar, um assinante não é necessário de estar consciente da identidade do publicador, e vice-versa. Assim, produtores e consumidores de informação são desacoplados. Como um resultado, a capacidade de escalonamento do sistema de mensagem é aumentada. Além disso, publicadores e assinantes não precisam permanecer online em todos os momentos. Adicionalmente, não estando conscientes da identidade de outros participantes aumenta a segurança e a privacidade. Permitindo mensagens de publicação/assinatura, esta concretização vantajosamente provê as seguintes vantagens.
[00057] Adicionalmente, o paradigma de publicação/assinatura é vantajoso para implementar arquiteturas orientadas por serviço (SOA's). Assim, esta concretização vantajosamente facilita a comunicação dentro das SOA's.
[00058] Em outra concretização da presente invenção, os computadores intermediários coletivamente podem implementar uma malha de mensagens que provê troca de mensagem de acordo com um paradigma de ponto a ponto. Na troca de mensagem de ponto a ponto, um único remetente envia uma mensagem para um único receptor. É enfatizado que como um resultado, QoS é provido para a troca de mensagens de acordo com o paradigma de ponto a ponto. É notado que troca de mensagem de ponto para ponto tipicamente é síncrona. O remetente está consciente da identidade do receptor, e vice- versa. Tanto o remetente quanto o receptor em geral deve estar online de maneira a se comunicar. Troca de mensagem de ponto para ponto também é conhecida na técnica como comunicação de envio e recebimento.
[00059] Os paradigmas de envio de mensagem que podem ser providos pela malha de mensagens que implementa a presente invenção não estão limitados para os anteriores. Os computadores intermediários coletivamente podem implementar uma malha de mensagens que provê a troca de mensagens de acordo com qualquer de uma grande variedade de paradigmas de troca de mensagem avançados. Adicionalmente, a malha de mensagens pode implementar múltiplos paradigmas de troca de mensagem. Por exemplo, a mesma malha de mensagens pode prover tanto a troca de mensagens de acordo com a paradigma de publicação/assinatura quanto à troca de mensagens de acordo com um paradigma de ponto a ponto.
[00060] Em uma concretização da presente invenção, a malha de mensagens emprega uma abordagem com base em sobreposição. Especificamente, um conjunto de computadores intermediários são interconectados através de uma rede de sobreposição de camada de Aplicação. Os requisitos de QoS são endereçados através de um conjunto de mecanismos de programação de recurso e roteamento de sobreposição. O algoritmo de roteamento é um algoritmo de roteamento de sobreposição. Os mecanismos de roteamento de sobreposição podem ser operáveis para redirecionar de maneira inteligente mensagens para desviar uma ligação de rede com falha ou congestionada.
[00061] É enfatizado que uma malha de mensagens que implementa a presente invenção vantajosamente é capaz de gerenciar os problemas de confiabilidade e latência inerentes para WAN's. Portanto, uma malha de mensagens que implementa a presente invenção garante que os requisitos de QoS são satisfeitos até quando a malha de mensagens transmite mensagens por WAN's, incluindo a Internet pública. Adicionalmente, de maneira que uma malha de mensagens para interconectar sensores 104 e atuadores 106 sobre uma grande área geográfica, pode ser vantajoso ou necessário que a malha de mensagens opere sobre WAN's, a Internet pública, ou ambos. Assim, a presente invenção vantajosamente permite que os sensores e os atuadores sejam interconectados por uma grande área geográfica enquanto mantêm padrões de QoS.
[00062] Similarmente, uma malha de mensagens que implementa a presente invenção garante que os requisitos de QoS são satisfeitos mesmo quando a malha de mensagens transmite mensagens por redes heterogêneas.
[00063] Além disso, malhas de mensagens que implementam a presente invenção vantajosamente podem prover QoS mesmo se as redes subjacentes empregadas pela malha de mensagens falham em prover quaisquer garantias de QoS. Isto é possível já que a presente invenção é capaz de redirecionar mensagens de maneira inteligente para desviar linhas de rede congestionadas ou que falharam sem necessitar de qualquer intervenção pelas redes subjacentes. Isto pode ser alcançado usando roteamento de sobreposição como descrito acima. Como a Internet pública não provê quaisquer garantias de QoS, estas propriedades beneficamente permitem que as malhas de mensagens que implementam a presente invenção sejam distribuídas, e para prover QoS, para a Internet pública. Similarmente, muitas VPN's conhecidas na técnica não proveem garantias de QoS. Estas propriedades beneficamente permitem que as malhas de mensagens que implementam a presente invenção sejam distribuídas, e para prover QoS, para tais VPN's.
[00064] Similarmente, a presente invenção vantajosamente pode prover QoS mesmo sem o controle das redes físicas empregadas pela malha de mensagens. Já que as aplicações tipicamente não podem controlar no comportamento de rede de uma WAN, esta propriedade beneficamente permite que as malhas de mensagens que implementam a presente invenção provejam QoS sobre WAN's.
[00065] Uma malha de mensagens que implementa a presente invenção é beneficamente escalonável. Tal malha de mensagens pode conectar grandes números de nós, incluindo sensores, atuadores, ou ambos, enquanto mantêm padrões de QoS. Esta capacidade de escalonamento é possível já que, para as razões notadas acima, cada nó precisa apenas estar ciente de um pequeno número de computadores intermediários e cada computador intermediário precisa estar ciente apenas de um pequeno número de computadores intermediários vizinhos. De maneira notável, a presente invenção não necessita de conexões em par entre cada par de entidades através do sistema que desejam se comunicar. A minimização do número de conexões diretas é crítica para a capacidade de escalonamento do sistema.
[00066] Se voltando agora à FIG. 2, um exemplo de caminho de mensagem é ilustrado.
[00067] O caminho de mensagem e as entidades mostradas na FIG. 2 existem dentro de um ambiente 102 tal como o exemplo de ambiente mostrado na FIG. 1. No exemplo de ambiente, um sensor 104 está configurado para enviar dados de evento para um elemento de processamento 108. O elemento de processamento está configurado para receber e processar estes dados de evento. O sensor e o elemento de processamento são nós. Adicionalmente, o sensor e o elemento de processamento são computadores. O sensor é um publicador em um sistema de publicar/assinar, e o elemento de processamento é um assinante no sistema de publicar/assinar.
[00068] O sensor 104 está conectado diretamente com o computador intermediário "A" 110a. O sensor não está conectado diretamente com qualquer outro computador intermediário. O sensor e o computador intermediário "A" estão localizados no mesmo domínio de mensagem.
[00069] O elemento de processamento 108 está conectado diretamente com o computador intermediário "C" 110c. Como com o sensor, o elemento de processamento não está conectado diretamente com qualquer outro computador intermediário. O elemento de processamento e o computador intermediário "C" estão localizados no mesmo domínio de mensagem. Este domínio de mensagem é diferente do domínio de mensagem incluindo o sensor e o computador intermediário "A”.
[00070] Nenhuma conexão direta existe entre computador intermediário "A" 110a e o computador intermediário "C" 110c. No entanto, computador intermediário "A" está conectado diretamente com o computador intermediário "B" 110b. Computador intermediário "B" está conectado diretamente com o computador intermediário "C". Assim, a comunicação entre o computador intermediário "A" e o computador intermediário "C" pode ser alcançada através de roteamento da comunicação através do computador intermediário "B".
[00071] Um caminho de mensagem 202 é calculado para especificar uma rota em que as mensagens podem viajar através da rede de computadores intermediários interconectados 110. O caminho de mensagem especifica uma sequência de computadores intermediários selecionada a partir da rede de computadores intermediários interconectados. A sequência começa com um computador intermediário inicial 110a conectado com um computador remetente 104. O computador intermediário inicial e o computador remetente podem ser incluídos no mesmo domínio de mensagem. A sequência termina com um computador intermediário final 110c conectado com um computador de recepção 108. O computador intermediário final e o computador de recepção pode ser incluído no mesmo domínio de mensagem.
[00072] No exemplo de ambiente 102, o caminho de mensagem 202 especifica uma sequência começando com o computador intermediário "A" 110a. O próximo computador intermediário na sequência é o computador intermediário "B" 110b. A sequência termina com o computador intermediário "C" 110c.
[00073] Em uma concretização da presente invenção, o caminho de mensagem é o caminho de roteamento completo. O caminho de mensagem não precisa especificar de maneira expressa o computador remetente e o computador de recepção, por exemplo, o publicador e o assinante. Isto ocorre, pois, o computador remetente está conectado diretamente com o computador intermediário inicial e o computador de recepção está conectado diretamente com o computador intermediário final. Portanto, o caminho de mensagem é, por si só, suficiente para rotear para o computador remetente e o computador de recepção.
[00074] Em outra concretização da presente invenção, o caminho de mensagem é um subconjunto de um caminho de roteamento mais vasto incluindo elementos externos à rede de computadores intermediários interconectados. Por exemplo, um caminho de roteamento pode começar com o computador remetente 104. Os seguintes elementos no caminho de roteamento podem ser os computadores intermediários 110 incluídos no caminho de mensagem na ordem especificada. O caminho de roteamento então pode terminar com o computador de recepção 108.
[00075] O caminho de mensagem pode definir de maneira expressa ou implícita uma sequência de segmentos de caminho de mensagem 204. Um segmento de caminho de mensagem começa com um computador intermediário na sequência e termina com o subsequente computador intermediário na sequência. Assim, o caminho de mensagem 202 inclui dois segmentos de caminho de mensagem. Um segmento de caminho de mensagem 204ab começa com o computador intermediário "A" 110a e termina com o computador intermediário "B" 110b. Outro segmento de caminho de mensagem 204bc começa com o computador intermediário "B" 110b e termina com o computador intermediário "C" 110c. Cada segmento de caminho de mensagem pode representar a ligação de rede 120 entre os computadores intermediários conectados pelo segmento de caminho de mensagem.
[00076] O caminho de mensagem pode ser calculado por um ou mais dos computadores intermediários. Assim, as decisões de roteamento podem ser efetuadas pelos computadores intermediários. Em uma concretização da presente invenção, o caminho de mensagem é calculado pelo computador intermediário inicial 110a na sequência. Como notado acima, este computador intermediário está conectado diretamente com o computador remetente.
[00077] Independentemente, cada computador intermediário 110 na rede de computadores intermediários interconectados pode ser configurado para computar e instalar caminhos de mensagem como descrito acima. Como um resultado, cada computador intermediário pode calcular um caminho de mensagem adequado para mensagens que se originam a partir de um computador remetente em que o computador intermediário é conectado. O computador intermediário pode realizar este cálculo de maneira local, por exemplo, sem precisar consultar qualquer outro computador intermediário. Portanto, um único ponto de falha no processo de estabelecimento de caminho é beneficamente evitado.
[00078] O computador intermediário inicial 110a no caminho de mensagem pode receber uma mensagem a partir do nó de envio 104. O computador intermediário inicial pode direcionar a mensagem para o segundo computador intermediário na sequência. Cada computador intermediário na sequência, por sua vez, pode direcionar a mensagem para o próximo computador intermediário na sequência. O computador intermediário final 110c então pode direcionar a mensagem para o nó de recepção. É enfatizado que os computadores intermediários na sequência estão direcionando as mensagens em nome dos computadores intermediários nas bordas da sequência.
[00079] Assim, no exemplo de ambiente 102, computador intermediário "A" 110a recebe uma mensagem a partir do nó de envio 104. Computador intermediário "A" direciona a mensagem para computador intermediário "B" 110b. Computador intermediário "B" direciona a mensagem para computador intermediário "C" 110c. Computador intermediário "C" direciona a mensagem para o elemento de processamento 108.
[00080] Cada computador intermediário 110 na rede de computadores intermediários interconectados pode ser configurado para direcionar mensagens para intermediários vizinhos. De maneira apropriada, qualquer intermediário que recebe uma mensagem pode direcionar a mensagem para o próximo intermediário no caminho de mensagem para a mensagem.
[00081] Cada computador intermediário 110 na rede de computadores intermediários interconectados pode ser configurado para realizar mediação de mensagem. Tal mediação de mensagem pode incluir transformação de formato. Transformação de formato pode incluir a translação entre dois diferentes esquemas de Extensible Markup Language (XML). Extensible Markup Language e XML são marcas registradas (registradas em vários países) do Consórcio da World Wide Web; marcas de W3C são registradas e mantidas por suas instituições de hospedeiro MIT, ERCIM e Keio. Por exemplo, um publicador pode enviar em um esquema de XML e o assinante pode esperar um diferente esquema de XML.
[00082] Além disso, os computadores intermediários podem ser configurados para calcular orçamentos de latência 206. Um orçamento de latência é a quantidade de latência extra que pode ser tolerada se um requisito de QoS especificando uma latência máxima 208 deve ser satisfeito. Uma estimativa estatística 210 da latência do caminho de mensagem pode ter sido calculada. Neste caso, o orçamento de latência pode ser determinado através da subtração da latência estatisticamente estimada do caminho de mensagem a partir da latência máxima. O orçamento de latência então pode ser distribuído dentre os segmentos de caminho de mensagem.
[00083] Por exemplo, se os requisitos de QoS especificam uma latência máxima de 500 ms e a latência estatisticamente estimada do caminho de mensagem é 300 ms, o orçamento de latência é 200 ms. Este orçamento de latência pode ser distribuído dentre ambos os segmentos de caminho de mensagem 204ab, 204bc. O orçamento de latência pode ser distribuído de acordo com uma variedade de técnicas, provido que a soma do orçamento de latência designado para cada segmento não é maior do que 200 ms.
[00084] Um segmento de caminho de mensagem pode realizar diversos tipos de tráfego. As mensagens atravessando o segmento de caminho de mensagem, os tópicos das mensagens, ou ambos podem ter diferentes requisitos para a oportunidade. De maneira apropriada, orçamentos de latência diferenciais podem ser especificados de maneira dinâmica para diferentes mensagens ou tópicos que dividem o segmento de caminho de mensagem comum. Se dois caminhos de mensagem possuem um segmento de caminho de mensagem comum, e duas mensagens são pendentes de transmissão através do segmento de caminho de mensagem comum, o problema de programação pode ser resolvido transmitindo a mensagem ou o tópico tendo o menor orçamento de latência primeiramente. O orçamento de latência, portanto pode implicar a prioridade de uma mensagem. Orçamentos de latência assim beneficamente podem otimizar o desempenho de latência em cada segmento de caminho de mensagem, submetido aos requisitos de latência de ponta a ponta de todas as mensagens ou tópicos transmitidos através do segmento de caminho de mensagem.
[00085] Em uma concretização da presente invenção, como descrito acima, os computadores intermediários interconectados implementam um sistema de publicar/assinar. O computador remetente é um publicador, ou um ponto final do mesmo, no sistema de publicar/assinar. O computador de recepção é um assinante, ou um ponto final do mesmo, no sistema de publicar/assinar.
[00086] Um computador intermediário conectado com um publicador é conhecido como um computador intermediário que publica. O computador intermediário que publica pode ser localizado no mesmo domínio de mensagem como o publicador.
[00087] Da mesma forma, um computador intermediário conectado com um assinante é conhecido como um computador intermediário de assinatura. O computador intermediário de assinatura pode ser localizado no mesmo domínio de mensagem que o assinante.
[00088] Como descrito acima, o sistema de publicar/assinar pode ser com base em tópico. Cada computador intermediário pode ser capaz de corresponder publicadores e assinantes no mesmo tópico. O tópico de uma mensagem pode ser especificado como metadados associados com a mensagem. Os metadados podem descrever uma funcionalidade comum das mensagens na categoria identificada pelo tópico. Em uma concretização da presente invenção, o tópico é uma coluna. O tópico pode ser definido pela aplicação que se comunica através do sistema de publicar/assinar. O tópico pode ser qualquer valor que é entendido mutuamente pelos relevantes publicadores e assinantes.
[00089] Caminhos de mensagem calculados como descrito acima podem conectar todos os computadores intermediários que publicam para um tópico com todos os computadores intermediários de assinatura para o mesmo tópico. Para cada caminho de mensagem, o computador intermediário que publica pode ser o computador intermediário inicial, e o computador intermediário de assinatura pode ser o computador intermediário final. O dito anteriormente pode ser repetido para cada tópico no sistema de publicar/assinar.
[00090] Além disso, um único computador intermediário pode direcionar mensagens para diferentes tópicos. Orçamentos de latência podem ser alocados para diferentes tópicos em cada segmento de caminho de mensagem de maneira a controlar o gerenciamento de recurso local. O computador intermediário pode gerenciar a distribuição de recursos de rede dentre estes tópicos com base nestes orçamentos de latência.
[00091] Mais especificamente, uma variedade de mensagens em diferentes tópicos pode ser posicionada na mesma solicitação no computador intermediário. O computador intermediário decide a ordem em que as mensagens são transmitidas com base na prioridade das mensagens, que por sua vez depende do orçamento de latência do tópico de acordo com o algoritmo descrito acima.
[00092] Um publicador e o assinante que estão em comunicação podem estar localizados nos domínios de mensagem diferentes 116. Em particular, um publicador em um dado tópico e um assinante para o mesmo tópico pode estar localizado nos domínios de mensagem diferentes. Neste caso, o caminho de mensagem pode ser calculado e empregado como descrito acima.
[00093] Um publicador e o assinante que estão se comunicando em vez disso podem estar localizados no mesmo domínio de mensagem 116. Em particular, um publicador em um dado tópico e um assinante para o mesmo tópico pode estar localizado no mesmo domínio de mensagem. Neste caso, o computador intermediário pode direcionar diretamente mensagens entre publicadores e assinantes localizados no mesmo domínio de mensagem.
[00094] Calculando e empregando o caminho de mensagem como descrito acima pode ser omitido. Alternativamente, este caso pode ser expresso como um caminho de mensagem em que a sequência inclui apenas um único computador intermediário que é conectado tanto com o publicador quanto com o assinante.
[00095] Um assinante pode se conectar com um computador intermediário de assinatura para requisitar um tópico. O computador intermediário de assinatura pode analisar dados localizados no mesmo para determinar se ele já recebe mensagens para o tópico. Se for assim, o computador intermediário de assinatura pode começar simplesmente direcionando mensagens para o tópico para o assinante. Se não, por exemplo, se nenhum nó no mesmo domínio de mensagem anteriormente requisitou o tópico, o computador intermediário de assinatura pode propagar o requisito de tópico para outros computadores intermediários. Um computador intermediário que recebe o requisito de tópico pode determinar se é conectado com um publicador para este tópico. Se for assim, o computador intermediário pode armazenar uma indicação de que mensagens para este tópico devem ser enviadas para o computador intermediário de assinatura que transmitem o requisito de tópico.
[00096] Informação sobre requisitos para assinar para um tópico por último pode se propagar através de toda a rede de computadores intermediários. No entanto, tal propagação pode ser um processo iterativo. Uma iteração, duas iterações, ou mais podem ser necessárias antes do requisito de tópico ser recebido em qualquer particular computador intermediário na rede. Independentemente disto, um computador intermediário que publica eventualmente pode estar ciente da identidade de todos os assinantes para a informação publicada pelo publicador.
[00097] Se voltando agora à FIG. 3, um exemplo de sequência de operações para transmitir dados de acordo com pelo menos um requisito de qualidade de serviço é demonstrado.
[00098] A sequência de operações mostrada na FIG. 3 transmite mensagens de acordo com pelo menos um requisito de qualidade de serviço. O requisito de QoS ou os requisitos podem ser quaisquer de uma grande variedade de padrões que impactam a transmissão de mensagens.
[00099] Um requisito de QoS pode incluir uma especificação da confiabilidade com a qual as mensagens devem ser transmitidas. A confiabilidade pode ser especificada como uma probabilidade máxima de falha para transmitir uma mensagem. Assim, a pelo menos um requisito de qualidade de serviço pode incluir uma probabilidade máxima de falha para transmitir a mensagem.
[000100] Um requisito de QoS também pode incluir uma especificação da latência com a qual as mensagens devem ser transmitidas. A latência pode ser especificada como uma latência máxima para a transmissão de uma mensagem. Assim, a pelo menos um requisito de qualidade de serviço pode incluir uma latência máxima para a transmissão da mensagem.
[000101] A sequência de operações mostrada na FIG. 3 pode executar em um computador intermediário, tal como o computador intermediário mostrado na FIG. 7 ou qualquer um dos computadores intermediários mostrados na FIG. 1. O computador intermediário pode ser incluído em uma rede de computadores intermediários interconectados, tais como a rede de computadores intermediários mostrados na FIG. 1.
[000102] O computador intermediário que realiza a sequência de operações pode ser conectado com um computador remetente. O computador remetente pode ser um nó como mostrado na FIG. 1. O computador remetente pode transmitir uma ou mais mensagens para o computador intermediário para a retransmissão para um computador de recepção. O computador de recepção pode ser um nó como mostrado na FIG. 1. O computador intermediário pode fazer com que as mensagens recebidas a partir do computador remetente a ser retransmitido para o computador de recepção. Esta retransmissão pode ocorrer através de um ou mais caminhos de mensagem como descrito abaixo. O computador intermediário que realiza a sequência de operações pode ser o computador intermediário inicial no caminho de mensagem ou caminhos de mensagem, exceto onde for notado de outra forma.
[000103] Em uma concretização da presente invenção, o computador remetente é um publicador em um sistema de publicar/assinar. O computador de recepção é um assinante em um sistema de publicar/assinar.
[000104] A sequência de operações mostrada na FIG. 3 pode executar simultaneamente em múltiplos computadores intermediários incluídos na rede. Cada tal computador intermediário pode transmitir um número significativo de mensagens. É enfatizado que congestionamento da rede pode ocorrer como um resultado. A presente invenção inclui técnicas para manipular este congestionamento da rede como descrito abaixo.
[000105] Em uma concretização da presente invenção, mensagens são transmitidas através de um único caminho. Esta concretização aqui a seguir é descrita como a concretização de caminho único.
[000106] Em outra concretização da presente invenção, mensagens são transmitidas usando roteamento de múltiplos caminhos como descrito acima com relação à FIG. 1. Esta concretização aqui a seguir é descrita como a concretização de múltiplos caminhos.
[000107] É notado que subsequente descrição da sequência de operações mostrada na FIG. 3 é realizado para ambas as concretizações anteriores, exceto quando notado de outra forma.
[000108] Na operação de cálculo 302, um caminho de mensagem é calculado. O caminho de mensagem especifica uma sequência de computadores intermediários selecionada a partir da rede de computadores intermediários interconectados. A sequência começa com um computador intermediário inicial conectado com o computador remetente. A sequência termina com um computador intermediário final conectado com o computador de recepção.
[000109] O caminho de mensagem pode ser estatisticamente estimado para satisfazer a pelo menos um requisito de qualidade de serviço. Além disso, se a pelo menos um requisito de qualidade de serviço inclui uma latência máxima para a transmissão da mensagem, a latência do caminho de mensagem é estimada estatisticamente. A latência estatisticamente estimada pode ser comparada com a latência máxima habilitada para garantir que a anterior seja menor do que ou igual ao último.
[000110] Em uma concretização da presente invenção, a operação de cálculo 302 inclui a sequência de operações mostrada na FIG. 5 ou um subconjunto da mesma.
[000111] Na concretização de caminho único, a operação de cálculo 302 calcula um único caminho de mensagem como descrito acima. O único caminho de mensagem calculado é estimado estatisticamente para satisfazer a pelo menos um requisito de qualidade de serviço.
[000112] Na concretização de múltiplos caminhos, a operação de cálculo 302 calcula uma pluralidade de caminhos de mensagem. Cada um dos caminhos de mensagem é calculado como descrito acima. A pluralidade calculada de caminhos de mensagem é estimada estatisticamente para satisfazer coletivamente a pelo menos um requisito de qualidade de serviço.
[000113] O número de caminhos de mensagem calculado pode ser um parâmetro. Este parâmetro pode ter um valor dos dois. Este parâmetro também pode ser especificado por um administrador de sistema. Este parâmetro também pode ser selecionado para alcançar um desejado nível de resiliência. Esta seleção pode ser baseada em estimativas das probabilidades de falha de computadores intermediários, ligações de rede entre computadores intermediários, ou ambos. Estas estimativas podem ser baseadas em um ou mais modelos de probabilidades de falha tal como os modelos de falha mostrados na FIG. 7. O número mínimo de caminhos de mensagem que é suficiente para garantir que um requisito de QoS especificando uma probabilidade máxima de falha é satisfeito pode ser calculado com base nestas estimativas. O resultado pode ser empregado como o parâmetro. Assim, o número de caminhos de mensagem para o roteamento de múltiplos caminhos pode ser calculado com base no modelo de falha ou modelos de falha.
[000114] As pluralidades de caminhos de mensagem podem ser paralelos entre si. Em outras palavras, os caminhos de mensagem podem ser configurados de forma que nos dois caminhos de mensagem transmitem dados sobre um segmento comum entre dois computadores intermediários. Por exemplo, se o parâmetro para o número de caminhos de mensagem é igual ao número de computadores intermediários vizinhos em que o computador intermediário inicial é conectado, cada caminho de mensagem pode incluir um diferente computador intermediário vizinho. Isto beneficamente garante que uma falha na ligação que conecta os dois computadores intermediários não faz com que múltiplos caminhos de mensagem falhem. Mesmo se é impossível ou inviável que todos os caminhos de mensagem sejam completamente paralelos, segmentos dos caminhos de mensagem podem ser paralelos entre si.
[000115] A operação de cálculo 302 pode incluir armazenar o caminho de mensagem calculado ou pluralidade de caminhos de mensagem pode ser armazenada em um meio de armazenamento legível por computador. Como um resultado, o caminho de mensagem ou caminhos de mensagem podem ser recuperados de maneira a determinar como rotear mensagens subsequentemente recebidas.
[000116] Após a operação de cálculo 302 ser completada, passa de controle para a operação de cálculo 304.
[000117] Na operação de cálculo 304, um orçamento de latência é calculado. O cálculo do orçamento de latência compreende subtrair uma latência estatisticamente estimada do caminho de mensagem a partir da latência máxima. A latência estatisticamente estimada pode ser o valor calculado na operação de cálculo 302 como descrito acima.
[000118] Se o pelo menos um requisito de qualidade de serviço não especifica uma latência máxima, a operação de cálculo 304 pode ser omitida.
[000119] Operação de cálculo 304 pode realizar os cálculos descritos acima para cada caminho de mensagem calculado na operação de cálculo 302. De maneira apropriada, na concretização de caminho único, a operação de cálculo 304 realiza os cálculos descritos acima para o único caminho de mensagem calculado. Na concretização de múltiplos caminhos, a operação de cálculo 304 realiza os cálculos descritos acima para cada um da pluralidade calculada de caminhos de mensagem.
[000120] Após a operação de cálculo 304 ser completada, passa de controle para distribuir a operação 306.
[000121] Na operação de distribuição 306, o orçamento de latência calculado na operação de cálculo 304 é distribuído dentre os segmentos de caminho de mensagem entre computadores intermediários especificados pelo caminho de mensagem. A operação de distribuição 306 pode dividir igualmente o orçamento de latência dentre os segmentos de caminho de mensagem. A operação de distribuição 306 também pode dividir proporcionalmente o orçamento de latência dentre os segmentos de caminho de mensagem.
[000122] Se o pelo menos um requisito de qualidade de serviço não especifica uma latência máxima, a operação de distribuição 306 pode ser omitida.
[000123] A operação de distribuição 306 pode realizar os cálculos descritos acima para cada caminho de mensagem calculado na operação de cálculo 302. De maneira apropriada, na concretização de caminho único, a operação de distribuição 306 realiza a distribuição descrita acima para o único caminho de mensagem calculado. Na concretização de múltiplos caminhos, a operação de distribuição 306 realiza a distribuição descrita acima para cada um da pluralidade calculada de caminhos de mensagem.
[000124] Após a operação de distribuição 306 ser completada, passa de controle para a operação de distribuição 308.
[000125] Na operação de distribuição 308, o caminho de mensagem calculado na operação de cálculo 302 é distribuído através dos computadores intermediários incluídos no caminho de mensagem. Em uma concretização da presente invenção, o computador intermediário corrente transmite uma mensagem de sinalização para todo outro computador intermediário incluído no caminho de mensagem. A mensagem de sinalização é um sinal para cada computador intermediário então um tópico será transmitido através daquele computador intermediário. A mensagem de sinalização sinaliza adicionalmente que as mensagens recebidas no tópico precisam ser direcionadas para um computador intermediário específico. Como um resultado da mensagem de sinalização, estados de direcionamento são configurados no componente de direcionamento de cada computador intermediário incluído no caminho de mensagem. Após a operação de distribuição 308 ser completada, passa de controle para receber a operação 310.
[000126] Na operação de recepção 310, uma mensagem é recebida no computador intermediário inicial a partir do computador remetente. Após a operação de recepção 310 ser completada, passa de controle para a operação de transmissão 312.
[000127] Na operação de transmissão 312, a mensagem recebida na operação de recepção 310 é transmitida a partir do computador intermediário inicial para o computador de recepção através da sequência de computadores intermediários especificados pelo caminho de mensagem.
[000128] O computador intermediário inicial pode invocar a transmissão ao longo de todo o caminho de mensagem. No entanto, o computador intermediário inicial pode por si só ser responsável para enviar a mensagem para o segundo computador intermediário na sequência. Como descrito acima, cada computador intermediário na sequência, por sua vez, pode direcionar a mensagem para o próximo computador intermediário na sequência. O computador intermediário final pode direcionar a mensagem para o computador de recepção.
[000129] Em uma concretização da presente invenção, transmitindo a mensagem a partir do computador remetente para o computador intermediário inicial, entre computadores intermediários, a partir do computador intermediário final para o computador de recepção, ou qualquer combinação dos mesmos é realizado na camada de Aplicação (nível 7) do modelo de Open Sistemas Interconnect (OSI). Em outra concretização da presente invenção, transmitir a mensagem entre as entidades mencionadas anteriormente é realizado na camada de Sessão (nível 5) do modelo de OSI. Em qualquer caso, uma aplicação, como oposta à camada de rede (nível 3) do modelo de OSI, é responsável para roteamento, redirecionamento e direcionamento como necessário.
[000130] A operação de transmissão 312 pode transmitir a mensagem através de cada caminho de mensagem calculado na operação de cálculo 302. De maneira apropriada, na concretização de caminho único, a operação de transmissão 312 transmite a mensagem de acordo com o único caminho de mensagem. Na concretização de múltiplos caminhos, a operação de transmissão 312 transmite a mensagem de acordo com cada um da pluralidade calculada de caminhos de mensagem. É notado que no último caso, mensagens duplicadas podem existir se os caminhos de mensagem não são completamente paralelos. Neste caso, intermediários podem remover as mensagens duplicadas para reduzir a sobrecarga.
[000131] Como notado acima, congestionamento da rede pode ocorrer. Em particular, uma pluralidade de mensagens pode ser esperando transmissão através de um comum segmento de caminho de mensagem entre computadores intermediários. Neste caso, o computador intermediário em que as mensagens estão esperando transmissão pode realizar a sequência de operações mostrada na FIG. 6 para determinar a ordem em que as mensagens são transmitidas. O computador intermediário que executa a sequência de operações mostrada na FIG. 6 pode ser o computador intermediário que está executando a sequência de operações correntes ou pode ser qualquer outro intermediário incluído no caminho de mensagem.
[000132] Na sequência de operações de exemplo mostrada na FIG. 3, após a operação de transmissão 312 estar completa, passa de controle para receber a operação 314. No entanto, este não é inerentemente o caso. A operação de recepção 310 e a operação de transmissão 312 pode ser repetida para cada uma de uma pluralidade de mensagens antes de invocar operação de recepção 314. Reciprocamente, a operação de recepção 314 pode ser invocada mesmo se a operação de recepção 310 e a operação de transmissão 312 não foram realizadas no evento em que nenhuma mensagem requer transmissão. De maneira notável, a operação de recepção 314 pode ser realizada em intervalos de tempo predefinidos, independentemente do número de mensagens transmitidas na operação de transmissão 312 já que a iteração anterior da operação de recepção 314.
[000133] Na operação de recepção 314, métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados são recebidos. A métrica de qualidade de serviço pode incluir pelo menos uma métrica de resiliência, pelo menos uma métrica de latência, ou ambas.
[000134] Operação de recepção 314 pode incluir adicionalmente monitorar a rede de computadores intermediários interconectados. Para alcançar este objetivo, a operação de recepção 314 pode incluir a sequência de operações mostrada na FIG. 4 ou um subconjunto da mesma. A pelo menos uma métrica de resiliência pode ser determinada como descrito abaixo com relação à FIG. 4.
[000135] Similarmente, a pelo menos uma métrica de latência pode ser determinada como descrito abaixo com relação à FIG. 4.
[000136] Os computadores intermediários incluídos na rede de computadores intermediários podem monitorar periodicamente, cronicamente, ou continuamente um ao outro. Para alcançar ambos os objetivos, cada computador intermediário pode executar periodicamente, cronicamente ou continuamente a operação de recepção 314. Esta iteração da operação de recepção 314 pode incluir a execução da sequência de operações mostrada na FIG. 4.
[000137] Após a operação de recepção 314 estar completa, passa de controle para operação de determinação 316.
[000138] Na operação de determinação 316, uma determinação é feita como se o caminho de mensagem satisfaz a pelo menos um requisito de qualidade de serviço com base em uma métrica de qualidade de serviço recebida na operação de recepção 314. A operação de determinação 316 também pode analisar diretamente medições do estado de rede, tal como os dados descritos abaixo com relação à FIG. 4.
[000139] O caminho de mensagem ou a pluralidade de caminhos de mensagem podem falhar para satisfazer o requisito de QoS para qualquer uma de uma variedade de razões. Por exemplo, segmentos de caminho de mensagem podem desenvolver congestionamento da rede, fazendo com que a latência aumente.
[000140] Na concretização de caminho único, a operação de determinação 316 determina se o único caminho de mensagem calculado satisfaz a pelo menos um requisito de qualidade de serviço.
[000141] Na concretização de múltiplos caminhos, a operação de determinação 316 determina se a pluralidade calculada de caminhos de mensagem coletivamente satisfaz a pelo menos um requisito de qualidade de serviço.
[000142] Se for determinado que a pelo menos um requisito de qualidade de serviço é satisfeito, passa de controle para receber a operação 310. De outra forma, passa de controle para operação de cálculo 302.
[000143] De maneira apropriada, na concretização de caminho único, se o caminho de mensagem é determinado para não satisfazer a pelo menos um requisito de qualidade de serviço, a operação de cálculo 302 é repetida para um novo caminho de mensagem especificando uma nova sequência de computadores intermediários selecionada a partir da rede de computadores intermediários interconectados. O novo caminho de mensagem é estimado estatisticamente para satisfazer a pelo menos um requisito de qualidade de serviço.
[000144] Na concretização de múltiplos caminhos, se a pluralidade calculada de caminhos de mensagem é determinada para não satisfazer coletivamente a pelo menos um requisito de qualidade de serviço, a operação de cálculo 302 é repetida para uma nova pluralidade de caminhos de mensagem. Cada um dos novos caminhos de mensagem especifica uma nova sequência de computadores intermediários selecionada a partir da rede de computadores intermediários interconectados. A nova pluralidade de caminhos de mensagem é estimada estatisticamente para satisfazer coletivamente a pelo menos um requisito de qualidade de serviço.
[000145] Se todos os caminhos de mensagem falharam, a operação de determinação 316 também podem fazer com que a operação de cálculo 302 seja repetida para um novo caminho de mensagem especificando uma nova sequência de computadores intermediários selecionada a partir da rede de computadores intermediários interconectados. Isto pode ocorrer mesmo se as falhas não fazem diretamente com que os requisitos de QoS sejam satisfeitos.
[000146] Um caminho de mensagem ou uma pluralidade de caminhos de mensagem pode ser deixado no local até os requisitos de QoS serem violados ou até todos os caminhos de mensagem terem falhado.
[000147] É notado que uma alteração nos requisitos de QoS pode não fazer automaticamente com que os caminhos de mensagem sejam recalculados. Por exemplo, se os requisitos de QoS são alterados de maneira a ser estritamente menos rigorosos, a alteração nos requisitos de QoS não pode fazer com que um caminho de mensagem viole os requisitos de QoS.
[000148] O computador intermediário pode continuar para prosseguir através do ciclo mostrado na FIG. 3 até ser colocado off-line.
[000149] Se voltando agora à FIG. 4, um exemplo de sequência de operações para receber métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados é demonstrada.
[000150] Como o termo é usado abaixo, computadores intermediários vizinhos incluem aqueles computadores intermediários com uma conexão direta com este computador intermediário, por exemplo, o computador intermediário que realiza a sequência de operações mostrada na FIG. 4.
[000151] Na operação de monitoramento 402, um estado de pelo menos um dos computadores intermediários incluídos na rede de computadores intermediários interconectados é monitorado. A informação de estado pode ser monitorada para cada computador intermediário vizinho.
[000152] O computador intermediário pode estar ciente de se cada computador intermediário vizinho está para cima ou para baixo. Isto pode ser alcançado enviando periodicamente mensagens de ping para o computador intermediário vizinho. Assim, o computador intermediário pode contar o número de vezes que cada computador intermediário monitorado estava para baixo, a duração para a qual cada computador intermediário monitorado estava para baixo, ou ambos para o período de medição mais recente.
[000153] Após a operação de monitoramento 402 estar completa, passa de controle para operação de monitoramento 404.
[000154] Na operação de monitoramento 404, um estado de pelo menos um segmento de caminho de mensagem entre computadores intermediários incluídos na rede de computadores intermediários interconectados é monitorado. A informação de estado pode ser monitorada para o segmento de caminho de mensagem entre o computador intermediário e cada computador intermediário vizinho. Como o termo é usado aqui, um segmento de caminho de mensagem pode incluir uma ligação de rede entre dois computadores intermediários mesmo se a ligação de rede não é atualmente empregada por qualquer caminho de mensagem ativo.
[000155] O computador intermediário pode estar ciente de se cada segmento de caminho de mensagem para o qual é um ponto final está para cima ou para baixo. Assim, o computador intermediário pode contar o número de vezes que cada segmento de caminho de mensagem monitorado estava para baixo, a duração para a qual cada segmento de caminho de mensagem monitorado estava para baixo, ou ambos para o período de medição mais recente.
[000156] Após a operação de monitoramento 404 estar completa, passa de controle para operação de determinação 406.
[000157] Na operação de determinação 406, pelo menos uma métrica de resiliência é determinada com base no estado monitorado na operação de monitoramento 402 e operação de monitoramento 404.
[000158] A pelo menos uma métrica de resiliência pode incluir uma probabilidade de falha de cada computador intermediário monitorado na operação de monitoramento 402. A pelo menos uma métrica de resiliência pode incluir adicionalmente uma probabilidade de falha de cada segmento de caminho de mensagem monitorado na operação de monitoramento 404.
[000159] Em uma concretização da presente invenção, uma média móvel é tomada da métrica de resiliência. Cada nova medição pode ser medida junto com as medições anteriores. A média pode ser pesada. A informação relacionada com a média móvel pode ser armazenada e descrita em qualquer uma de uma variedade de estruturas de dados conhecidas na técnica, incluindo arranjos, listas e matrizes.
[000160] Após a operação de determinação 406 estar completa, passa de controle para operação de monitoramento 408.
[000161] Na operação de monitoramento 408, uma latência de pelo menos um segmento de caminho de mensagem entre computadores intermediários incluídos na rede de computadores intermediários interconectados é monitorada. A latência pode ser medida para cada computador intermediário vizinho, por exemplo, cada computador intermediário em que este computador intermediário é conectado. Após a operação de monitoramento 408 estar completa, passa de controle para operação de determinação 410.
[000162] Na operação de determinação 410, pelo menos uma métrica de latência é determinada com base no estado monitorado na operação de monitoramento 408. Em uma concretização da presente invenção, uma média móvel é tomada da métrica de latência. A média móvel pode ser calculada como descrito acima. A pelo menos uma métrica de latência também pode incluir a latência média de mensagens enviadas em um tópico especificado durante a janela de medição mais recente. Após a operação de determinação 410 estar completa, passa de controle para a operação de propagação 412.
[000163] É notado que operação de monitoramento 402, a operação de monitoramento 404 e a operação de determinação 406 pode ser realizada separadamente se apenas a métrica de resiliência é necessária, por exemplo, se os requisitos de QoS não especificam uma latência máxima. Similarmente, a operação de monitoramento 408 e a operação de determinação 410 podem ser realizadas separadamente se apenas a métrica de latência é necessária, por exemplo, se os requisitos de QoS não especificam uma confiabilidade mínima.
[000164] Na operação de propagação 412, qualquer um dos ou todos os dados anteriores são propagados para pelo menos um outro intermediário na rede. Os dados anteriores podem incluir pelo menos uma métrica de resiliência, a pelo menos uma métrica de latência, qualquer um dos dados brutos coletados, ou qualquer combinação dos mesmos.
[000165] Cada computador intermediário pode combinar dados propagados recebidos a partir de uma pluralidade de outros computadores intermediários. Como um resultado, todo intermediário eventualmente pode adquirir dados sob toda a rede de computadores intermediários interconectados. Estes dados podem incluir a latência e a probabilidade de falha (por exemplo, a confiabilidade) para cada segmento de caminho de mensagem na rede. Estes dados também podem incluir a probabilidade de falha para cada computador intermediário na rede. Estes dados podem ser armazenados em um arranjo, um conjunto de dados ou em qualquer uma de uma variedade de estruturas de dados adequadas conhecidas na técnica.
[000166] Estes dados podem ser empregados por qualquer computador intermediário na rede para subsequente computação de caminho de mensagem. De maneira notável, estes dados podem ser empregados por um computador intermediário conectado com um publicador de maneira a compute um caminho de mensagem para cada computador intermediário conectado com um assinante no mesmo tópico.
[000167] Após a operação de propagação 412 estar completa, a sequência de operações mostrada na FIG. 4 está completa. Se as operações mostradas na FIG. 4 estavam incluídas na operação de recepção 314 na FIG. 3, esta operação pode resumir o processamento. A métrica de qualidade de serviço recebida na operação de recepção 314 pode incluir a métrica de resiliência determinada na operação de determinação 406, a métrica de latência determinada na operação de determinação 410, ou ambas.
[000168] Se voltando agora à FIG. 5, um exemplo de sequência de operações para calcular um caminho de mensagem é demonstrado.
[000169] A sequência de operações mostrada na FIG. 5 pode executar em um computador intermediário, tal como o computador intermediário mostrado na FIG. 7 ou qualquer um dos computadores intermediários mostrados na FIG. 1. O computador intermediário pode estar incluído em uma rede de computadores intermediários interconectados, tais como a rede de computadores intermediários mostrados na FIG. 1.
[000170] A etapa de cálculo realizada na operação de cálculo 302 na FIG. 3 pode compreender a sequência de operações mostrada na FIG. 5 ou um subconjunto da mesma.
[000171] O exemplo de sequência de operações mostrada na FIG. 5 assume que os requisitos de QoS aplicáveis para a mensagem incluem tanto a confiabilidade requisito quanto um requisito de latência. Especificamente, a pelo menos um requisito de qualidade de serviço inclui uma probabilidade máxima de falha para transmitir a mensagem e uma latência máxima para a transmissão da mensagem. Os peritos na técnica podem modificar as operações mostradas na FIG. 5 para se endereçar a outros conjuntos de requisitos de QoS.
[000172] Como descrito acima, cada computador intermediário já pode ter uma quantidade significativa de dados sobre a rede de computadores intermediários interconectados. De maneira notável, estes dados podem incluir dados de confiabilidade e latência para a rede. Cada computador intermediário adicionalmente pode ter uma estrutura de dados de gráfico que expressa a estrutura da rede de computadores intermediários interconectados. O algoritmo implementado pela sequência de operações mostrada na FIG. 5 pode processar este conjunto de dados para determinar os caminhos de mensagem ótimos da maneira descrita abaixo.
[000173] Na operação de seleção 502, um conjunto de um ou mais caminhos de mensagem são selecionados tal que os um ou mais caminhos de mensagem incluídos no conjunto são estatisticamente estimados para satisfazer a latência máxima para a transmissão da mensagem.
[000174] A operação de seleção 502 pode computar os um ou mais caminhos de mensagem de acordo com um algoritmo de caminho de k mais curto. O algoritmo pode ser aplicado para a estrutura de dados de gráfico e os dados de latência descritos acima.
[000175] Após a operação de seleção 502 estar completa, passa de controle para a operação de estimativa 504.
[000176] Na operação de estimativa 504, uma probabilidade de falha para transmitir a mensagem de cada um dos caminhos de mensagem no conjunto de um ou mais caminhos de mensagem é estimado estatisticamente.
[000177] Em uma concretização da presente invenção, estimar estatisticamente a probabilidade de falha para transmitir a mensagem está baseado em uma probabilidade de falha combinada para transmitir a mensagem por cada um dos computadores intermediários no caminho de mensagem. Um computador intermediário será incapaz de transmitir a mensagem se a ligação de rede entre em si e o próximo computador intermediário na sequência (ou o computador de recepção no caso do intermediário final) falhou. Portanto, esta estimativa pode ser calculada com base na probabilidade de falha das relevantes ligações de rede. As relevantes ligações de rede incluem as ligações de rede entre quaisquer dois adjacentes computadores intermediários na sequência. As relevantes ligações de rede também podem incluir a ligação de rede entre o computador remetente e o computador intermediário inicial, a ligação de rede entre o computador intermediário final e o computador de recepção, ou ambos. A estimativa pode ser adicionalmente baseada na probabilidade de falha calculada dos computadores intermediários na sequência em si.
[000178] Em outra concretização da presente invenção, estimar estatisticamente a probabilidade de falha para transmitir a mensagem está baseado em uma probabilidade de falhas correlacionadas.
[000179] Em outra concretização da presente invenção, estimar estatisticamente a probabilidade de falha para transmitir a mensagem está baseada em um ou mais modelos de probabilidades de falha. Os modelos de probabilidades de falha podem ser os modelos de falha mostrados na FIG. 7. É enfatizado que como um resultado, a computação dos caminhos de roteamento pode considerar os modelos de falha na estimativa da disponibilidade de caminhos de mensagem.
[000180] Estimar estatisticamente as probabilidades de falha com base no modelo de falha ou modelos de falha podem ser realizados para garantir que em qualquer ponto no tempo, a probabilidade que pelo menos um caminho existe entre um par de intermediários de publicação e assinatura excede um limite alvo. O limite pode ser um menos uma probabilidade máxima de falha especificada pelos requisitos de QoS.
[000181] Adicionalmente, qualquer uma ou todas as três concretizações anteriores podem ser combinadas. Assim, estimar estatisticamente a probabilidade de falha para transmitir a mensagem pode ser baseada em uma combinação dos fatores notados acima.
[000182] Após a operação de estimativa 504 estar completa, passa de controle para operação de seleção 506.
[000183] Na operação de seleção 506, pelo menos um caminho de mensagem de candidato do conjunto de um ou mais caminhos de mensagem é selecionado tal que o pelo menos um caminho de mensagem de candidato é estimado estatisticamente para satisfazer a probabilidade máxima de falha para transmitir a mensagem. A operação de seleção 506 está baseada na probabilidade de falha estatisticamente estimada para transmitir a mensagem. É enfatizado que o pelo menos um caminho de mensagem de candidato selecionado satisfaz o requisito de resiliência enquanto minimiza o custo, por exemplo, em termos de tempo para transmitir a mensagem. Após a operação de seleção 506 estar completa, passa de controle para operação de estimativa 508.
[000184] Na operação de estimativa 508, a probabilidade de falha esperada de pelo menos um caminho de candidato selecionado na operação de seleção 506 é estimada estatisticamente. Se um caminho de candidato foi selecionado, a operação de estimativa 508 pode determinar simplesmente a probabilidade de falha para o caminho de mensagem individual como calculado na operação de estimativa 504. Se dois ou mais caminhos de candidato foram selecionados, a operação de estimativa 508 em vez disso pode calcular a probabilidade de falha dos caminhos de candidato como um conjunto. Este cálculo pode estar baseado em parte em uma probabilidade de falhas correlacionadas entre diferentes caminhos de mensagem de candidato.
[000185] Após a operação de estimativa 508 ser completada, a sequência de operações mostrada na FIG. 5 está completa. Se as operações mostradas na FIG. 5 estavam incluídas na operação de cálculo 302 na FIG. 3, esta operação pode resumir o processamento. Na concretização de caminho único, a operação de cálculo 302 na FIG. 3 pode selecionar qualquer um dos caminhos de mensagem de candidato como o único caminho de mensagem calculado. Na concretização de múltiplos caminhos, a operação de cálculo 302 na FIG. 3 pode selecionar qualquer um ou todos os caminhos de mensagem de candidato para a inclusão na pluralidade calculada de caminhos de mensagem.
[000186] Em uma concretização da presente invenção, a rede de computadores intermediários interconectados implementa um sistema de publicar/assinar como descrito acima. A sequência de operações mostrada na FIG. 5 pode ser repetida para cada computador intermediário conectado com qualquer assinante em um tópico específico. A sequência de operações mostrada na FIG. 5 também pode ser repetida para cada computador intermediário conectado com qualquer assinante em qualquer tópico no sistema. Em qualquer caso, os caminhos para intermediários de assinatura individuais podem ser fundidos em uma estrutura de malha combinando segmentos de caminho de mensagem ou ligações de rede comuns.
[000187] Se voltando agora à FIG. 6, um exemplo de sequência de operações para ordenar uma pluralidade de mensagens esperando transmissão através de um comum segmento de caminho de mensagem entre computadores intermediários é demonstrado.
[000188] A sequência de operações mostrada na FIG. 6 pode executar em um computador intermediário, tal como o computador intermediário mostrado na FIG. 7 ou qualquer um dos computadores intermediários mostrados na FIG. 1. O computador intermediário pode estar incluído em uma rede de computadores intermediários interconectados, tais como a rede de computadores intermediários mostrados na FIG. 1. O computador intermediário pode ser o mesmo computador intermediário em que a pluralidade de mensagens está esperando transmissão.
[000189] O segmento de caminho de mensagem comum pode ser, ou pode representar, uma ligação de rede ou qualquer outro tipo de acoplamento que conecta dois ou mais computadores intermediários incluídos na rede de computadores intermediários interconectados.
[000190] Na operação de seleção 602, uma mensagem alvo é selecionada a partir da pluralidade de mensagens pendentes de transmissão através do segmento de caminho de mensagem comum entre computadores intermediários incluídos na rede de computadores intermediários interconectados tal que a mensagem alvo possui um menor orçamento de latência dentre a pluralidade de mensagens. Após a operação de seleção 602 estar completa, passa de controle para a operação de priorização 604.
[000191] Na operação de priorização 604, a mensagem alvo selecionada na operação de seleção 602 é priorizada para a transmissão. É enfatizado que como um resultado, um tópico com um menor orçamento de latência é designado uma maior prioridade. Após a operação de priorização 604 estar completa, passa de controle para operação de determinação 606.
[000192] Na operação de determinação 606, é determinado se uma ou mais mensagens estão esperando transmissão através do segmento de caminho de mensagem comum. A operação de determinação 606 não considera qualquer mensagem que já foi priorizada na operação de priorização 604 mas que ainda não foi transmitida. Se é determinado que uma ou mais mensagens está esperando transmissão, passa de controle para operação de seleção 602. De outra forma, a sequência de operações mostrada na FIG. 6 está completa.
[000193] As mensagens podem ser transmitidas na ordem em que as mensagens foram priorizadas na operação de priorização 604. Por exemplo, a primeira mensagem priorizada na priorização da operação de priorização 604 pode ser transmitida primeiramente. A prioridade pode ser reforçada por um programador de transmissão com base em prioridade ou com base em relaxamento.
[000194] Se voltando agora à FIG. 7, um exemplo de computador intermediário 110 para transmitir dados de acordo com pelo menos um requisito de qualidade de serviço é ilustrado.
[000195] O computador intermediário 110 é acoplado com uma rede de computadores intermediários interconectados para transmitir dados de acordo com pelo menos um requisito de qualidade de serviço 702. A rede de computadores intermediários interconectados pode ser como mostrado na FIG. 1.
[000196] A pelo menos um requisito de qualidade de serviço 702 pode incluir uma probabilidade máxima de falha 704 para transmitir a mensagem.
[000197] A pelo menos um requisito de qualidade de serviço 702 pode incluir adicionalmente uma latência máxima 706 para a transmissão da mensagem.
[000198] O computador intermediário 110 compreende uma unidade de cálculo 708. A unidade de cálculo configurada para calcular um caminho de mensagem especificando uma sequência de computadores intermediários selecionada a partir da rede de computadores intermediários interconectados. A sequência começa com um computador intermediário inicial conectado com um computador remetente. A sequência termina com um computador intermediário final conectado com um computador de recepção. O caminho de mensagem é estimado estatisticamente para satisfazer a pelo menos um requisito de qualidade de serviço 702. Para efetuar os anteriores, a unidade de cálculo pode ser configurada para realizar operação de cálculo 302 na FIG. 3.
[000199] Na concretização de múltiplos caminhos, a unidade de cálculo 708 é configurada adicionalmente para calcular uma pluralidade de caminhos de mensagem.
[000200] Em uma concretização da presente invenção, estimar estatisticamente a probabilidade de falha para transmitir a mensagem está baseado em uma probabilidade de falha combinada para transmitir a mensagem por cada um dos computadores intermediários no caminho de mensagem.
[000201] Em uma concretização da presente invenção, estimar estatisticamente a probabilidade de falha para transmitir a mensagem está baseado em uma probabilidade de falhas correlacionadas.
[000202] Em uma concretização da presente invenção, estimar estatisticamente a probabilidade de falha para transmitir a mensagem está baseado em um ou mais modelos de probabilidades de falha 710. Os modelos de probabilidades de falha podem ser conhecidos simplesmente como modelos de falha. Os modelos de falha podem expressar a probabilidade de falha independente de computadores intermediários, redes e ligações de rede. Os modelos de falha também podem expressar a probabilidade de falhas correlacionadas.
[000203] Um modelo de falha 710 pode ser qualquer um de uma grande variedade de tipos de modelos. Os modelos podem incluir estatísticas que estimam a probabilidade de falhas independentes, falhas correlacionadas ou ambas.
[000204] Os modelos de falha podem ser construídos de acordo com qualquer uma de uma grande variedade de técnicas. Probabilidades de falha podem ser aprendidas a partir da medição histórica. Por exemplo, um número específico de períodos de medição posterior pode ser analisado para determinar o número de vezes uma ligação de rede estava para baixo, o número de vezes um computador intermediário estava para baixo, e semelhantes. Probabilidades de falha também podem ser aprendidas a partir de fontes externas de dados e modelos de falha externa.
[000205] Um modelo de falha pode ser representado como uma distribuição de probabilidade sobre os computadores intermediários, os segmentos de caminho de mensagem, ou ambos. Neste caso, o cálculo de caminho de mensagem pode empregar o modelo para estimar probabilidades de falha corrente.
[000206] Um modelo de falha, por exemplo, pode estar baseado na frequência e magnitude de terremotos por uma área geográfica, por exemplo, no sul da Califórnia.
[000207] Adicionalmente, qualquer uma ou todas as três concretizações anteriores podem ser combinadas. Assim, estimar estatisticamente a probabilidade de falha para transmitir a mensagem pode ser baseada em uma combinação dos fatores notados acima.
[000208] Em uma concretização da presente invenção, a unidade de cálculo 708 é configurada adicionalmente para selecionar um conjunto de um ou mais caminhos de mensagem tal que os um ou mais caminhos de mensagem incluídos no conjunto são estatisticamente estimados para satisfazer a latência máxima 706 para a transmissão da mensagem. A unidade de cálculo está configurada adicionalmente para estimar estatisticamente uma probabilidade de falha para transmitir a mensagem de cada um dos caminhos de mensagem no conjunto de um ou mais caminhos de mensagem. A unidade de cálculo está configurada adicionalmente, com base na probabilidade de falha estatisticamente estimada para transmitir a mensagem, para selecionar pelo menos um caminho de mensagem de candidato do conjunto de um ou mais caminhos de mensagem tal que o pelo menos um caminho de mensagem de candidato é estimado estatisticamente para satisfazer a probabilidade máxima de falha 704 para transmitir a mensagem. Para efetuar os anteriores, a unidade de cálculo pode ser configurada para realizar a sequência de operações mostrada na FIG. 5 ou um subconjunto da mesma.
[000209] O computador intermediário 110 compreende adicionalmente uma unidade orçamentária 712. A unidade orçamentária configurada para calcular um orçamento de latência para um caminho de mensagem calculado pela unidade de cálculo 708. O cálculo do orçamento de latência compreende subtrair uma latência estatisticamente estimada do caminho de mensagem a partir da latência máxima 706. A unidade orçamentária está configurada adicionalmente para distribuir o orçamento de latência dentre segmentos de caminho de mensagem entre computadores intermediários especificados pelo caminho de mensagem. Para efetuar o dito anteriormente, a unidade orçamentária pode ser configurada para realizar operação de cálculo 304 e operação de distribuição 306 na FIG. 3.
[000210] O computador intermediário 110 compreende adicionalmente uma unidade de transmissão 714. A unidade de transmissão está configurada para transmitir uma mensagem a partir do computador intermediário inicial para o computador de recepção através da sequência de computadores intermediários especificados por um caminho de mensagem calculado pela unidade de cálculo 708. Para efetuar o dito anteriormente, a unidade de transmissão pode ser configurada para realizar operação de transmissão 312 na FIG. 3.
[000211] Na concretização de múltiplos caminhos, a unidade de transmissão 714 é configurada adicionalmente para transmitir a mensagem de acordo com cada um da pluralidade de caminhos de mensagem calculado pela unidade de cálculo 708.
[000212] O computador intermediário 110 compreende adicionalmente uma unidade de recepção 716. A unidade de recepção está configurada para receber métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados. Para efetuar o dito anteriormente, a unidade de recepção pode ser configurada para realizar operação de recepção 314 na FIG. 3.
[000213] A unidade de recepção 716 pode ser configurada adicionalmente para monitorar a rede de computadores intermediários interconectados. Para alcançar este objetivo, a unidade de recepção pode ser configurada adicionalmente para realizar a sequência de operações mostrada na FIG. 4 ou um subconjunto da mesma.
[000214] Em uma concretização da presente invenção, receber a métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados inclui monitorar um estado de pelo menos um dos computadores intermediários incluídos na rede de computadores intermediários interconectados e pelo menos um segmento de caminho de mensagem entre computadores intermediários incluídos na rede de computadores intermediários interconectados. A recepção de métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados inclui adicionalmente determinar pelo menos uma métrica de resiliência com base no estado monitorado. A métrica de qualidade de serviço inclui pelo menos uma métrica de resiliência.
[000215] Em outra concretização da presente invenção, receber a métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados inclui monitorar uma latência de pelo menos um segmento de caminho de mensagem entre computadores intermediários incluídos na rede de computadores intermediários interconectados. Receber a métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados inclui adicionalmente determinar pelo menos uma métrica de latência com base no estado monitorado. A métrica de qualidade de serviço inclui pelo menos uma métrica de latência.
[000216] Adicionalmente, as duas concretizações anteriores podem ser combinadas. Neste caso, a métrica de qualidade de serviço inclui tanto a pelo menos uma métrica de resiliência quanto a pelo menos uma métrica de latência.
[000217] O computador intermediário 110 compreende adicionalmente uma unidade de determinação 718. A unidade de determinação é configurada para determinar se um caminho de mensagem calculado pela unidade de cálculo 708 satisfaz a pelo menos um requisito de qualidade de serviço 702 com base em uma métrica de qualidade de serviço recebida pela unidade de recepção 714. A unidade de determinação é configurada adicionalmente para fazer com que a unidade de cálculo 708 calcule um novo caminho de mensagem especificando uma nova sequência de computadores intermediários selecionada a partir da rede de computadores intermediários interconectados se o caminho de mensagem é determinado para não satisfazer a pelo menos um requisito de qualidade de serviço. O novo caminho de mensagem é estimado estatisticamente para satisfazer a pelo menos um requisito de qualidade de serviço. Para efetuar o dito anteriormente, a unidade de determinação pode ser configurada para realizar operação de determinação 316 na FIG. 3.
[000218] Na concretização de múltiplos caminhos, a unidade de determinação 718 é configurada adicionalmente para determinar se a pluralidade de caminhos de mensagem calculada pela unidade de cálculo 708 coletivamente satisfaz pelo menos um requisito de qualidade de serviço 702. A unidade de determinação é configurada adicionalmente para fazer com que a unidade de cálculo calcule uma nova pluralidade de caminhos de mensagem se a pluralidade calculada de caminhos de mensagem é determinada para não satisfazer coletivamente a pelo menos um requisito de qualidade de serviço.
[000219] O computador intermediário 110 compreende adicionalmente uma unidade de priorização 720. A unidade de priorização é configurada para selecionar uma mensagem alvo a partir de uma pluralidade de mensagens pendentes de transmissão através de um comum segmento de caminho de mensagem entre computadores intermediários incluídos na rede de computadores intermediários interconectados tal que a mensagem alvo possui um menor orçamento de latência dentre a pluralidade de mensagens. A unidade de priorização é configurada adicionalmente para priorizar a mensagem alvo para a transmissão. Para efetuar o dito anteriormente, a unidade de priorização pode ser configurada para realizar a sequência de operações mostrada na FIG. 6.
[000220] O computador intermediário 110 compreende adicionalmente uma unidade de configuração 722. A unidade de configuração é configurada para configurar o computador intermediário em que é incluída. A unidade de configuração pode ser um programa de software ou produto de programa de computador ou um subconjunto do mesmo. A unidade de configuração pode ser configurada para aceitar a entrada de usuário para permitir que um usuário ou administrador para controlar e especificar a configuração do computador intermediário, incluindo qualquer um dos parâmetros e regras descritas abaixo.
[000221] A unidade de configuração 722 pode ser configurada para determinar os outros computadores intermediários na rede de computadores intermediários interconectados em que este computador intermediário 110 é conectado. Assim, a unidade de configuração pode ser configurada para controlar a topologia da rede como se refere a este computador intermediário.
[000222] A topologia da rede entre computadores intermediários, incluindo a seleção da qual os computadores intermediários são conectados diretamente com os quais outros computadores intermediários, podem ser determinados de acordo com qualquer um de uma grande variedade de métodos e fatores. Tais fatores podem incluir qualidade de rede entre os computadores intermediários. Qualidade de rede pode incluir proximidade física entre computadores intermediários. Assim, computadores intermediários podem ser diretamente conectados com aqueles computadores intermediários que são posicionados relativamente próximos.
[000223] Tais fatores também podem incluir políticas de segurança e políticas administrativas. Especificamente, regras podem especificar requisitos mínimos de segurança para computadores intermediários em que este computador intermediário pode ser diretamente conectado. Relações de confiança entre computadores intermediários podem ser especificadas, com conexões sendo criadas apenas entre dois computadores intermediários entre os quais tal relação de confiança existe.
[000224] A unidade de configuração 722 pode ser configurada adicionalmente para configurar o parâmetro especificando o número de caminhos de mensagem para o roteamento de múltiplos caminhos como descrito acima. Este parâmetro pode ser recebido como entrada de usuário.
[000225] Se voltando agora à FIG. 8, um modelo de rede para uma concretização da presente invenção é ilustrado. A concretização é um middleware orientado por mensagem que provê garantia de QoS de ponta a ponta em comunicação de publicar/assinar de área larga.
[000226] A concretização é um sistema de mensagem com base em sobreposição que pode gerenciar a QoS de ponta a ponta, em termos de latência, rendimento e disponibilidade, nas comunicações de publicar/assinar com base nos requisitos de aplicação. Isto é alcançado através de um conjunto holístico de estabelecimento de rota de sobreposição e mecanismos de manutenção, que exploram ativamente a diversidade nos caminhos de rede e redirecionam o tráfego pelas ligações com boa qualidade, por exemplo, baixa latência e alta disponibilidade. De maneira a lidar com falhas e dinâmica de rede, a concretização continuamente monitora a qualidade de ligação e adapta as rotas sempre que a sua qualidade deteriora abaixo os requisitos de aplicação. A concretização também alavanca as capacidades de programação de recurso na camada de transporte de dados subjacente, e usa um novo esquema de designação de orçamento para controlar o seu comportamento de programação. Nós implementamos completamente a concretização e avaliamos o seu desempenho em um leito de teste real. Nossos resultados experimentais confirmaram que a concretização pode prover efetivamente QoS de ponta a ponta por redes de área larga apesar do fato de que as redes subjacentes proveem apenas conectividade de melhores esforços e são inerentemente dinâmicos.
[000227] Nós estamos testemunhando transformações principais para a paisagem de computação empresarial. Uma de tais transformações é a consciência cada vez maior das condições e eventos do mundo real através do envio massivo, capacidade de controle e analítica, levando a uma proliferação de sistemas físico cibernéticos (CPS). Outra transformação principal é a interoperação e interconexão crescente de sistemas empresarias sobre uma área larga bastante distribuída disparada pelas práticas de negócios como fusões e aquisições, off-shoring, terceirização, e a formação de empresas virtuais. A segunda transformação tem acionado uma disciplina de engenharia emergente em torno do sistema de sistemas (SoS) . CPS e SoS introduziram novos requisitos não funcionais em middleware orientado por mensagem (MOM). Especificamente, MOM deve estar ciente e deve satisfazer as necessidades de qualidade de serviço (QoS) únicas destes novos sistemas de maneira a ser praticamente úteis.
[000228] Considere sistemas físico cibernéticos sendo desenvolvidos para uma grande variedade de domínios de aplicação que varia da grade inteligente de eletricidade para monitoramento ambiental e para transporte inteligente. Dados de sensor de evento volumosos precisam ser transportados a partir de campos de sensor para servidores empresariais de back-end para processamento de evento complexo e integração com os processos de negócios. Dados de sensor geralmente são sensíveis ao tempo pelo fato de que os dados corretos que chega muito tarde se tornam os dados errados. Portanto dados de sensor devem ser transportados de uma maneira confiável e muito responsiva. Similarmente, diretivas de controle realizadas na direção inversa de tráfego podem acionar vários sistemas críticos da missão. As diretivas de controle podem ter requisitos rígidos no desempenho de distribuição e segurança de maneira a evitar consequências catastróficas. Por outro lado, a infraestrutura de comunicação para os dados de sensor e diretivas de controle apresenta um número de desafios. Sensores geralmente são distribuídos em ambientes potencialmente hostis, o que torna os sensores mais propensos aos ataques maliciosos e perigos naturais. Adicionalmente, sensores são conectados através de ligações sem fios que são inerentemente fracas. Pode haver um alto grau de variabilidade em largura de banda sem fios devido às obstruções móveis, interferência de RF, e clima. Também pode haver períodos de desconexões intermitentes. Tais características podem ser muito difíceis para MOM para se endereçar efetivamente aos requisitos de QoS de CPS.
[000229] No reino de sistemas, os sistemas constituintes podem ser distribuídos por uma grande área geográfica, por exemplo, por uma nação ou até cobrindo múltiplos constituintes. Mensagens entre os sistemas geralmente precisam viajar um longo caminho de comunicação, incorrendo atraso muito maior do que troca de mensagem de área local. Também é mais difícil para um caminho de comunicação de longo alcance para manter alta disponibilidade devido ao número aumentado de nós e ligações no caminho. Adicionalmente, os sistemas são prováveis de serem distribuídos e operados por organizações separadas, que resultam em diferentes propriedades de segurança e graus de confiabilidade a ser associados com estes sistemas. Apesar dos desafios técnicos surgindo da infraestrutura de comunicação, muitas aplicações de SoS necessitam de capacidades de troca de mensagens com certas garantias em uma faixa de métrica de QoS incluindo latência, rendimento, disponibilidade e segurança.
[000230] A concretização é projetada para combinar o melhor da troca de mensagem empresarial e troca de mensagem em tempo real para adequar as necessidades dos paradigmas de SoS e CPS emergentes. Especificamente, a concretização facilita a interconexão de domínios de mensagem diferentes por grandes áreas geográficas e infraestrutura de rede heterogênea, e provê compatibilidade e interoperabilidade com padrões de troca de mensagem de fato incluindo tanto o padrão de Serviço de Mensagem Java™ (JMS) e o Serviço de Distribuição de Dados para Real-Time Systems™ (DDS™) standard. Serviço de Distribuição de Dados para Real-Time Systems e DDS são tanto marcas registradas ou marcas de Object Management Group, Inc. nos Estados Unidos da América e/ou outros países. Uma funcionalidade saliente da concretização é a provisão holística de QoS previsível e confiável efetivamente endereçando dinâmica de rede e sistema, heterogeneidade e condições de falha. Permite a especificação de propriedades de desempenho necessário (isto é, latência e rendimento), modelos de disponibilidade e confiabilidade, e restrições de segurança separadamente para cada tópico de mensagem ou sessão de conexão; transporta adicionalmente mensagens através de domínios administrados de maneira autônoma respeitando os requisitos acima de ponta a ponta.
[000231] Nós focamos a provisão de QoS de latência de ponta a ponta na concretização no contexto de MoM para domínios federados de área larga. Isto é alcançado através de uma abordagem integrada que combina roteamento de sobreposição e técnicas de programação de mensagem para gerenciar latência de rede e latência de processamento respectivamente. Em particular, os mecanismos de roteamento de sobreposição ativamente exploram a diversidade nos caminhos de rede e redirecionar mensagens sobre estas ligações com boa qualidade, por exemplo, baixa latência e alta disponibilidade. De maneira a lidar com falhas e dinâmica de rede, a concretização continuamente monitora a qualidade de ligação e adapta as rotas sempre que a sua qualidade deteriora abaixo os requisitos de aplicação. A concretização também nivela as capacidades de programação de recurso na camada de transporte de dados, e emprega um novo esquema de alocação de orçamento para adaptar para dinâmica de rede de curto prazo. Nossos resultados de experimento demonstram que a concretização efetivamente pode gerenciar a latência de extremidade a extremidade com relação aos requisitos de aplicação apesar da dinâmica nas redes de área larga.
[000232] Nossos alvos de trabalho que emergem de sistemas inteligentes que incorporam a infraestrutura cibernética no mundo físico com capacidades de detecção massiva, processamento e controle. Exemplos de tais sistemas incluem Grade Inteligente para distribuição de eletricidade, gerenciamento de cidade inteligente e transporte inteligente. Em todas estas aplicações, um grande número de sensores e atuadores é distribuído no campo, e eles devem ser interconectados com o processamento de evento e capacidades analíticas no back-end. Uma grande variedade de dados de evento e diretivas de controle são transportados por diferentes nós em tempo real. Isto requer um serviço de troca de mensagem que suporta diferentes paradigmas de comunicação, tais como ponto a ponto, multicast e publicar/assinar. Enquanto o sistema nós desenvolvemos suporte a todos estes paradigmas de comunicação, nós focamos no aspecto de publicar/assinar, já que é o mecanismo fundamental para a comunicação assíncrona em sistemas distribuídos.
[000233] Nós assumimos que os nós de sensor podem ser agrupados para muitos domínios locais, e existe um nó intermediário dentro de cada domínio. Estes intermediários são interconectados através de uma rede de sobreposição e coletivamente proveem o serviço de mensagens de publicação/assinatura. Cada nó de ponto final, tal como um sensor, um atuador ou um elemento de processamento, é anexado com o intermediário local. Pode haver um número arbitrário de tópicos no sistema, que pode ser definido tanto através de ferramentas administrativas ou de maneira dinâmica usando APIs de programação. Cada ponto final pode publicar e assinar para um ou múltiplos tópicos, enquanto cada intermediário pode realizar correspondência de publicar/assinar, transportar mensagens para pontos finais locais ou intermediários vizinhos, e opcionalmente realizar mediação de mensagem (por exemplo, transformação de formato). Comparado com a abordagem tradicional usando um único intermediário ou um agrupamento de intermediários, nossa abordagem com base em sobreposição provê vários benefícios arquitetônicos como na sequência: Capacidade de escalonamento: Cada nó precisa conhecer apenas o intermediário local, enquanto cada intermediário apenas se comunica com um pequeno número de intermediários vizinhos. Desta forma, nós podemos evitar manter conexões em par, o que é proibitivamente caro já que o sistema escalona. Federação: O sistema provavelmente é distribuído e operado de maneira conjunta por múltiplas organizações. Em tal cenário federado, é crítico que cada domínio administrativo pode gerenciar independentemente o acesso a partir/para os seus próprios nós, o que pode ser facilmente facilitado pelos intermediários locais. Heterogeneidade: Os sensores são inevitavelmente heterogêneos em um sistema de grande escala. É difícil, se for possível, para qualquer intermediário entender todos os protocolos usados por diferentes nós. Com uma sobreposição, os intermediários podem concordar em um protocolo canônico entre si, e usar uns poucos adaptadores para se comunicar com os nós de sensor local.
[000234] Dentro de cada domínio local, os nós do sensor e do atuador podem ser conectados com o intermediário através de uma variedade de formas, por exemplo, redes de sensor sem fios. Nós focamos em prover garantia de Qualidade de Serviço (QoS) dentro da rede de sobreposição de intermediários.
[000235] Fornecer Qualidade de Serviço (QoS) previsível é um requisito essencial para aplicações críticas da missão. Em particular, o serviço de troca de mensagem deve ser capaz de garantir distribuição confiável e oportuna de mensagens críticas, tais como um alerta de emergência ou um comando de controle em tempo real. Formalmente declarado, nosso objetivo é para prover serviço de publicar/assinar ciente de QoS em termos de latência de mensagem e taxa de distribuição entre todos os pares correspondentes de publicadores e assinantes. Especificamente, cada tópico é associado com um atraso máximo que as suas mensagens podem tolerar, e o nosso sistema busca maximizar a taxa de distribuição de mensagem no tempo, isto é, a porcentagem de mensagens que surgem antes do seu respectivo prazo. Nós consideramos o requisito de latência por tópico para a facilidade de apresentação. Nosso sistema pode ser estendido facilmente para prover diferente QoS para publicadores e assinantes individuais.
[000236] Note que o atraso de ponta a ponta para uma dada mensagem consiste tanto de atraso de processamento em cada intermediário quanto o atraso de comunicação entre adjacentes intermediários. O anterior é afetado pela carga (isto é, processo de chegada de mensagem) de um intermediário, enquanto o último é afetado pelas características das ligações de rede. O atraso de processamento de intermediário também varia com o tempo já que cada intermediário despacha mensagens em múltiplos tópicos, e as mensagens podem chegar em rajadas. Adicionalmente, já que os sensores e os atuadores são distribuídos por uma grande área geográfica, eles vão operar inevitavelmente sobre redes de área larga, onde a qualidade de ligação flutua devido à carga de tráfego dinâmico. Enquanto algumas aplicações podem empregar redes dedicadas, em geral nós assumimos que a rede subjacente provê qualquer garantia de QoS. Tal modelo de rede relaxada permite que nosso sistema seja aplicável em diferentes cenários de distribuição, mas também tem desafios para o nosso projeto já que o serviço de troca de mensagem deve lidar com tal dinâmica de rede e sistema, e garantir que o requisito de latência de extremidade a extremidade seja continuamente satisfeito.
[000237] Se voltando agora à FIG. 9, um exemplo de estabelecimento de rota dentro da concretização é demonstrado. É notado que na FIG. 9, números indicam a sequência de uma operação.
[000238] Nós usamos duas técnicas básicas para satisfazer o requisito de latência de ponta a ponta: 1) usar roteamento de sobreposição para desviar uma ligação de rede congestionada ou um intermediário sobrecarregado, 2) programar a transmissão de diferentes mensagens em cada intermediário de acordo com os seus prazos. No entanto, em um sistema de publicar/assinar onde cada tópico pode ter muitos publicadores e assinantes bastante distribuídos, existem uns poucos desafios não triviais. Primeiramente, como localizar todos publicadores e assinantes de um dado tópico de uma maneira distribuída, e como estabelecer e adaptar rotas de sobreposição dentre os interruptores em resposta uma dinâmica de rede tal como intermediários e ligações congestionadas ou em falha? Por segundo, como nós podemos coordenar as decisões de programação nos intermediários ao longo de uma rota para alcançar a latência de ponta a ponta?
[000239] Para se endereçar a tais desafios, nós tomamos uma abordagem de QoS integrada que combina roteamento de sobreposição e programação de mensagem, que tomam cuidado de dois componentes no atraso de ponta a ponta, designadamente latência de rede e latência de processamento. Para distribuir as mensagens, os intermediários primeiramente trocam mensagens de controle para localizar outros intermediários que possuem assinantes para tópicos em que eles publicam. Cada intermediário também emprega um agente de monitoramento que mantém registro da sua latência de processamento e da sua latência de rede para intermediários vizinhos. Estas mensagens de medição são trocadas dentre os intermediários para encontrar rotas de sobreposição que satisfazem atraso de extremidade para requisitos de extremidade.
[000240] Para adaptar as alterações de latência de magnitude média ou curto prazo, nós usamos uma técnica de alocação de orçamento de latência que especifica o orçamento de latência permitido em cada salto, incluindo tanto latências de processamento quanto de rede. O intermediário programa transmissões de mensagem tal que cada mensagem é distribuída para o próximo intermediário de salto dentro daquele orçamento de latência. Quando as latências de processamento ou de rede aumentam em um intermediário, o sistema pode reduzir algum orçamento em outros intermediários e aumentam o orçamento neste intermediário, tal que o atraso de ponta a ponta ainda é satisfeito. No entanto, quando as alterações na latência vão além do que pode ser manipulado deslocando o orçamento, novos caminhos de roteamento são computados para evitar ligações congestionadas ou intermediários sobrecarregados.
[000241] Para simplicidade, nós assumimos que a topologia de sobreposição de intermediário é relativamente estável. Intermediários mantêm ligações de longo prazo dentre eles. Estes intermediários e ligações podem falhar, mas em geral intermediários não unem ou deixam a sobreposição frequentemente. Esta hipótese é razoável em muitos cenários de aplicação já que a distribuição do intermediário apenas muda em escalas de tempo muito grosseiras (por exemplo, uma vez a cada algumas semanas). Nos casos onde intermediários do frequentemente se unem e deixam, um esquema de manutenção de topologia é necessário para ajustar a topologia da rede. Nós deixamos este problema para estudo futuro.
[000242] Em geral, existem duas abordagens para roteamento, designado estado de ligação (por exemplo, OSPF, tal como OSPF Version 2 como definido por RFC 2328) e vetor distância (por exemplo, RIP, tal como RIP Version 2 como definido por RFC 2453). Enquanto cada abordagem possui os seus próprios méritos, nosso projeto segue o estado de ligação que é mais adequado para o nosso contexto específico, que nós vamos explicar posteriormente. Nós também empregamos várias técnicas para suportar QoS em comunicação de publicar/assinar distribuída.
[000243] Cada ponto final pode assinar para qualquer tópico em qualquer momento. Tais assinaturas são enviadas para o intermediário local em que este ponto final é anexado. Cada intermediário mantém uma tabela de assinatura local para gravar quais tópicos cada ponto final local subscreve para. Os intermediários então propagam estes tópicos para outros intermediários. Como um resultado, cada intermediário conhece quais tópicos qualquer outro intermediário precisa; mantém tal informação em uma tabela de assinatura remota.
[000244] Quando um ponto final publica uma mensagem em um tópico, digamos T, a mensagem é enviada para o intermediário local. Este intermediário primeiramente verifica a tabela de assinatura local e transmite para todos os assinantes locais de T. Ele também verifica a tabela de assinatura remota para encontrar todos os intermediários remotos que subscrevem para T, e envia a mensagem para estes intermediários usando as rotas de sobreposição. Com o recebimento desta mensagem, estes intermediários direcionam adicionalmente para os seus respectivos assinantes locais. Desta forma, a mensagem eventualmente vai chegar em todos os assinantes do tópico T no sistema.
[000245] Os intermediários periodicamente advertem os estados de ligação, incluindo a latência de processamento medida para cada tópico, e a latência de rede para cada um dos seus vizinhos. Tais medições de latência são propagadas para todos os outros intermediários através de um único mecanismo de direcionamento vizinho. Assim cada intermediário possui uma cópia local do mapa de rede, isto é, a topologia com medições de latência para todos os nós e ligações.
[000246] Um intermediário também emprega um agente de monitoramento para medir latências de processamento e de rede. Periodicamente detona intermediários vizinhos para obter latência de rede. Nós usamos Exponentially Weighted Moving Averaging (EWMA) para evitar picos súbitos e quedas nas medições. Por outro lado, se um vizinho falha em responder a três mensagens de ping consecutivas, é considerado como tendo falhado e a latência de ligação é marcada como ™ (infinito). O agente de monitoramento também mantém registro da latência de processamento do intermediário. Ambas as medições de atraso são incluídas no aviso de estado de ligação de forma que cada intermediário pode construir um mapa de rede completo.
[000247] Em OSPF, cada nó, independentemente, roda algoritmo de Dijkstra sobre o mapa de rede para determinar o caminho mais curto para cada outro nó, e então povoa a sua tabela de roteamento de maneira apropriada. Nós não aplicamos diretamente este método em nossa sobreposição de intermediário devido à necessidade de controlar o orçamento de latência para QoS. Como cada nó em uma rota toma decisões independentes e possivelmente diferentes sobre como alcançar o destino, as rotas de ponta a ponta mudam frequentemente; nenhum nó único pode controlar a rota. Isto torna muito difícil aplicar a técnica de alocação de orçamento em uma base de salto a salto.
[000248] Em vez disso, nós empregamos um novo esquema de roteamento de fonte, onde um intermediário de publicador computa localmente as rotas para todos os destinos (isto é, correspondentes assinantes), e usa um protocolo de sinalização para configurar estas rotas. Especificamente, o nó de fonte envia uma mensagem de estabelecimento de rota (RT_EST) para o seu vizinho de próximo salto em uma rota. A mensagem de RT_EST contém o nome de tópico e todos os intermediários na rota.
[000249] Com o recebimento desta mensagem, um intermediário primeiramente verifica se é o destino na rota. Se for, envia um reconhecimento para o nó a montante do qual ele recebe esta mensagem. De outra forma, extrai os seus próprios próximos saltos a partir das rotas e direciona esta mensagem de RT_EST para o seu próximo intermediário de salto. Quando um nó recebe um reconhecimento do seu intermediário a jusante, ele insere os pares <topic,next_hop> para a sua tabela de roteamento, e então reconhece para o seu próprio nó a montante. Deste modo, finalmente o nó de fonte recebe o reconhecimento e o caminho é estabelecido, como mostrado na FIG. 9.
[000250] Nós aprimoramos adicionalmente a resiliência de caminhos construídos permitindo que as aplicações requisitem a construção de múltiplos caminhos concorrentes para cada destino. O intermediário de publicador primeiramente computa múltiplos caminhos, ordenados em seus respectivos atrasos e partindo de um com o menor atraso. O primeiro é escolhido, então cada caminho subsequente é comparado com todos os caminhos escolhidos anteriores para ver se está desunido para todos eles. Apenas um que está desunido é escolhido como o próximo caminho. Deste modo, nós podemos encontrar múltiplos caminhos desunidos para aprimorar tanto a resiliência quanto o atraso de ponta a ponta. Isto é similar com algoritmos de caminho mais curto k.
[000251] Para sumarizar brevemente, nosso esquema difere de OSPF em dois aspectos fundamentais: 1) Em OSPF, cada nó independentemente decide os seus nós de próximo salto. Em nosso esquema, o nó de fonte decide todas as rotas. 2) Em OSPF, um novo aviso de estado de ligação pode disparar um nó intermediário para atualizar a sua tabela de roteamento, alterando assim as rotas de ponta a ponta. Em nosso esquema, uma vez que as rotas são estabelecidas, elas permanecem fixadas até o nó de fonte as despedaçar. Para se adaptar à dinâmica de rede, nós empregamos um mecanismo de manutenção de rota acionado por QoS.
[000252] A concretização atualiza as rotas de sobreposição apenas quando elas não podem satisfazer o requisito de latência. Isto pode acontecer quando a rota é interrompida por interrupção de rede ou falha de intermediário, ou quando a qualidade de rota deteriora quando os intermediários são sobrecarregados ou a rede está congestionada. Todos estes casos podem ser detectados facilmente por um nó de fonte, já que recebe aviso de estado de ligação a partir de todos outros intermediários (assumindo que a sobreposição não é particionada pelas falhas). Especificamente, quando um nó de fonte recebe uma atualização de estado de ligação, ele verifica se a latência reportada afeta qualquer uma das suas rotas. Se fizer isto, ele atualiza a latência de ponta a ponta das rotas correntes e compara a mesma com o requisito de latência. Se o requisito ainda é satisfeito, nenhuma ação é tomada. De outra maneira, ele computa novamente um novo conjunto de rotas e estabelece as mesmas usando o protocolo de sinalização como descrito acima.
[000253] Quando as rotas precisam ser atualizadas, uma tarefa similar ao estabelecimento de rota é realizada, com a diferença de que tabelas de roteamento são atualizadas de maneira incremental. Em particular, a fonte computa o caminho delta entre os caminhos anteriores e correntes e envia uma mensagem de estabelecimento de rota (RT_EST) que contém a lista de novas ligações bem como a lista de ligações obsoletas. Com o recebimento, um nó vai realizar uma operação similar como dito acima, isto é, direcionar (RT_EST) para nós correntes e novos a jusante, mas apenas esperar por respostas a partir dos seus novos nós a jusante. Desde que reconhecimentos sejam recebidos, a tabela de roteamento é atualizada com os novos destinos a jusante e liberada das suas novas ligações removidas. Esta técnica garante que nenhum fluxo será interrompido enquanto o processo atualizado é executado.
[000254] Programação de mensagem é outro mecanismo de QoS importante que nós empregamos. Ela complementa o roteamento de sobreposição através do gerenciamento proativo dos recursos de rede ao longo das rotas estabelecidas.
[000255] Apesar de cada intermediário poder rodar um programador para gerenciar as suas solicitações locais, isto nem sempre leva aos resultados globalmente ótimos. Cada um dos múltiplos intermediários em que uma mensagem atravessa pode despachar mensagens independentemente um a partir de cada outro, o que não necessariamente alcança o atraso de ponta a ponta requisito. Apesar de um algoritmo centralizado poder coletar o comportamento de solicitação (por exemplo, processo de chegada, estados estacionários) de todos os intermediários e tomar decisões, tal informação muda rápido e é difícil de manter.
[000256] Nós aplicamos um algoritmo heurístico onde uma margem de latência, a diferença entre o requisito de atraso e o atraso de ponta a ponta corrente, é dividida dentre todos os intermediários. Cada intermediário terá algum "armazenamento temporário" para absorver aumentos súbitos de latência, provido que eles são pequenos o suficiente se comparados com a margem.
[000257] Considere um intermediário B que atualmente está nas seguintes rotas para um conjunto de tópicos TI, T2,...,TI. Deixe Di ser a latência de ponta a ponta requisito para o tópico Ti. A rota para o tópico Ti possui Ki saltos, e a latência medida em cada salto é d!, onde 1 < j < Ki.
[000258] Nossa intuição é dar maior prioridade para estes tópicos em que a latência de ponta a ponta está se aproximando da ligação. Para fazer isto, nós calculamos a latência de extremidade para margem de extremidade para cada tópico (digamos Ti) como:
Figure img0001
[000259] Nós dividimos igualmente esta margem de latência de ponta a ponta dentre os Ki saltos na rota. Assim a margem de latência por salto para o tópico TI é:
Figure img0002
[000260] Agora o intermediário B pode classificar os tópicos em uma ordem crescente da sua margem de latência por salto. Ou seja, o primeiro tópico possui a menor margem, assim deve ter a maior prioridade. Como programação com base em relaxamento é usada pela solicitação de transmissão, uma alta prioridade pode ser reforçada designando um pequeno orçamento de latência para este tópico. Em geral, para o n-ésimo tópico na lista classificada, nós podemos designar um orçamento de latência como (onde δ é um parâmetro de etapa):
Figure img0003
[000261] Nós precisamos destacar que a divisão igual dentre os intermediários é uma forma mais simples de alocação de orçamento.
[000262] Ela permite o comportamento de programação coordenado através dos intermediários, tais que mensagens próximas da sua ligação de atraso recebem tratamento preferencial. Nós deixamos a divisão diferenciada da margem dentre intermediários como trabalho futuro.
[000263] Se voltando agora à FIG. 10, uma implementação do fluxo de WMB em cada intermediário de sobreposição na concretização é ilustrado.
[000264] Nós implementamos nosso sistema dentro da plataforma de desenvolvimento de WebSphere® Message Broker (WMB) da IBM. WebSphere é uma marca registrada de International Business Machines Corporation, Armonk, Nova Iorque, Estados Unidos da América, nos Estados Unidos da América, outros países, ou ambos. WMB introduz os conceitos dos fluxos de mensagem; um fluxo de mensagem compreendido de uma ou mais conexões de chegada, um componente de processamento de mensagens e uma ou mais conexões de saída. Conexões de chegada são usadas pelas aplicações de domínio local para acessar a concretização. Nossa implementação simplifica de maneira significativa o processo de acessar o serviço de troca de mensagem para as aplicações de domínio local usando o serviço de troca de mensagem de Java (JMS) API. Assim, aplicações que já acessam um serviço de troca de mensagens através de JMS podem comutar prontamente para troca de mensagem de acordo com a concretização, enquanto para aplicações de legado, transformadores de JMS podem ser facilmente embutidos. Finalmente, conexões de chegada e saída também são estabelecidas para interconectar intermediários através da rede de área larga.
[000265] O mecanismo de controle da concretização fica entre as conexões de chegada e de saída, a manipulação do processo de roteamento das várias mensagens para as conexões de saída apropriada. Deste modo, WMB atua como o agente de integração entre a camada de controle de roteamento da concretização e a camada de transporte de dados. Portanto, a camada de controle de roteamento da concretização permanece desacoplada de qualquer transporte específico.
[000266] Como discutido acima, a concretização usa as mensagens de publicação/assinatura API de JMS. Para facilitar o direcionamento de mensagem, a concretização define um diferente espaço de nome de tópico e convenção de nomenclatura para fazer uma distinção clara entre (i) tópicos a partir de e destinados para as aplicações de domínio local e (ii) tópicos que vem a partir de e destinados para os intermediários de sobreposição de WAN. A concretização então vai manipular a transformação de nome de tópico a partir do domínio local para sobreposição de WAN. Mais precisamente, no domínio local um nome de tópico global T é transformado para a forma /src/T quando direcionado para a concretização e /dst/T quando enviado a partir da concretização. Na sobreposição de WAN, o tópico T será transformado de acordo com o destino como /destID/T. Esta nova abordagem de direcionamento simplifica de maneira significativa o processo de roteamento nivelando diretamente a infraestrutura de publicar/assinar subjacente removendo o requisito para um protocolo de direcionamento separado. Adicionalmente, pode ser prontamente usado dentre diferentes motores de publicar/assinar além de implementação de JMS da concretização.
[000267] O projeto global é ilustrado na FIG. 10 onde os componentes de fluxo de WMB atuais da concretização são mostrados. Dois componentes de entrada de JMS são observados, um que subscreve para publicações de aplicação de tópicos de domínio local (JMSInput_LAN) e uma para mensagens que chegam a partir de intermediários remotos (JMSInput_WAN). Tópicos de mensagens a partir da LAN são transformados através do componente de Adaptador de sensor para nomes internos como designado pela concretização. Então, estas mensagens junto com mensagens de área larga que chegam são direcionadas para o componente de roteamento que mantém os destinos de roteamento por tópico. Um componente de desduplicação remove possíveis mensagens duplicadas recebidas no nó local que pode ocorrer no caso de roteamento de múltiplos caminhos. Finalmente, similar às mensagens que chegam, componentes de saída de JMS são usados para publicar domínio local (JMSOutput_LAN) e mensagens de área larga (JMSOutput_WAN) de acordo com destinos providos pelo componente de roteamento da concretização.
[000268] Se voltando agora à FIG. 11, um gráfico do atraso de ponta a ponta tanto para a concretização quanto para a ligação direta é mostrado.
[000269] Para entender o desempenho de nosso sistema, nós usamos Nuvem de Pesquisa de IBM (IBM Research Cloud) e reportamos alguns resultados preliminares para o nosso sistema. Nós instanciamos 20 Linux VMs para formar a sobreposição para a concretização. Para refletir atrasos de rede de área larga, nós usamos as medições de AT&T para definir o atraso de rede em cada ligação de sobreposição. Cada nó possui a sua própria correspondente localização. Os 20 nós são distribuídos através dos Estados Unidos da América da América.
[000270] Como o experimento inicial, nós comparamos o atraso de ponta a ponta entre dois nós de intermediário quando (i) eles usam uma ligação direta e (ii) usando a concretização para roteamento de QoS. Nós configuramos a aplicação de publicador no nó 9 (localizado em L. A.) e a aplicação de assinante no nó 19 (em Seattle). Primeiramente nós medidos o atraso de distribuição de mensagem de ponta a ponta ao longo da ligação direta, que possui um atraso médio de 100 ms e uma variância de 10 ms. Nós deixamos o publicador enviar 10 mensagens por segundo e medir o atraso de ponta a ponta por múltiplas corridas. Então nós usamos roteamento provido pela concretização e repetimos os mesmos experimentos. Para estudar como a concretização se comporta com diferentes atrasos de rede em alternados caminhos, nós variamos a latência de rede no caminho alternativo a partir de 40 ms até 140 ms nas etapas de 20 ms, com 10% de variância. Isto simula casos onde cainhos alternados podem ter atrasos diferentes e maiores.
[000271] A FIG. 11 mostra a comparação de ponta a ponta quando o atraso no caminho alternativo muda. Inicialmente o caminho alternativo possui menor atraso. Já que a concretização pode nivelar caminhos com menor atraso e distribui mensagens anteriormente, o atraso de ponta a ponta é menor do que aquele da ligação direta. Quando o atraso sobre o caminho alternativo aumenta, gradualmente o atraso de ponta a ponta da concretização cresce. Quando o atraso no caminho alternativo excede aquele da ligação direta, o atraso de ponta a ponta da concretização se torna levemente maior. E ele se torna plano quando o atraso no caminho alternativo continua a aumentar. Isto ocorre pois em tais casos a concretização usa a ligação direta para a distribuição. Assim mesmo sem melhores caminhos alternativos, a concretização alcança desempenho similar a aquele da ligação direta.
[000272] Nós apresentamos o projeto e a implementação de uma concretização que provê um sistema de mensagem resiliente e ciente de QoS. A concretização constrói uma rede de sobreposição no topo da topologia física e provê uma nova fusão de roteamento, programação e alocação de orçamento de atraso para manter os requisitos de QoS das aplicações acionadas por evento. A concretização permite a adaptação de caminho e reconfigurações quando tantas interrupções de rede quanto atrasos excessivos ocorrem ao longo de um caminho distribuído. Nós implementamos completamente a concretização, distribuímos um protótipo em uma rede em grande escala e verificamos a viabilidade e as vantagens da nossa abordagem.
[000273] Atualmente nós estamos buscando por vários aprimoramentos e extensões para a concretização. Nós estamos estendendo nossos algoritmos de computação de caminho para acomodar múltiplas dimensões de QoS em paralelo. Em adição nós planejamos, em nosso trabalho futuro, suportar a construção de topologia dinâmica e adaptação como nós se unem e deixam a sobreposição de maneira a otimizar a conectividade disponível para aprimorar a saída da computação de caminho e o nível de resiliência. Finalmente, os planejamos integrar a funcionalidade de mediação na concretização para permitir que as aplicações realizem vários tipos de ação nas mensagens tais como transformações e filtração.
[000274] Como será percebido por um perito na técnica, um ou mais aspectos da presente invenção podem ser incorporados como um sistema, método ou produto de programa de computador. De maneira apropriada, um ou mais aspectos da presente invenção podem tomar a forma de uma concretização inteiramente de hardware, uma concretização inteiramente de software (incluindo firmware, software residente, micro- código, etc.) ou uma concretização que combina aspectos de software e hardware que podem em geral todos ser referidos aqui como um "circuito," "módulo" ou "sistema". Adicionalmente, um ou mais aspectos da presente invenção podem tomar a forma de um produto de programa de computador incorporado em um ou mais meios legíveis por computador tendo código de programa legível por computador incorporado no mesmo.
[000275] Qualquer combinação de um ou mais meios legíveis por computador pode ser usada. O meio legível por computador pode ser um meio de armazenamento legível por computador. Um meio de armazenamento legível por computador pode ser, por exemplo, mas não limitado a, um dispositivo, aparelho ou sistema eletrônico, magnético, óptico, eletromagnético, de infravermelho ou semicondutor, ou qualquer combinação adequada dos anteriores. Mais exemplos específicos (uma lista não exaustiva) do meio de armazenamento legível por computador incluem os seguintes: uma conexão elétrica tendo um ou mais fios, um disquete de computador portátil, um disco rígido, uma memória de acesso aleatório (RAM), uma memória apenas de leitura (ROM), uma memória apenas de leitura programável apagável (EPROM ou memória de Flash), uma fibra óptica, uma memória apenas de leitura de disco compacto portátil (CD-ROM), um dispositivo de armazenamento óptico, um dispositivo de armazenamento magnético, ou qualquer combinação adequada dos anteriores. No contexto deste documento, um meio de armazenamento legível por computador pode ser qualquer meio tangível que pode conter ou armazenar um programa para o uso por ou em conexão com um dispositivo, aparelho e sistema de execução de instrução.
[000276] Um meio de sinal legível por computador pode incluir um sinal de dados propagado com código de programa legível por computador incorporado no mesmo, por exemplo, em banda de base ou como parte de uma onda de portador. Tal sinal propagado pode tomar qualquer uma de uma variedade de formas, incluindo, mas não limitado a, eletromagnético, óptico, ou qualquer combinação adequada dos mesmos. Um meio de sinal legível por computador pode ser qualquer meio legível por computador que não é um meio de armazenamento legível por computador e que pode se comunicar, propagar, ou transportar um programa para o uso por ou em conexão com um dispositivo, aparelho e sistema de execução de instrução.
[000277] Código de programa incorporado em um meio legível por computador pode ser transmitido usando um meio apropriado, incluindo, mas não limitado um sem fios, com fios, cabo de fibra óptica, RF, etc., ou qualquer combinação adequada dos anteriores.
[000278] Código de programa de computador para realizar operações por um ou mais aspectos da presente invenção pode ser escrito em qualquer combinação de uma ou mais linguagens de programação, incluindo uma linguagem de programação orientada pelo objeto tal como Smalltalk, C++ ou semelhantes, e linguagens de programação de procedimento convencional, tal como a linguagem de programação "C" ou similares linguagens de programação. O código de programa legível pode executar inteiramente no computador de usuário, parcialmente no computador de usuário, como um pacote de software remoto, parcialmente no computador de usuário e parcialmente em um computador remoto ou inteiramente no computador remoto ou servidor. No último cenário, o computador remoto pode ser conectado com o computador de usuário através de qualquer tipo de rede, incluindo uma rede de área local (LAN) ou uma rede de área larga (WAN) , ou a conexão pode ser feita para um computador externo (por exemplo, através da Internet usando um Provedor de Serviço de Internet).
[000279] Aspectos da invenção são descritos aqui com referência às ilustrações de fluxograma e/ou diagramas de bloco de métodos, aparelho (sistemas), e produtos de programa de computador de acordo com concretizações da invenção. Será entendido que cada bloco das ilustrações de fluxograma e/ou diagramas de bloco, e combinações de blocos nas ilustrações de fluxograma e/ou diagramas de bloco, podem ser implementadas pelas instruções de programa legível por computador. Estas instruções de programa legível por computador podem ser providas para um processador de um computador de propósito geral, computador de propósito especial, ou outro aparelho de processamento de dados programável para produzir uma máquina, tal que as instruções, que executam através do processador do computador ou outro aparelho de processamento de dados programável, criar meios para implementar as funções/atos especificados no fluxograma e/ou bloco ou blocos do diagrama de bloco.
[000280] Estas instruções de programa legível por computador também podem ser armazenadas em um meio de armazenamento legível por computador que podem direcionar um computador, um aparelho de processamento de dados programável, e/ou outros dispositivos para funcionar de uma maneira particular, tal que o meio de armazenamento legível por computador tendo instruções armazenadas no mesmo compreende um artigo de manufatura incluindo instruções que implementam aspectos da função/ato especificado no fluxograma e/ou bloco ou blocos do diagrama de bloco.
[000281] As instruções de programa legível por computador também podem ser carregadas em um computador, outro aparelho de processamento de dados programável, ou outro dispositivo para causar uma série de etapas operacionais a ser realizadas no computador, outro aparelho programável ou outro dispositivo para produzir um processo implementado por computador, tal que as instruções que executam no computador, outro aparelho programável, ou outro dispositivo implementam as funções/atos especificados no fluxograma e/ou bloco ou blocos do diagrama de bloco.
[000282] O fluxograma e diagramas de bloco nas Figuras ilustram a arquitetura, funcionalidade e operação de possíveis implementações de sistemas, métodos, e produtos de programa de computador de acordo com várias concretizações da presente invenção. Neste sentido, cada bloco no fluxograma ou diagramas de bloco pode representar um módulo, segmento, ou porção de instruções, que compreende uma ou mais instruções executáveis para implementar as funções lógicas especificadas. Em algumas implementações alternativas, as funções notadas no bloco podem ocorrer fora da ordem notada nas figuras. Por exemplo, dois blocos mostrados em sucessão, de fato, podem ser executados substancialmente concorrentemente, ou os blocos algumas vezes podem ser executados na ordem reversa, dependendo da funcionalidade envolvida. Também será notado que cada bloco dos diagramas de bloco e/ou ilustração de fluxograma, e combinações de blocos nos diagramas de bloco e/ou ilustração de fluxograma, podem ser implementados por sistemas com base em hardware de propósito especial que realizam as funções especificadas ou atos especificados ou realizar combinações de instruções de computador e hardware de propósito especial.
[000283] Os diagramas de fluxo representados aqui são apenas exemplos. Eles podem ter muitas variações para estes diagramas ou as etapas (ou operações) descritos aqui sem fugir do espírito da invenção. Por exemplo, as etapas podem ser realizadas em uma ordem diferente, ou etapas podem ser adicionadas, deletadas ou modificadas. Todas estas variações são consideradas uma parte da invenção reivindicada. Adicionalmente, o uso dos termos um, uma, etc. não denota uma limitação de quantidade, mas em vez disso denota a presença de pelo menos um do item referenciado.
[000284] Enquanto as concretizações preferidas da invenção foram descritas, será entendido que os peritos na técnica, tanto agora quanto no futuro, podem tomar vários aprimoramentos e aperfeiçoamentos que estão dentro do escopo das reivindicações que seguem. Estas reivindicações devem ser interpretadas para manter a proteção apropriada para a invenção descrita primeiramente.

Claims (22)

1. Método para transmitir dados de acordo com um ou mais requisitos de qualidade de serviço para um tópico de mensagem, caracterizado por compreender: calcular um caminho de mensagem especificando uma sequência de computadores intermediários selecionados a partir de uma rede de computadores intermediários interconectados, a sequência de computadores intermediários incluindo intermediários publicadores que publicam mensagens com o tópico de mensagem e intermediários de assinatura que recebem mensagens com o tópico de mensagem, a sequência começando com um computador intermediário inicial conectado com um computador remetente, a sequência terminando com um computador intermediário final conectado com um computador de recepção, o caminho de mensagem sendo estimado estatisticamente para satisfazer o um ou mais requisitos de qualidade de serviço; transmitir uma mensagem a partir do computador intermediário inicial para o computador de recepção através da sequência de computadores intermediários especificada pelo caminho de mensagem, a mensagem incluindo o tópico de mensagem como metadados; receber métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados; determinar se o caminho de mensagem satisfaz o um ou mais requisitos de qualidade de serviço com base na métrica de qualidade de serviço; e se o caminho de mensagem é determinado para não satisfazer o um ou mais requisitos de qualidade de serviço, repetir a etapa de cálculo para um novo caminho de mensagem especificando uma nova sequência de computadores intermediários selecionados a partir da rede de computadores intermediários interconectados, o novo caminho de mensagem sendo estimado estatisticamente para satisfazer o um ou mais requisitos de qualidade de serviço para o tópico de mensagem.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o um ou mais requisitos de qualidade de serviço inclui uma probabilidade máxima de falha para transmitir a mensagem.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que: o um ou mais requisitos de qualidade de serviço inclui uma latência máxima para a transmissão da mensagem; e a etapa de cálculo compreende: selecionar um conjunto de um ou mais caminhos de mensagem tal que os um ou mais caminhos de mensagem incluídos no conjunto são estimados estatisticamente para satisfazer a latência máxima para a transmissão da mensagem, estimar estatisticamente uma probabilidade de falha para transmitir a mensagem de cada um dos caminhos de mensagem no conjunto de um ou mais caminhos de mensagem, e com base na probabilidade de falha estatisticamente estimada para transmitir a mensagem, selecionar um ou mais caminhos de mensagem candidatos do conjunto de um ou mais caminhos de mensagem tal que os um ou mais caminhos de mensagem candidatos são estatisticamente estimados para satisfazer a probabilidade máxima de falha para transmitir a mensagem.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que estimar estatisticamente a probabilidade de falha para transmitir a mensagem está baseado em uma probabilidade de falha combinada para transmitir a mensagem por cada um dos computadores intermediários no caminho de mensagem.
5. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que estimar estatisticamente a probabilidade de falha para transmitir a mensagem está baseado em pelo menos um de uma probabilidade de falhas correlacionadas e um modelo de probabilidades de falha.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os um ou mais requisitos de qualidade de serviço incluem uma latência máxima para a transmissão da mensagem.
7. Método, de acordo com a reivindicação 6, caracterizado por compreender adicionalmente: calcular um orçamento de latência, em que calcular o orçamento de latência compreende subtrair uma latência estatisticamente estimada do caminho de mensagem a partir da latência máxima; e distribuir o orçamento de latência dentre segmentos de caminho de mensagem entre computadores intermediários especificados pelo caminho de mensagem.
8. Método, de acordo com a reivindicação 7, caracterizado por compreender adicionalmente: selecionar uma mensagem alvo a partir de uma pluralidade de mensagens pendentes de transmissão através de um segmento de caminho de mensagem comum entre computadores intermediários incluídos na rede de computadores intermediários interconectados tal que a mensagem alvo possui um menor orçamento de latência dentre a pluralidade de mensagens; e priorizar a mensagem alvo para a transmissão.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: a etapa de cálculo calcula uma pluralidade de caminhos de mensagem; a etapa de transmissão transmite a mensagem de acordo com cada um da pluralidade calculada de caminhos de mensagem; a etapa de determinação determina se a pluralidade calculada de caminhos de mensagem coletivamente satisfazem os um ou mais requisitos de qualidade de serviço; e repetir a etapa de cálculo se a pluralidade calculada de caminhos de mensagem é determinada para não satisfazer coletivamente os um ou mais requisitos de qualidade de serviço.
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: receber métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados inclui: monitorar um estado de um ou mais dos computadores intermediários incluídos na rede de computadores intermediários interconectados e um ou mais segmentos de caminho de mensagem entre computadores intermediários incluídos na rede de computadores intermediários interconectados, e determinar uma ou mais métricas de resiliência com base no estado monitorado; e a métrica de qualidade de serviço inclui as uma ou mais métricas de resiliência.
11. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: receber métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados inclui: monitorar uma latência de um ou mais segmentos de caminho de mensagem entre computadores intermediários incluídos na rede de computadores intermediários interconectados, e determinar uma ou mais métricas de latência com base no estado monitorado; e a métrica de qualidade de serviço inclui as uma ou mais métricas de latência.
12. Computador intermediário acoplado com uma rede de computadores intermediários interconectados para transmitir dados de acordo com um ou mais requisitos de qualidade de serviço, caracterizado por compreender: uma unidade de cálculo configurada para calcular um caminho de mensagem especificando uma sequência de computadores intermediários selecionados a partir da rede de computadores intermediários interconectados, a sequência de computadores intermediários incluindo intermediários publicadores que publicam mensagens com o tópico de mensagem e intermediários de assinatura que recebem mensagens com o tópico de mensagem, a sequência começando com um computador intermediário inicial conectado com um computador remetente, a sequência terminando com um computador intermediário final conectado com um computador de recepção, o caminho de mensagem sendo estimado estatisticamente para satisfazer os um ou mais requisitos de qualidade de serviço; uma unidade de transmissão configurada para transmitir uma mensagem a partir do computador intermediário inicial para o computador de recepção através da sequência de computadores intermediários especificada pelo caminho de mensagem, a mensagem incluindo o tópico de mensagem como metadados; uma unidade de recepção configurada para receber métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados; e uma unidade de determinação configurada para determinar se o caminho de mensagem satisfaz os um ou mais requisitos de qualidade de serviço com base na métrica de qualidade de serviço e, se o caminho de mensagem é determinado para não satisfazer os um ou mais requisitos de qualidade de serviço, para fazer com que a unidade de cálculo calcule um novo caminho de mensagem especificando uma nova sequência de computadores intermediários selecionados a partir da rede de computadores intermediários interconectados, o novo caminho de mensagem sendo estimado estatisticamente para satisfazer os um ou mais requisitos de qualidade de serviço.
13. Computador intermediário, de acordo com a reivindicação 12, caracterizado pelo fato de que os um ou mais requisitos de qualidade de serviço incluem uma probabilidade máxima de falha para transmitir a mensagem.
14. Computador intermediário, de acordo com a reivindicação 13, caracterizado pelo fato de que: os um ou mais requisitos de qualidade de serviço incluem uma latência máxima para a transmissão da mensagem; e a unidade de cálculo é configurada adicionalmente para: selecionar um conjunto de um ou mais caminhos de mensagem tal que os um ou mais caminhos de mensagem incluídos no conjunto são estimados estatisticamente para satisfazer a latência máxima para a transmissão da mensagem, estimar estatisticamente uma probabilidade de falha para transmitir a mensagem de cada um dos caminhos de mensagem no conjunto de um ou mais caminhos de mensagem, e com base na probabilidade de falha estatisticamente estimada para transmitir a mensagem, selecionar um ou mais caminhos de mensagem candidatos do conjunto de um ou mais caminhos de mensagem tal que os um ou mais caminhos de mensagem candidatos são estatisticamente estimados para satisfazer a probabilidade máxima de falha para transmitir a mensagem.
15. Computador intermediário, de acordo com a reivindicação 14, caracterizado pelo fato de que estimar estatisticamente a probabilidade de falha para transmitir a mensagem está baseado em uma probabilidade de falha combinada para transmitir a mensagem por cada um dos computadores intermediários no caminho de mensagem.
16. Computador intermediário, de acordo com a reivindicação 14, caracterizado pelo fato de que estimar estatisticamente a probabilidade de falha para transmitir a mensagem está baseado em pelo menos um de uma probabilidade de falhas correlacionadas e um modelo de probabilidades de falha.
17. Computador intermediário, de acordo com a reivindicação 12, caracterizado pelo fato de que os um ou mais requisitos de qualidade de serviço incluem uma latência máxima para a transmissão da mensagem.
18. Computador intermediário, de acordo com a reivindicação 17, caracterizado pelo fato de que compreende adicionalmente uma unidade de orçamento configurada para: calcular um orçamento de latência, em que calcular o orçamento de latência compreende subtrair uma latência estatisticamente estimada do caminho de mensagem a partir da latência máxima; e distribuir o orçamento de latência dentre segmentos de caminho de mensagem entre computadores intermediários especificados pelo caminho de mensagem.
19. Computador intermediário, de acordo com a reivindicação 18, caracterizado pelo fato de que compreende adicionalmente uma unidade de priorização configurada para: selecionar uma mensagem alvo a partir de uma pluralidade de mensagens pendentes de transmissão através de um segmento de caminho de mensagem comum entre computadores intermediários incluídos na rede de computadores intermediários interconectados tal que a mensagem alvo possui um menor orçamento de latência dentre a pluralidade de mensagens; e priorizar a mensagem alvo para a transmissão.
20. Computador intermediário, de acordo com a reivindicação 12, caracterizado pelo fato de que: a unidade de cálculo está configurada adicionalmente para calcular uma pluralidade de caminhos de mensagem; a unidade de transmissão está configurada adicionalmente para transmitir a mensagem de acordo com cada um da pluralidade calculada de caminhos de mensagem; e a unidade de determinação está configurada adicionalmente para determinar se a pluralidade calculada de caminhos de mensagem coletivamente satisfazem os um ou mais requisitos de qualidade de serviço e, se a pluralidade calculada de caminhos de mensagem é determinada para não satisfazer coletivamente os um ou mais requisitos de qualidade de serviço, para fazer com que a unidade de cálculo calcule uma nova pluralidade de caminhos de mensagem.
21. Computador intermediário, de acordo com a reivindicação 12, caracterizado pelo fato de que: receber métrica de qualidade de serviço sobre a rede de computadores intermediários interconectados inclui: monitorar um estado de um ou mais dos computadores intermediários incluídos na rede de computadores intermediários interconectados e um ou mais segmentos de caminho de mensagem entre computadores intermediários incluídos na rede de computadores intermediários interconectados, e determinar uma ou mais métrica de resiliência com base no estado monitorado; e a métrica de qualidade de serviço inclui as uma ou mais métricas de resiliência.
22. Computador intermediário, de acordo com a reivindicação 12, caracterizado pelo fato de que: receber métrica de qualidade de serviço em torno da rede de computadores intermediários interconectados inclui: monitorar uma latência de um ou mais segmentos de caminho de mensagem entre computadores intermediários incluídos na rede de computadores intermediários interconectados, e determinar uma ou mais métricas de latência com base no estado monitorado; e a métrica de qualidade de serviço inclui as uma ou mais métricas de latência.
BR112012012942-2A 2009-11-24 2010-10-18 sistema e método para fornecer qualidade de serviço em uma fábrica de mensagem de área ampla BR112012012942B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/625,437 2009-11-24
US12/625,437 US8489722B2 (en) 2009-11-24 2009-11-24 System and method for providing quality of service in wide area messaging fabric
PCT/US2010/053032 WO2011066043A1 (en) 2009-11-24 2010-10-18 System and method for providing quality of service in wide-area messaging fabric

Publications (2)

Publication Number Publication Date
BR112012012942A2 BR112012012942A2 (pt) 2020-06-23
BR112012012942B1 true BR112012012942B1 (pt) 2020-12-08

Family

ID=44062922

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112012012942-2A BR112012012942B1 (pt) 2009-11-24 2010-10-18 sistema e método para fornecer qualidade de serviço em uma fábrica de mensagem de área ampla

Country Status (6)

Country Link
US (1) US8489722B2 (pt)
KR (1) KR20120123262A (pt)
BR (1) BR112012012942B1 (pt)
GB (1) GB2489140B (pt)
TW (1) TW201145040A (pt)
WO (1) WO2011066043A1 (pt)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009151863A2 (en) * 2008-06-10 2009-12-17 Myers Wolin, Llc A network gateway for time-critical and mission-critical networks
US8397138B2 (en) * 2009-12-08 2013-03-12 At & T Intellectual Property I, Lp Method and system for network latency virtualization in a cloud transport environment
US8661080B2 (en) * 2010-07-15 2014-02-25 International Business Machines Corporation Propagating changes in topic subscription status of processes in an overlay network
US8589536B2 (en) * 2010-08-02 2013-11-19 International Business Machines Corporation Network monitoring system
US8738704B2 (en) * 2010-09-07 2014-05-27 Xerox Corporation Publish/subscribe broker messaging system and method
KR101467716B1 (ko) * 2010-10-29 2014-12-01 노키아 코포레이션 발행된 메시지를 분배하는 방법 및 장치
US8793322B2 (en) * 2011-02-20 2014-07-29 International Business Machines Corporation Failure-controlled message publication and feedback in a publish/subscribe messaging environment
US8843580B2 (en) 2011-02-20 2014-09-23 International Business Machines Corporation Criteria-based message publication control and feedback in a publish/subscribe messaging environment
US9021131B2 (en) * 2011-03-24 2015-04-28 Red Hat, Inc. Identifying linked message brokers in a dynamic routing network
US9313159B2 (en) 2011-03-24 2016-04-12 Red Hat, Inc. Routing messages exclusively to eligible consumers in a dynamic routing network
US9137189B2 (en) * 2011-03-24 2015-09-15 Red Hat, Inc. Providing distributed dynamic routing using a logical broker
US9225637B2 (en) * 2011-04-15 2015-12-29 Architecture Technology, Inc. Border gateway broker, network and method
US8995338B2 (en) 2011-05-26 2015-03-31 Qualcomm Incorporated Multipath overlay network and its multipath management protocol
US9444887B2 (en) 2011-05-26 2016-09-13 Qualcomm Incorporated Multipath overlay network and its multipath management protocol
US9124482B2 (en) * 2011-07-19 2015-09-01 Cisco Technology, Inc. Delay budget based forwarding in communication networks
US9432218B2 (en) 2011-07-28 2016-08-30 Red Hat, Inc. Secure message delivery to a transient recipient in a routed network
US8885502B2 (en) 2011-09-09 2014-11-11 Qualcomm Incorporated Feedback protocol for end-to-end multiple path network systems
US9197544B2 (en) * 2011-10-19 2015-11-24 The Regents Of The University Of California Comprehensive multipath routing for congestion and quality-of-service in communication networks
US9256714B2 (en) 2011-11-09 2016-02-09 International Business Machines Corporation Preserving integrity of messages in a messaging oriented middleware system
US8813205B2 (en) * 2012-02-06 2014-08-19 International Business Machines Corporation Consolidating disparate cloud service data and behavior based on trust relationships between cloud services
US20140012929A1 (en) * 2012-06-15 2014-01-09 Life of Two Delivering messages over multiple communication paths
US9451393B1 (en) * 2012-07-23 2016-09-20 Amazon Technologies, Inc. Automated multi-party cloud connectivity provisioning
US9252915B1 (en) * 2012-08-15 2016-02-02 Washington State University Systematic adaptation of data delivery
US8990301B2 (en) 2012-08-22 2015-03-24 International Business Machines Corporation Broker designation and selection in a publish-subscription environment
WO2014093921A1 (en) 2012-12-13 2014-06-19 Huawei Technologies Co., Ltd. Methods and systems for admission control and resource availability prediction considering user equipment (ue) mobility
US9455919B2 (en) 2012-12-14 2016-09-27 Huawei Technologies Co., Ltd. Service provisioning using abstracted network resource requirements
US9426075B2 (en) 2013-03-12 2016-08-23 Huawei Technologies Co., Ltd. Method and system to represent the impact of load variation on service outage over multiple links
US9584387B1 (en) * 2013-03-15 2017-02-28 Google Inc. Systems and methods of sending a packet in a packet-switched network through a pre-determined path to monitor network health
KR20140137573A (ko) * 2013-05-23 2014-12-03 한국전자통신연구원 데이터 분산 서비스 미들웨어의 쓰레드를 위한 메모리 관리 장치 및 방법
WO2014194452A1 (zh) * 2013-06-03 2014-12-11 华为技术有限公司 消息发布与订阅的方法及装置
EP3008930B1 (en) * 2013-06-14 2019-07-24 Microsoft Technology Licensing, LLC Framework and applications for proximity-based social interaction
US20150032495A1 (en) * 2013-07-25 2015-01-29 Futurewei Technologies, Inc. System and Method for User Controlled Cost Based Network and Path Selection across Multiple Networks
US10257287B2 (en) * 2013-08-28 2019-04-09 Physio-Control, Inc. Real-time data distribution system for patient monitoring devices, cardiac defibrillators and associated information delivery systems
US20150257081A1 (en) 2014-02-04 2015-09-10 Architecture Technology, Inc. Hybrid autonomous network and router for communication between heterogeneous subnets
US10587509B2 (en) 2014-02-04 2020-03-10 Architecture Technology Corporation Low-overhead routing
US9369360B1 (en) 2014-05-12 2016-06-14 Google Inc. Systems and methods for fault detection in large scale networks
US10592539B1 (en) * 2014-07-11 2020-03-17 Twitter, Inc. Trends in a messaging platform
US9680919B2 (en) * 2014-08-13 2017-06-13 Software Ag Usa, Inc. Intelligent messaging grid for big data ingestion and/or associated methods
US10075365B2 (en) 2014-08-27 2018-09-11 Raytheon Company Network path selection in policy-based networks using routing engine
US9544403B2 (en) * 2015-02-02 2017-01-10 Linkedin Corporation Estimating latency of an application
US9774654B2 (en) 2015-02-02 2017-09-26 Linkedin Corporation Service call graphs for website performance
EP3082315B1 (en) 2015-04-18 2017-02-15 Urban Software Institute GmbH Computer system and method for message routing
US10165095B2 (en) * 2015-06-22 2018-12-25 Rockwell Automation Technologies, Inc. Active report of event and data
US10225219B2 (en) * 2016-02-22 2019-03-05 International Business Machines Corporation Message delivery in a message system
US10326617B2 (en) 2016-04-15 2019-06-18 Architecture Technology, Inc. Wearable intelligent communication hub
US20180284755A1 (en) 2016-05-09 2018-10-04 StrongForce IoT Portfolio 2016, LLC Methods and systems for data storage in an industrial internet of things data collection environment with large data sets
US11774944B2 (en) 2016-05-09 2023-10-03 Strong Force Iot Portfolio 2016, Llc Methods and systems for the industrial internet of things
US11327475B2 (en) 2016-05-09 2022-05-10 Strong Force Iot Portfolio 2016, Llc Methods and systems for intelligent collection and analysis of vehicle data
US11397428B2 (en) 2017-08-02 2022-07-26 Strong Force Iot Portfolio 2016, Llc Self-organizing systems and methods for data collection
US10833881B1 (en) * 2017-11-06 2020-11-10 Amazon Technologies, Inc. Distributing publication messages to devices
US11025745B2 (en) * 2018-06-28 2021-06-01 Intel Corporation Technologies for end-to-end quality of service deadline-aware I/O scheduling
JP7053033B2 (ja) * 2018-10-11 2022-04-12 株式会社東芝 無線通信装置および方法
US11538562B1 (en) 2020-02-04 2022-12-27 Architecture Technology Corporation Transmission of medical information in disrupted communication networks
US11184266B1 (en) * 2020-05-14 2021-11-23 PubNub, Inc. Method and system for detecting latency in a wide area network
US11888728B1 (en) 2020-05-14 2024-01-30 PubNub, Inc. Method and system for detecting latency in a wide area network
US20220404789A1 (en) * 2021-06-16 2022-12-22 Fisher-Rosemount Systems, Inc. Utilizing quality-of-service metrics to facilitate transitions between i/o channels for i/o server services

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5995503A (en) * 1996-06-12 1999-11-30 Bay Networks, Inc. Method and apparatus for providing quality of service routing in a network
WO1998058501A1 (en) * 1997-06-16 1998-12-23 Telefonaktiebolaget Lm Ericsson A telecommunications performance management system
US6813272B1 (en) * 1999-06-23 2004-11-02 Korea Telecommunication Authority QoS-based routing method
US7260635B2 (en) * 2000-03-21 2007-08-21 Centrisoft Corporation Software, systems and methods for managing a distributed network
US20020087699A1 (en) * 2000-07-31 2002-07-04 Telefonaktiebolaget Lm Ericsson (Publ) Dynamic QoS management in differentiated services using bandwidth brokers, RSVP aggregation and load control protocols
US7257120B2 (en) * 2000-11-17 2007-08-14 Altera Corporation Quality of service (QoS) based supervisory network for optical transport systems
EP1248431B1 (en) 2001-03-27 2007-10-31 Sony Deutschland GmbH Method for achieving end-to-end quality of service negotiation for distributed multimedia applications
US7042877B2 (en) * 2001-04-27 2006-05-09 The Boeing Company Integrated analysis of incoming data transmissions
US7200144B2 (en) * 2001-10-18 2007-04-03 Qlogic, Corp. Router and methods using network addresses for virtualization
US7406537B2 (en) * 2002-11-26 2008-07-29 Progress Software Corporation Dynamic subscription and message routing on a topic between publishing nodes and subscribing nodes
US8122118B2 (en) * 2001-12-14 2012-02-21 International Business Machines Corporation Selection of communication protocol for message transfer based on quality of service requirements
US20030135556A1 (en) * 2001-12-14 2003-07-17 International Business Machines Corporation Selection of communication strategies for message brokers or publish/subscribe communications
US7113796B2 (en) * 2002-01-18 2006-09-26 Microsoft Corporation Framework and method for QoS-aware resource discovery in mobile ad hoc networks
US7529263B1 (en) * 2002-01-19 2009-05-05 Ucentric Systems, Inc. Local area-networked system having intelligent traffic control and efficient bandwidth management
US7725590B2 (en) * 2002-04-19 2010-05-25 Computer Associates Think, Inc. Web services broker
US7764617B2 (en) * 2002-04-29 2010-07-27 Harris Corporation Mobile ad-hoc network and methods for performing functions therein based upon weighted quality of service metrics
US6968374B2 (en) * 2002-07-03 2005-11-22 Telefonaktiebolaget Lm Ericsson (Publ) Quality of service (QOS) mechanism in an internet protocol (IP) network
US7587517B2 (en) 2002-07-08 2009-09-08 Precache Inc. Packet routing via payload inspection for quality of service management
US7499404B2 (en) * 2002-08-30 2009-03-03 Nortel Networks Limited Distributed quality of service routing
US6937591B2 (en) * 2003-02-27 2005-08-30 Microsoft Corporation Quality of service differentiation in wireless networks
GB0305066D0 (en) * 2003-03-06 2003-04-09 Ibm System and method for publish/subscribe messaging
JP2008527848A (ja) 2005-01-06 2008-07-24 テーベラ・インコーポレーテッド ハードウェア・ベースのメッセージング・アプライアンス
US20060224668A1 (en) 2005-03-10 2006-10-05 International Business Machines Corporation Methods and apparatus for efficiently placing stream transforms among broker machines comprising an overlay network in a publish-subscribe messaging system
US7463637B2 (en) * 2005-04-14 2008-12-09 Alcatel Lucent Public and private network service management systems and methods
US8683078B2 (en) * 2006-03-07 2014-03-25 Samsung Electronics Co., Ltd. Method and system for quality of service control for remote access to universal plug and play
JP5410998B2 (ja) * 2007-03-01 2014-02-05 イクストリーム・ネットワークス・インコーポレーテッド スイッチ及びルータのためのソフトウェア制御プレーン
BRPI0814233A2 (pt) * 2007-07-13 2015-01-06 Nortel Networks Ltd Controle de qualidade de serviços em ambientes de comunicação sem-fio de múltiplos saltos
CN101355492B (zh) * 2007-07-27 2011-04-13 华为技术有限公司 简单对象访问协议路由方法及路由系统以及相关设备
WO2009019671A1 (en) 2007-08-09 2009-02-12 Markport Limited Network resource management
JP2009055327A (ja) * 2007-08-27 2009-03-12 Hitachi Ltd ネットワークシステム
US20090154397A1 (en) * 2007-12-17 2009-06-18 Nortel Networks Limited System and method for providing quality of service enablers for third party applications

Also Published As

Publication number Publication date
BR112012012942A2 (pt) 2020-06-23
WO2011066043A1 (en) 2011-06-03
GB201210971D0 (en) 2012-08-01
TW201145040A (en) 2011-12-16
KR20120123262A (ko) 2012-11-08
GB2489140A (en) 2012-09-19
US20110125921A1 (en) 2011-05-26
US8489722B2 (en) 2013-07-16
GB2489140B (en) 2016-01-27

Similar Documents

Publication Publication Date Title
BR112012012942B1 (pt) sistema e método para fornecer qualidade de serviço em uma fábrica de mensagem de área ampla
US10855575B2 (en) Adaptive traffic routing in a software-defined wide area network
EP3673629B1 (en) Topology-aware controller associations in software-defined networks
CN104426766B (zh) 跨多个网络层的动态端到端网络路径建立
EP2911348B1 (en) Control device discovery in networks having separate control and forwarding devices
US10511524B2 (en) Controller communications in access networks
US9461877B1 (en) Aggregating network resource allocation information and network resource configuration information
Ghosh et al. Scalable multi-class traffic management in data center backbone networks
EP3682597B1 (en) Modeling access networks as trees in software-defined network controllers
Abts et al. A Guided Tour through Data-center Networking: A good user experience depends on predictable performance within the data-center network.
BR112013032368B1 (pt) Método de gerenciamento e controle de serviço de nuvem para interface com o estrato de rede
US20140086065A1 (en) Disjoint multi-paths with service guarantee extension
Yang et al. Traffic uncertainty models in network planning
Lin et al. Jointly optimized QoS-aware virtualization and routing in software defined networks
Gomes et al. Bandwidth-aware allocation of resilient virtual software defined networks
Vanamoorthy et al. Congestion-free transient plane (CFTP) using bandwidth sharing during link failures in SDN
Yang et al. Message-oriented middleware with QoS awareness
Johnston et al. Motivation, design, deployment and evolution of a guaranteed bandwidth network service
Ghosh et al. A centralized hybrid routing model for multicontroller SD‐WANs
Chen et al. Comet: Decentralized complex event detection in mobile delay tolerant networks
Rekik et al. Geographic greedy routing with aco recovery strategy graco
Sharathkumar et al. A Reliable Load Balancing Fault Tolerant Multi-SDN Controller approach in a typical Software Defined Network
Myoupo et al. FSB‐DReViSeR: Flow Splitting‐Based Dynamic Replacement of Virtual Service Resources for Mobile Users in Virtual Heterogeneous Networks
Wang Management of Temporally and Spatially Correlated Failures in Federated Message Oriented Middleware for Resilient and QoS-Aware Messaging Services.
Li et al. Towards Performance Optimization of Network Service Chains with Multi-Ingress and Single-Egress

Legal Events

Date Code Title Description
B11A Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing
B04C Request for examination: application reinstated [chapter 4.3 patent gazette]
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]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 08/12/2020, OBSERVADAS AS CONDICOES LEGAIS.