Дистанционное управление

Очень распространенный механизм для клиент-серверных приложений предоставляется через RPC, пакет дистанционного управления. RPC был разработан Sun Microsystems, и эта система представляет собой набор инструментов и библиотечных функций. Ключевые приложения, созданные на базе RPC - это NFS (Network Filesystem) и NIS (Network Information System), которые будут рассмотрены в следующих главах.

RPC-сервер состоит из системы процедур, к которым может обратиться клиент, отправляя RPC-запрос к серверу вместе с параметрами процедуры. Сервер вызывает указанную процедуру от имени клиента и возвращает результат, если он есть. Для обеспечения машинонезависимости все данные, обмениваемые между клиентом и сервером, преобразуются к так называемому Внешнему Представлению Данных (XDR) отправителем и обратно к машинно-зависимому формату получателем.

Иногда изменения в RPC-приложении вносят несовместимые изменения в интерфейс вызова процедур. Чтобы избежать конфликтов, RPC-программы имеют номера версий, начиная обычно с 1. С каждой новой версией номер увеличивается. Часто сервер может поддерживать несколько версий одновременно, позволяя клиентам выбирать, какую версию они хотят использовать.

Сетевое взаимодействие между RPC-серверами и клиентами особенное. RPC-сервер предоставляет один или несколько наборов процедур; каждый набор называется программой и идентифицируется уникальным номером программы. В TCP/IP-сетях перед разработчиками RPC стояла задача отображения номеров программ на обобщенные сетевые услуги. Они решили, что каждый сервер будет предоставлять как TCP, так и UDP-порт для каждой программы и версии.

Для обеспечения динамической конфигурации, RPC-приложения выбирают любой доступный порт и регистрируют его у так называемого portmapper — службы-брокера для всех RPC-серверов на машине. Этот метод имеет недостаток в том, что он создает узкое место, похожее на демон inetd. Когда portmapper завершает работу, вся информация о портах RPC теряется. Это обычно означает, что все RPC-серверы необходимо перезапустить вручную или перезагрузить всю систему.

На Linux, portmapper называется rpc.portmap и обычно расположен в /usr/sbin. Кроме того, чтобы убедиться, что он запущен из rc.inet2, portmapper не требует дополнительной настройки.

Преимущества и недостатки RPC

Дистанционное управление с использованием RPC имеет ряд преимуществ, которые делают эту технологию популярной в мире программирования. Однако, как и любая технология, RPC имеет свои ограничения.

Преимущества RPC:

Недостатки RPC:

Заключение:

RPC является мощным инструментом для создания распределенных приложений, но требует тщательного проектирования и понимания возможных проблем. При правильном использовании, RPC может значительно упростить разработку и масштабирование систем, но разработчикам следует учитывать потенциальные сложности и ограничения данной технологии.