Freigeben über


Implementieren eines verteilten Systems

Eine Möglichkeit zum Implementieren von Software in einem verteilten System ist die Verwendung von Rohnetzwerkunterstützung. Dieser Ansatz umfasst Sockets, Named Pipes oder HTTP-POSTs, GETs usw. Alle diese Modelle zwingen den Entwickler, auf die eine oder andere Weise Programmiergrundtypen auf niedriger Ebene zu verwenden, die den Entwickler zwingen, sich mit der Darstellung von Netzwerkdaten (Network Data Representation, NDR), dem Packen von Daten, dem Verwalten von Netzwerkdatenverkehr und -fehlerbedingungen, dem Schutz der Datenintegrität und Verschlüsselung usw. zu befassen.

RPC bietet ein Programmiermodell, bei dem der Entwickler die Präzise Kontrolle über die Netzwerkinteraktion zwischen Client und Server über eine umfassende API behält und gleichzeitig Entwicklern die Details und Belastungen erspart, die ein verteiltes System tendenziell mit sich bringt.

Betrachten Sie beispielsweise den Aufwand, der mit verschiedenen Ansätzen zum Schutz der Integrität und privatsphäre des Nachrichtenaustauschs in einem verteilten System verbunden ist. Wenn Sie die Netzwerksicherheit für den Paketaustausch in Betracht ziehen, sind einige Schutzmechanismen schwächer, andere stärker. Es gibt keine echte Netzwerksicherheit, nur verschiedene paketbasierte Sicherheitsmechanismen; Sicherheit, die den Aufrufer identifiziert (die tendenziell auch schwach ist, da Paketinhalte häufig während der Übertragung geändert werden können), Sicherheit, die die Integrität des Pakets schützt, ohne seine Privatsphäre zu schützen (verschiedene Signaturen und Hashes), und Sicherheit zum Schutz der Privatsphäre des Nachrichtenaustauschs (verschiedene Verschlüsselungsmechanismen).

Eine weitere Belastung für die Implementierung eines sicheren verteilten Systems sind die Algorithmen, die zum Implementieren von Sicherheitsgrundtypen wie Verschlüsselung, Signatur, Authentifizierung usw. erforderlich sind. Ein Entwickler kann diese Algorithmen implementieren, aber dies ist schwierig, fehleranfällig und sogar riskant, da die resultierenden Algorithmen häufig subtile Sicherheitslücken aufweisen. Alternativ kann ein Entwickler einen verfügbaren Sicherheitsanbieter verwenden, um Schutz für die Netzwerkinteraktionen innerhalb eines verteilten Systems zu implementieren.

Mithilfe von RPC lassen sich diese beiden Belastungen sehr einfach lösen. Ein Entwickler muss RPC lediglich mitteilen, welches Sicherheitspaket verwendet werden soll und welcher Sicherheitsschutz auf den Nachrichtenaustausch angewendet werden soll (in Bezug auf Authentifizierung, Verschlüsselung, gegenseitige Authentifizierung, Anruferidentitätsnachverfolgung usw.). RPC kümmert sich auf effiziente Weise um alle Details im Hintergrund, bietet dem Entwickler jedoch die volle Kontrolle darüber, wie die Daten geschützt werden.