Commit 340687bb authored by MartinFIT's avatar MartinFIT

Text - Diagrams, Implementation/Architecture moved from Design chapter

parent 59762cce
<mxfile userAgent="Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" version="8.5.6" editor="www.draw.io" type="device"><diagram id="74c8afff-1876-6160-3a4d-651a8aa7eedc" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
<mxfile userAgent="Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" version="8.5.6" editor="www.draw.io" type="device"><diagram id="83e1676f-586c-a829-6a2b-0e82f5bf42a6" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
......@@ -435,7 +435,7 @@ Distribuovaný souborový systém HDFS patří pod projekt \texttt{Apache Hadoop
\centering
\includegraphics[width=15cm]{template-fig/HDFSArchitecture.pdf}
\caption{Architektura HDFS \cite{apacheHDFSGuide} - datové uzly jsou uspořádány do \texttt{racků}, které se nachází v jedné lokalitě, což zajišťuje rychlejší propojení uzlů. Bloky jsou replikovány mezi odlišné uzly.}
\label{FIG_SystemArchitecture}
\label{FIG_HDFSArchitecture}
\end{figure}
\noindent HDFS je virtuální souborový systém vybudovaný nad běžnými souborovými systémy jednotlivých uzlů. Řeší problém nalezení úložiště a přístupu k datům, nikoliv fyzické uložení na uzlu. Byl navržen pro sekvenční přístup k souborům, nikoliv náhodný \cite{hadoopPdi}.
......@@ -473,27 +473,12 @@ Důležitým požadavkem je, aby úložiště umožňovalo přidávání podpory
%TODO: Vice Kafka front? - Vice konzumentu?
\section{Architektura} \label{archSection}
Tato sekce se zabývá architekturou systému, jak bude repositář implementován. Diagram tříd \ref{FIG_SystemArchitecture} zobrazuje z~důvodu přehlednosti pouze klíčová rozhraní a~třídy systému. Nejsou zde vyznačeny všechny implementační třídy a~všechny vazby závislosti.
Tok začíná ve třídě \texttt{DistributedRepository}, která zapouzdřuje konzumenta Kafka front a~správce všech handlerů. Konzument přijme zprávu z~fronty, sestaví objekt příkazu na základě typu operace a~typu dat, a~vybere podle něj korespondující handler ze správce handlerů. Handler potom zpracuje příkaz. V~rámci zpracování může být odeslána asynchronní odpověď klientovi, pokud klient nastavil při odeslání zprávy parametry \texttt{awaitsResponse} a~\texttt{responseTopic}. Odpověď může obsahovat základní informace jako například kód a~status, a~také ID, aby si klient dokázal spárovat zpracované zprávy.
Rozšíření v~podobě podpory nových druhů digitálních forenzních dat je velmi jednoduché. Spočívá v~rozšíření výčtů \texttt{Command}, \texttt{Operation} a~\texttt{DataType}. Dále je potřeba implementovat rozhraní \texttt{IConsumerHandler}, které kompletně řídí zpracování příkazu.
Pro nový druh dat a~potřeby komunikace s~úložištěm nebo databází je nutné přidat implementaci rozhraní \texttt{IStore} a/nebo \texttt{ILoad}.
Nová třída handleru musí být přidána do správce handlerů společně s~typem příkazu.
Díky tomu že jsou typ operace a~typ dat výčty, nemůže klient poslat libovolný dotaz na úplně neznámá data. Příkaz je ale určen kombinací těchto dvou výčtů, a~proto i~tak lze odeslat nepodporovaný příkaz, který může skončit chybou.
Všechny výše zmíněné technologie, tzn. Kafka, Cassandra, MongoDB, i~HDFS, jsou distribuované, je možné přidávat další uzly pro navýšení výkonu, a~všechny tak počítají s~rozšiřitelností do budoucna.
Konfigurace parametrů systému a~jednotlivých technologií bude možná pomocí specifických souborů s~příponou \texttt{.properties} skládajících se z~dvojic klíč-hodnota.
\begin{figure}[!h]
\centering
\includegraphics[width=15cm]{template-fig/Prototype_ClassDiagram.pdf}
\caption{Diagram tříd systému.}
\label{FIG_SystemArchitecture}
\end{figure}
%\begin{figure}[!h]
% \centering
% \includegraphics[width=15cm]{template-fig/Prototype_ClassDiagram.pdf}
% \caption{Diagram tříd systému.}
% \label{FIG_SystemArchitecture}
%\end{figure}
\chapter{Implementace prototypu} \label{chapterPrototype}
Prototyp distribuovaného repositáře byl implementován za účelem ověření základních aspektů návrhu, k~ověření komunikace mezi klientem a~systémem, zpracování příkazů, a~také výkonu.
......@@ -556,7 +541,7 @@ Z~výše uvedené hardwarové konfigurace vyplývá, že nebylo využito maximá
\section{Rozhraní pro dotazování dat}
\section{Moduly, knihovny a frameworky}
\section{Dekompozice do modulů}
% TODO: \section{Architektura}
Repositář je komplexní distribuovaný systém, který je postaven na frameworku Spring, sestávající z několika modulů a knihoven. V této sekci je uvedeno, jak byl systém dekomponován do modulů a jaké knihovny byly zvoleny. Pro správu závislostí a sestavení aplikace byl zvolen nástroj \texttt{Maven}.
......@@ -600,7 +585,7 @@ Knihovna reflektuje zapouzdření, které spočívá ve vložení protokolové d
\centering
\includegraphics[width=14.8cm]{template-fig/Pcap4JExample.pdf}
\caption{Schéma znázorňující výše uvedený příklad pro manipulaci s pakety \cite{gitPcap4J}.}
\label{FIG_Architecture}
\label{FIG_Pcap4JExample}
\end{figure}
\section{Úložiště}
......@@ -615,7 +600,7 @@ Distribuovaný repositář komunikuje s databází asynchronně z důvodu co nej
\centering
\includegraphics[width=15cm]{template-fig/CassandraAsyncQueries.pdf}
\caption{Sekvenční diagram znázorňující jednotlivá volání metod při vykonávání asynchronního dotazu do databáze Cassandra \cite{asyncQueriesCassandra}.}
\label{FIG_Architecture}
\label{FIG_CassandraAsyncQueries}
\end{figure}
\noindent Kromě zaslání dotazu do databáze, ovladač registruje interní obsluhu v podobě objektu \texttt{ResponseHandler}, který zpracuje odpověď dotazu, až bude k dispozici. Po zaregistrování obsluhy je předáno řízení vykonávání volajícímu programu společně s objektem třídy \texttt{ResultSetFuture}, pomocí kterého klient dokáže získat výsledek dotazu a dále s ním pracovat.
......@@ -640,7 +625,7 @@ MongoDB slouží k uchování registru metadat. Důvody k zavedení podsystému
\item \texttt{uri} - Pokud jsou korespondující forenzní data uložena v HDFS, je vyplněn tento atribut cestou k datům v HDFS.
\item \texttt{databaseType} - Určuje typ úložiště, tzn. povolenými hodnotami jsou: \texttt{Cassandra} a \texttt{HDFS}.
\item \texttt{databaseType} - Určuje typ úložiště, povolenými hodnotami jsou: \texttt{Cassandra} a \texttt{HDFS}.
\item \texttt{timestamp} - Časové razítko paketu.
......@@ -730,6 +715,41 @@ Implementace reaktivního rozhraní je založena na výše zmíněné specifikac
\subsection{HDFS}
\section{Architektura systému} \label{architecture}
Tato sekce se zabývá architekturou systému. Následující dva diagramy tříd \ref{FIG_CommunicationClassDiagram} a \ref{FIG_DRCoreClassDiagram} zobrazují klíčové třídy, metody a závislosti. Z~důvodu přehlednosti obsahují pouze důležitá rozhraní a~třídy systému. Nejsou zde vyznačeny všechny implementační třídy a~všechny vazby závislosti.
Diagram \ref{FIG_CommunicationClassDiagram} představuje komunikační jádro systému z pohledu distribuovaného repositáře. Repositář obsahuje třídu \texttt{DistributedRepositoryConsumer} obsluhující komunikaci s Kafkou. Má také referenci na správce všech obslužných akcí pro příkazy - \texttt{handlerManager}. Metoda \texttt{listen} je zavolána při přečtení zprávy požadavku z fronty. Konzument přijme zprávu z~fronty, zjistí typ příkazu a~vybere podle něj korespondující handler ze správce handlerů. Handler potom zpracuje příkaz. V~rámci zpracování může být odeslána asynchronní odpověď klientovi, pokud klient nastavil při odeslání zprávy parametry \texttt{awaitsResponse} a~\texttt{responseTopic}. Odpověď bude obsahovat základní informace jako například kód a~status, a~také ID, aby si klient dokázal spárovat zpracované zprávy. Více informací ohledně odpovědí je uvedeno v \ref{designCommunication}.
Všechny použité technologie, tzn. Kafka, Cassandra, MongoDB, i~HDFS, jsou distribuované, je možné přidávat další výpočetní uzly pro navýšení výkonu, a~všechny tak počítají s~rozšiřitelností do budoucna.
Konfigurace parametrů systému a~jednotlivých technologií bude možná pomocí specifických souborů s~příponou \texttt{.properties} skládajících se z~dvojic klíč-hodnota.
\begin{figure}[!h]
\centering
\includegraphics[width=15cm]{template-fig/CommunicationClassDiagram.pdf}
\caption{Diagram tříd komunikace systému.}
\label{FIG_CommunicationClassDiagram}
\end{figure}
\begin{figure}[!h]
\centering
\includegraphics[width=15cm]{template-fig/DRCoreClassDiagram.pdf}
\caption{Diagram tříd jádra systému.}
\label{FIG_DRCoreClassDiagram}
\end{figure}
\subsection{Rozšíření pro nový typ forenzních dat}
Rozšíření v~podobě podpory nových druhů digitálních forenzních dat je velmi jednoduché. Spočívá v~rozšíření výčtů \texttt{Command}, \texttt{Operation} a~\texttt{DataType}. Dále je potřeba implementovat rozhraní \texttt{IConsumerHandler}, které kompletně řídí zpracování příkazu.
Pro nový druh dat a~potřeby komunikace s~úložištěm nebo databází je nutné přidat implementaci rozhraní \texttt{IStore} a/nebo \texttt{ILoad}.
Nová třída handleru musí být přidána do správce handlerů společně s~typem příkazu.
Díky tomu že jsou typ operace a~typ dat výčty, nemůže klient poslat libovolný dotaz na úplně neznámá data. Příkaz je ale určen kombinací těchto dvou výčtů, a~proto i~tak lze odeslat nepodporovaný příkaz, který může skončit chybou.
\section{Logování}
\section{Zpracování chyb}
......
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment