Apama (oprogramowanie)

APAMA
Deweloperzy Oprogramowanie AG
Wersja stabilna
10.5.3 / 26 czerwca 2020 ; 2 lata temu ( 2020-06-26 )
Napisane w C++ i Javę
System operacyjny Windowsa , Linuksa
Typ Złożone przetwarzanie zdarzeń , Przetwarzanie strumienia zdarzeń , IoT , Analiza danych
Licencja Komercyjne / Freemium
Strona internetowa apamacommunity .com

Apama to złożony mechanizm przetwarzania zdarzeń (CEP) i przetwarzania strumienia zdarzeń (ESP), opracowany przez firmę Software AG . Apama służy jako platforma do przeprowadzania analiz strumieniowych w zakresie danych wejściowych i aplikacji o dużej objętości/małych opóźnieniach, takich jak urządzenia IoT , giełdy finansowe, wykrywanie oszustw, media społecznościowe i podobne. Użytkownicy mogą definiować wzorce danych do nasłuchiwania i działania, które należy podjąć, gdy te wzorce zostaną znalezione, które są zdefiniowane w dostarczonym języku specyficznym dla domeny o nazwie Event Processing Language (EPL). Rdzeń silnika Apama jest napisany w C++ ; proces może również opcjonalnie zawierać maszynę JVM do interakcji z Java utworzonym przez użytkownika . Apama koncentruje się na wysokiej przepustowości, niskich opóźnieniach i wydajnej pamięci; używany zarówno w Intela , jak i mniejszych maszynach, takich jak Raspberry Pi , routery i inne urządzenia Edge /IoT. Na szczególną uwagę zasługuje w przestrzeni CEP jako jeden z najwcześniejszych projektów , wieloletni lider rynku i innowator wielu patentów.

Historia

Apama Ltd. została założona w 1999 roku przez dr Johna Batesa , dr Gilesa Nelsona i dr Mohamada Afshara, którzy poznali się podczas prowadzenia badań na Wydziale Informatyki i Technologii Uniwersytetu Cambridge .

W 2005 Apama Limited została przejęta przez Progress Software za 25 milionów dolarów.

W 2013 roku Apama została przejęta przez Software AG od Progress za nieujawnioną kwotę.

W 2016 roku została wydana wersja freemium , Apama Community Edition, wraz z obsługą forów i przestrzeni GitHub .

Przegląd

Język przetwarzania zdarzeń

Aplikacje dla Apama są tworzone w języku Event Processing Language (EPL). EPL zawiera funkcje językowe przeznaczone wyłącznie do programowania sterowanego zdarzeniami , w tym:

  • Zdarzenia — proste struktury danych zawierające pola i akcje
  • Monitory — podobnie jak klasy w innych językach, monitory zawierają detektory i akcje i są ładowane po wstrzyknięciu
  • Słuchacze - Wzorce deklaratywne określające interesujące warunki/kombinacje zdarzeń. Obsługiwane są operatory agregacji, czasowe i filtrujące
  • Akcje — funkcje imperatywne, zwykle uruchamiane przez detektory po aktywacji lub monitory po załadowaniu
  • Konteksty — podobnie jak wątki, monitory istnieją w kontekstach
  • Kanały - Mechanizm komunikacji między kontekstami a systemami zewnętrznymi
  • Strumienie — uporządkowane partycje zdarzeń z obsługą agregacji i zapytań podobnych do SQL

