Apama (programvara)

APAMA
Utvecklare Software AG
Stabil frisättning
10.5.3 / 26 juni 2020 ; för 2 år sedan ( 2020-06-26 )
Skrivet i C++ och Java
Operativ system Windows , Linux
Typ Komplex händelsebearbetning , bearbetning av händelseströmmar , IoT , dataanalys
Licens Kommersiellt / Freemium
Hemsida apamacommunity .com

Apama är en motor för komplex händelsebearbetning ( CEP) och ESP-motor, utvecklad av Software AG . Apama fungerar som en plattform för att utföra streaminganalyser över en rad ingångar och applikationer med hög volym/låg latens, såsom IoT -enheter, finansiella utbyten, bedrägeriupptäckt, sociala medier och liknande. Användare kan definiera datamönster att lyssna efter och åtgärder att vidta när dessa mönster hittas, vilka definieras i det angivna domänspecifika språket som kallas Event Processing Language (EPL). Kärnmotorn i Apama är skriven i C++ ; processen kan också valfritt innehålla en JVM för att interagera med användarskapad Java -kod. Apama fokuserar på hög genomströmning, låg latens och minneseffektiv prestanda; används i både Intel benchmarks och mindre maskiner som Raspberry Pi , routrar och andra Edge /IoT-enheter. Det är särskilt anmärkningsvärt inom CEP-området som ett av de tidigaste projekten , en långsiktig marknadsledare och innovatör av många patent.

Historia

Apama Ltd. grundades 1999 av Dr John Bates , Dr Giles Nelson och Dr Mohamad Afshar, som träffades när de forskar vid Cambridge University Department of Computer Science and Technology .

2005 förvärvades Apama Limited av Progress Software för 25 miljoner dollar.

2013 förvärvades Apama av Software AG från Progress för ett ej avslöjat belopp.

släpptes en freemium- version, Apama Community Edition, tillsammans med stödjande forum och GitHub -utrymmen.

Översikt

Språk för händelsebearbetning

Ansökningar för Apama skapas i Event Processing Language (EPL). EPL innehåller språkfunktioner designade enbart för händelsedriven programmering , inklusive:

  • Händelser - Enkla datastrukturer som innehåller fält och åtgärder
  • Bildskärmar - I likhet med klasser på andra språk innehåller bildskärmar lyssnare och åtgärder och laddas vid injektion
  • Lyssnare - Deklarativa mönster som definierar intressanta förhållanden/kombinationer av händelser. Aggregering, temporal och filtreringsoperatorer stöds
  • Åtgärder - Imperativa funktioner, vanligtvis körs av lyssnare vid aktivering eller monitorer vid laddning
  • Kontexter - I likhet med trådar finns monitorer i sammanhang
  • Kanaler - Mekanism för att kommunicera mellan sammanhang och externa system
  • Strömmar - Ordnade partitioner av händelser med stöd för aggregering och SQL -liknande frågor

Den EPL C++/Java-liknande syntaxen är utformad för att skapa CEP-applikationer kortfattat i kombination med ovanstående funktioner, ett exempel på vilka finns nedan:

  
     
     
     

 
  
      
           
    
 
      
                   
               
                 
            
        
    
 
        
        
         
    
 händelse  MyEvent  {  heltal  myInt  ;  sekvens  <  sträng  >  myListOfStrings  ;  boolesk  myBool  ;  }  övervaka  MyMonitor  {  action  onload  ()  {  spawn  worker  ()  till  kontext  (  "mySideThread" )  ;  }  action  worker  ()  {  alla  MyEvent  (  myInt  >  10  )  som  myCoassignedEvent  ->  MyEvent  (  myInt  >  20  )  eller  MyEvent  (  myBool  =  true  )  inom  30.0  {  if  (  doWork  (  myCoassignedEvent  .  myListOfStrings  )  !=  problem  )  {  log  "Problem !"  ;  } }  }  action  doWork  (  sekvens  <  sträng  >  )  returnerar  boolean  {  //  gör arbete på listan  return  true  ;  }  } 

Apama frågor

Apama Queries är ett alternativt språk för att skapa regler över definierade datamängder, såsom de senaste fem minuterna av mottagen data eller de senaste tjugo händelserna som tagits emot, i en automatiskt flertrådig miljö som skalas över maskiner. Apama Queries är bättre lämpade för att övervaka mycket stora uppsättningar, såsom banktransaktioner. Vanligtvis kommer varje enhet (dvs. kontoinnehavaren) att delas upp och behandlas oberoende av resten av uppsättningen. Frågor och monitorer kan kommunicera via kanaler. Ett exempel på det tidigare scenariot finns nedan:

  
     
         
         
    
 
     
            
    
 
        
           
           
           
              
                
        
 fråga  FindSuspiciousWithdrawals  {  parametrar  {  float  DURATION  ;  flyta  TRÖSKEL  ;  }  matar in  {  Uttag  (  )  nyckelkortsnummer  inom  DURATION  ;  }  hitta  varje  Uttag  som  w  där  w  .  belopp  >  100  välj  sista  (  med  transaktionsId  )  som  tid  välj  sist  (  med  kortnummer  )  som  cid  med  sista  (  vikt  belopp  )  >  TRÖSKEL  *  medelvärde  (  vikt  belopp  )  {  skicka  SuspiciousTransaction  (  tid  ,  cid  )  till  SuspiciousTransactionManager  ;  _  _  _  _  }  } 

Designer

Software AG Designer är en Eclipse- baserad IDE med speciellt stöd för att utveckla och distribuera Apama-applikationer, som ingår i en standardinstallation. Funktioner inkluderar kodhjälp, pakethantering, profilering, GUI-utveckling och distributionshantering.

Plugins

Apama stöder möjligheten för användare att skapa plugins för att utöka kapaciteten. Dessa plugins finns i två former, EPL plugins ( för att lägga till funktioner till EPL ) och Connectivity plugins (för att kommunicera med omvärlden). C++ och Java API:er är tillgängliga för båda plugintyperna. Connectivity plugins finns i två former, codecs (som översätter data från ett format till ett annat, såsom den interna Apama-representationen till JSON ) och transporter (som hanterar sändning/mottagning till/från externa system, såsom JMS ). Anslutningar till externa system görs genom att komponera kedjor av codecs och en transport för att uppnå önskad topologi; dessa anslutningar definieras av en YAML- konfigurationsfil vid uppstart eller genom dynamisk hantering med de medföljande verktygen. Flera förbyggda plugins för populära teknologier (t.ex. R , MQTT , Kafka , HTTP , MatLab ) samt anslutningar till andra Software AG-produkter (t.ex. Universal Messaging, Terracotta , Cumulocity) levereras med Apama-installationer.

Uthållighet

Apama-processen är helt i minnet och stöder ett valfritt SQLite- baserat inbyggt persistenssystem. Dessutom stöder anslutnings-API:et tillförlitlig meddelandehantering till system som stöder det, såsom JMS. Slutligen är en förbyggd distribuerad minneslagringsplugin försedd med standardinstallationer för användning med lämpliga back-ends.

Visualisering

Apama tillhandahåller en inbyggd instrumentpanelsteknik utvecklad från Software AG Designer, såväl som inbyggda kopplingar till Software AG:s MashZone NextGen.

Se även