Проект Penguin
Основы простого распределённого фреймворка на базе Spring и Netty
Использование:
Простой прямой способ:
Серверная сторона: В конфигурационном файле Spring необходимо настроить RPC-сервер. Обратите внимание, что порт не должен быть занят другими приложениями:
Клиентская сторона: Сначала нужно создать класс вызова для клиентской стороны, который наследуется от RpcClient. Затем необходимо указать соответствующее имя сервиса, имя метода и параметры для вызова серверной стороны:
public class RemoteClient1 extends RpcClient {
public String test1(String name){
String serviceName = "aService";
String methodName = "testMethod1";
String param1 = "name";
return (String)this.execSync(serviceName,methodName,param1);
}
public String test1(String name){
String serviceName = "aService";
String methodName = "testMethod2";
String param1 = "name";
String param2 = "password";
return (String)this.execSync(serviceName,methodName,param1,param2);
}
}
Далее в конфигурационном файле Spring нужно выполнить настройку. Необходимо указать IP-адрес и порт вызываемого сервера:
127.0.0.1:7001 127.0.0.1:7002Вызов через центр регистрации:
Центр регистрации registerServer: Во-первых, найдите проект penguin с именем registry. В конфигурационном файле приложения application-config.xml можно установить желаемый номер порта, например:
<bean class="penguin.spring.PenguinContextListener"/>
<bean id="springContextHandler" class="penguin.spring.SpringContextHandler"/>
<bean class="penguin.rpc.RpcServer" init-method="init">
<property name="port" value="7000"/>
<property name="rpcHandler" ref="springContextHandler"/>
</bean>
Затем запустите проект penguin с именем registry в Tomcat.
Серверная сторона: На стороне сервера добавьте следующую конфигурацию. В настоящее время центр регистрации поддерживает только одну точку, то есть один компьютер. Позже он будет перестроен для поддержки нескольких центров регистрации на разных компьютерах для обеспечения лучшей доступности:
127.0.0.1:7000Клиентская сторона: Код остаётся таким же, как и при прямом подключении. Строка param1 = "name";
Строка param2 = "password";
return (String)this.execSync(serviceName,methodName,param1,param2);
Примечание:
После того как в конфигурационном файле клиента будет установлено желаемое имя вызываемого проекта, фреймворк автоматически подключится к регистрационному центру после запуска проекта и получит список IP-адресов этого проекта в регистрационном центре.
Клиент после получения списка адресов удалённого проекта будет пытаться подключиться к каждому из них по очереди до тех пор, пока не установит соединение с одним из них.
После успешного соединения клиента и сервера можно выполнять удалённые вызовы методов. Метод описан выше.
Между сервером и регистрационным центром будет происходить обмен данными о состоянии («пульс»). Если «пульс» не поступит в течение определённого времени, регистрационный центр будет считать сервер вышедшим из строя и удалит его адрес из списка.
Между клиентом и регистрационным центром также будет происходить обмен данными о состоянии. При каждом обмене регистрационным центр будет предоставлять клиенту обновлённый список адресов серверов, чтобы клиент мог продолжать доступ к ним.
Выход из строя регистрационного центра не повлияет на работу проекта. Клиент сохранит последний список адресов серверов и продолжит общение с ними до восстановления регистрационного центра.
Дальнейшие планы разработки:
Добавить страницу отображения информации о регистрационном центре, где будут отображаться текущие зарегистрированные серверы и информация о проектах каждого клиента, которые необходимо получить от серверов.
Добавить информацию о сеансах, рассматривая каждый вызов цепочки как отдельный сеанс. В этом сеансе можно сохранять аналогичную информацию о сессии для использования каждым узлом.
Добавить центр мониторинга, который сможет собирать и отображать информацию обо всех цепочках вызовов методов и времени их выполнения.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )