\section{Modélisation du Système} \subsection{Architecture Générale} \subsubsection{Description du Système} Le système modélisé représente une base de données distribuée composée de: \begin{itemize} \item \textbf{Un coordinateur central}: Point d'entrée unique pour toutes les requêtes externes \item \textbf{$N$ serveurs de base de données}: Traitent les requêtes complexes nécessitant un accès aux données \item \textbf{Routage probabiliste}: Distribution des requêtes selon des probabilités configurables \item \textbf{Boucle de feedback}: Les requêtes peuvent faire plusieurs passages par le coordinateur \end{itemize} \subsubsection{Diagramme d'Architecture} \begin{figure}[H] \centering \begin{tikzpicture}[ node distance=2cm and 3cm, queue/.style={rectangle, draw, minimum width=2cm, minimum height=1cm, text centered}, cloud/.style={ellipse, draw, minimum width=1.5cm, minimum height=0.8cm}, arrow/.style={->, >=stealth, thick} ] % Arrivées externes \node[cloud] (external) {Requêtes\\$\lambda$}; % Coordinateur \node[queue, right=of external, fill=blue!20] (coord) {Coordinateur\\$\mu_c$}; % Sortie \node[cloud, right=4cm of coord] (exit) {Sortie}; % Serveurs \node[queue, below=of coord, fill=green!20, xshift=-1cm] (server1) {Serveur 1\\$\mu_1$}; \node[queue, right=1cm of server1, fill=green!20] (server2) {Serveur 2\\$\mu_2$}; \node[right=0.5cm of server2] (dots) {$\cdots$}; \node[queue, right=0.5cm of dots, fill=green!20] (serverN) {Serveur $N$\\$\mu_N$}; % Flèches \draw[arrow] (external) -- (coord) node[midway, above] {$\lambda$}; \draw[arrow] (coord) -- (exit) node[midway, above] {$p$}; \draw[arrow] (coord) to[bend left=20] node[midway, left] {$q_1$} (server1); \draw[arrow] (coord) to[bend left=10] node[midway, above] {$q_2$} (server2); \draw[arrow] (coord) to[bend left=10] node[midway, above] {$q_N$} (serverN); \draw[arrow] (server1) to[bend left=20] (coord); \draw[arrow] (server2) to[bend left=10] (coord); \draw[arrow] (serverN) to[bend left=10] (coord); \end{tikzpicture} \caption{Architecture du réseau de files d'attente modélisant la base de données distribuée} \label{fig:architecture} \end{figure} \subsection{Hypothèses du Modèle} \subsubsection{Hypothèses Structurelles} \begin{enumerate} \item \textbf{Topologie fixe}: Le nombre de serveurs $N$ est constant \item \textbf{File unique par station}: Chaque entité (coordinateur, serveurs) possède une file d'attente FIFO \item \textbf{Capacité illimitée}: Aucune limite sur la longueur des files \item \textbf{Routage statique}: Les probabilités de routage $p$ et $q_i$ sont fixes \item \textbf{Pas de pannes}: Le système fonctionne de manière continue \end{enumerate} \subsubsection{Hypothèses Stochastiques} \begin{enumerate} \item \textbf{Arrivées Poissoniennes}: Les requêtes externes arrivent selon un processus de Poisson de taux $\lambda$ \item \textbf{Temps de service exponentiels}: Les durées de traitement suivent des lois exponentielles \begin{itemize} \item Coordinateur: $S_c \sim \text{Exp}(\mu_c)$ \item Serveur $i$: $S_i \sim \text{Exp}(\mu_i)$ \end{itemize} \item \textbf{Indépendance}: Les temps entre arrivées et les temps de service sont indépendants \item \textbf{Pas de mémoire}: Propriété markovienne des distributions exponentielles \end{enumerate} \subsection{Paramètres du Modèle} \subsubsection{Paramètres Externes} \begin{table}[H] \centering \caption{Paramètres externes du système} \label{tab:params-externes} \begin{tabular}{lll} \toprule \textbf{Paramètre} & \textbf{Notation} & \textbf{Description} \\ \midrule Taux d'arrivée & $\lambda$ & Requêtes par unité de temps \\ \bottomrule \end{tabular} \end{table} \subsubsection{Paramètres du Coordinateur} \begin{table}[H] \centering \caption{Paramètres du coordinateur} \label{tab:params-coord} \begin{tabular}{lll} \toprule \textbf{Paramètre} & \textbf{Notation} & \textbf{Description} \\ \midrule Taux de service & $\mu_c$ & Requêtes traitées par unité de temps \\ Probabilité de sortie & $p$ & Prob. de terminer la requête \\ \bottomrule \end{tabular} \end{table} \subsubsection{Paramètres des Serveurs} \begin{table}[H] \centering \caption{Paramètres des serveurs} \label{tab:params-serveurs} \begin{tabular}{lll} \toprule \textbf{Paramètre} & \textbf{Notation} & \textbf{Description} \\ \midrule Nombre de serveurs & $N$ & Cardinalité de l'ensemble des serveurs \\ Taux de service serveur $i$ & $\mu_i$ & Requêtes traitées par unité de temps \\ Prob. routage serveur $i$ & $q_i$ & Prob. d'envoi vers le serveur $i$ \\ \bottomrule \end{tabular} \end{table} \subsubsection{Contraintes} Les paramètres doivent satisfaire: \begin{align} \lambda &> 0 \\ \mu_c, \mu_i &> 0, \quad \forall i \in \{1, \ldots, N\} \\ p, q_i &\in [0, 1], \quad \forall i \in \{1, \ldots, N\} \\ p + \sum_{i=1}^{N} q_i &= 1 \quad \text{(Conservation des probabilités)} \end{align} \subsection{Métriques de Performance} \subsubsection{Métriques par Station} Pour chaque station (coordinateur et serveurs): \begin{table}[H] \centering \caption{Métriques de performance par station} \label{tab:metriques-station} \begin{tabular}{llp{6cm}} \toprule \textbf{Métrique} & \textbf{Notation} & \textbf{Description} \\ \midrule Utilisation & $\rho$ & Fraction du temps où le serveur est occupé \\ Nombre moyen & $L$ & Nombre moyen de requêtes dans la station (attente + service) \\ Nombre en attente & $L_q$ & Nombre moyen de requêtes en attente \\ Temps moyen & $W$ & Temps moyen total dans la station \\ Temps d'attente & $W_q$ & Temps moyen passé en attente \\ Temps de service & $W_s$ & Temps moyen de service \\ \bottomrule \end{tabular} \end{table} \subsubsection{Métriques Globales} Pour le système complet: \begin{table}[H] \centering \caption{Métriques de performance globales} \label{tab:metriques-globales} \begin{tabular}{llp{6cm}} \toprule \textbf{Métrique} & \textbf{Notation} & \textbf{Description} \\ \midrule Clients totaux & $L_{\text{total}}$ & Somme des clients dans toutes les stations \\ Temps total & $W_{\text{total}}$ & Temps moyen total dans le système \\ Débit & $\lambda_{\text{sortie}}$ & Taux de requêtes terminées \\ Stabilité & Booléen & Système stable si $\rho_i < 1$ partout \\ \bottomrule \end{tabular} \end{table} \subsection{Conditions de Stabilité} \subsubsection{Critère de Stabilité} Le système est stable si et seulement si toutes les stations sont stables: \begin{theorem}[Stabilité du Réseau] Le réseau est stable $\Leftrightarrow$ $\rho_i < 1$ pour toute station $i$, où: \begin{align} \rho_{\text{coord}} &= \frac{\lambda_{\text{coord}}}{\mu_c} = \frac{\lambda}{p \mu_c} \\ \rho_i &= \frac{\lambda_i}{\mu_i} = \frac{\lambda q_i}{p \mu_i}, \quad i = 1, \ldots, N \end{align} \end{theorem} \subsubsection{Implications Pratiques} Pour garantir la stabilité: \begin{enumerate} \item \textbf{Coordinateur}: $\mu_c > \frac{\lambda}{p}$ \item \textbf{Serveur $i$}: $\mu_i > \frac{\lambda q_i}{p}$ \item \textbf{Impact de $p$}: Plus $p$ est petit, plus les requêtes circulent, augmentant la charge \item \textbf{Équilibrage}: Les $q_i$ doivent être choisis pour équilibrer la charge entre serveurs \end{enumerate} \subsection{Formules Analytiques} En appliquant le théorème de Jackson (équations \eqref{eq:L} et \eqref{eq:W}): \subsubsection{Coordinateur} \begin{align} \lambda_{\text{coord}} &= \frac{\lambda}{p} \\ \rho_{\text{coord}} &= \frac{\lambda}{p \mu_c} \\ L_{\text{coord}} &= \frac{\rho_{\text{coord}}}{1 - \rho_{\text{coord}}} \\ W_{\text{coord}} &= \frac{1}{\mu_c - \lambda/p} \end{align} \subsubsection{Serveur $i$} \begin{align} \lambda_i &= \frac{\lambda q_i}{p} \\ \rho_i &= \frac{\lambda q_i}{p \mu_i} \\ L_i &= \frac{\rho_i}{1 - \rho_i} \\ W_i &= \frac{1}{\mu_i - \lambda q_i / p} \end{align} \subsubsection{Système Global} \begin{align} L_{\text{total}} &= L_{\text{coord}} + \sum_{i=1}^{N} L_i \\ W_{\text{total}} &= \frac{L_{\text{total}}}{\lambda} \end{align} Ces formules seront utilisées pour valider les résultats de simulation.