Składnia podobna do EPL C++/Java jest przeznaczona do tworzenia aplikacji CEP w zwięzły sposób w połączeniu z powyższymi funkcjami, których przykład można znaleźć poniżej:

  
     
     
     

 
  
      
           
    
 
      
                   
               
                 
            
        
    
 
        
        
         
    
 zdarzenie  MojeZdarzenie  {  liczba całkowita  mojaInt  ;  sekwencja  <  string  >  myListOfStrings  ;  wartość  logiczna moja wartość bool   ;  }  monitor  MyMonitor  {  akcja  onload  ()  {  spawn  worker  ()  do  context  (  "mySideThread"  );  }  action  worker  ()  {  na  wszystkich  MyEvent  (  myInt  >  10  )  jako  myCoassignedEvent  ->  MyEvent  (  myInt  >  20  )  lub  MyEvent  (  myBool  =  true  )  w ciągu  30.0  {  if  (  doWork  (  myCoassignedEvent  .  myListOfStrings  )  ! =  true  )  {  log  "Problem !"  ;  }  }  }  akcja  doWork  (  sequence  <string>  )  zwraca  wartość  logiczną  { //   wykonaj  pracę na liście  return  true  ;  }  } 

Zapytania Apamy

Apama Queries to alternatywny język do tworzenia reguł dla zdefiniowanych zestawów danych, takich jak odebrane dane z ostatnich pięciu minut lub odebrane ostatnie dwadzieścia zdarzeń, w automatycznie wielowątkowym środowisku, które skaluje się między maszynami. Zapytania Apama lepiej nadają się do monitorowania bardzo dużych zbiorów, takich jak transakcje bankowe. Zazwyczaj każdy podmiot (tj. posiadacz konta) będzie podzielony na partycje i przetwarzany niezależnie od reszty zbioru. Zapytania i monitory mogą komunikować się za pośrednictwem kanałów. Przykład poprzedniego scenariusza można znaleźć poniżej:

  
     
         
         
    
 
     
            
    
 
        
           
           
           
              
                
        
 zapytanie  FindSuspiciousWithdrawals  {  parametry  {  float  DURATION  ;  pływak  PRÓG  ;  }  wprowadza  {  Wypłata  ()  klucz  cardNumber  w ciągu  DURATION  ;  }  znaleźć  każdą  wypłatę  jako  w  gdzie  w  .  kwota  >  100  wybierz  ostatnią  (  z  .  identyfikator transakcji  )  jako  tid  wybierz  ostatnią  (  z  .  numer karty  )  jako  numer rachunku  mający  ostatnią  (  z  .  kwota  )  >  PRÓG  *  śr.  (  z  .  kwota  )  {  wyślij  SuspiciousTransaction  (  tid  ,  cid  )  do  SuspiciousTransactionManager  ;  }  } 

Projektant

Software AG Designer to IDE oparte na Eclipse ze specjalną obsługą tworzenia i wdrażania aplikacji Apama, które jest zawarte w standardowej instalacji. Funkcje obejmują pomoc w kodzie, zarządzanie pakietami, profilowanie, rozwój GUI i zarządzanie wdrażaniem.

Wtyczki

Apama umożliwia użytkownikom tworzenie wtyczek w celu rozszerzenia możliwości. Wtyczki te występują w dwóch formach, wtyczek EPL ( do dodawania funkcji do EPL ) i wtyczek łączności (do komunikacji ze światem zewnętrznym). Interfejsy API C++ i Java są dostępne dla obu typów wtyczek. Wtyczki łączności występują w dwóch formach: kodeków (które tłumaczą dane z jednego formatu na inny, na przykład wewnętrznej reprezentacji Apama na JSON ) i transportów (które obsługują wysyłanie/odbieranie do/z systemów zewnętrznych, takich jak JMS ). Połączenia z systemami zewnętrznymi są tworzone poprzez tworzenie łańcuchów kodeków i jednego transportu w celu uzyskania pożądanej topologii; te połączenia są definiowane przez YAML podczas uruchamiania lub poprzez dynamiczne zarządzanie za pomocą dostarczonych narzędzi. Kilka gotowych wtyczek dla popularnych technologii (np R , MQTT , Kafka , HTTP , MatLab ) oraz łączność z innymi produktami Software AG (np. Universal Messaging , Terracotta , Cumulocity ) jest dostarczanych z instalacjami Apama.

Trwałość

Proces Apama znajduje się w całości w pamięci i obsługuje opcjonalny wbudowany system trwałości oparty na SQLite . Ponadto interfejs API łączności obsługuje niezawodne przesyłanie komunikatów do obsługujących go systemów, takich jak JMS. Wreszcie, wstępnie zbudowana wtyczka magazynu rozproszonej pamięci jest dostarczana ze standardowymi instalacjami do użytku z odpowiednimi back-endami.

Wyobrażanie sobie

Apama zapewnia wbudowaną technologię pulpitów nawigacyjnych opracowaną w oprogramowaniu Software AG Designer, a także natywne połączenia z MashZone NextGen firmy Software AG.

Zobacz też