1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dempe-jetty

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 5.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 14.03.2025 20:03 eeb1f3e

Кэтти

Базирующаяся на Netty платформа для разработки серверной части NIO MVC с возможностями мониторинга производительности, анализа логов и динамического расширения.

Модуль ketty-srv

Высокопроизводительный фреймворк, базирующийся на Netty, для разработки MVC приложений NIO с поддержкой расширяемых пользовательских протоколов.

Протоколы

  • HTTP
  • Кэтти (собственный приватный протокол)

MVC на основе аннотаций

  • @Inject — внедрение зависимости
  • @Path — поддержка маршрутов
  • @Param — автоматическое внедрение значений параметров

Поддержка ограничения частоты вызова методов RateLimiter

@Action
public class SimpleAction {

    @Inject
    private UserService userService;

    // Разрешено до 100 вызовов в секунду, свыше 100 вызовы будут отклонены,
    @Rate(value=100)
    @Interceptor(id = "echoInterceptor")
    @Path
    public User getUserByUid(@Param String uid) {
        return userService.getUserByUid(uid);
    }
}

Пример использования интерцептора

@Around
public class EchoInterceptor extends BaseInterceptor {

    private final static Logger LOGGER = LoggerFactory.getLogger(EchoInterceptor.class);

    @Override
    public boolean before() {
        LOGGER.info("==============EchoInterceptor before=========");
        return true;
    }

    @Override
    public boolean after() {
        LOGGER.info("==============EchoInterceptor after=========");
        return true;
    }
}

Пример запуска KettyServer

// Пример запуска сервера NIO MVC
new KettyServer.Builder()
                .tcpNoDelay(true)
                .soKeepAlive(true)
                .setHttpProtocol()
                .host("localhost")
                .port(8888)
                .build()
                .start();
```// Пример тестового клиента Jetty
```java
public class JettClientTest {
	public static ClientSender clientSender = new ClientSender("localhost", 8888);
	public static void main(String[] args) throws Exception {
		KettyRequest request = new KettyRequest();
		request.setUri("/simpleAction/getUserByUid");
		JSONObject params = new JSONObject();
		params.put("uid", "12345677");
		request.setParameter(params);
		String result = clientSender.sendAndWait(request);
		System.out.println("Результат: " + result);
	}
}

Пример запуска HttpServer

// Пример запуска сервера NIO MVC
public class SimpleServer {
    public static void main(String[] args) throws Exception {
         new KettyServer.Builder()
                        .setKettyProtocol()
                        .port(8888)
                        .build()
                        .start();
    }
}

TODO

  • Поддержка расширяемости с помощью пользовательских протоколов
  • Безопасность и верификация
  • Оптимизация производительности
  • Реализация протокола WebSocket

модуль ketty-client

KettyClient высоконагруженный NIO-клиент

Высокое соответствие требованиям доступности

Поддерживает несколько узлов, автоматически удаляет недоступные узлы

Клиентская пул

Поддерживает пулинг соединений

Автоматическое восстановление соединения при разрыве

Автоматическая поддержка heartbeat

модуль ketty-codec

Кодирование и декодирование

KettyRequest

шапка тело
размер длина URI ID сообщения paramsMap тело
short(2 байта) short(2 байта) строка int(4 байта) словарь JSONString
#### KettyResponse
Шапка Тело
Размер Длина ID сообщения (идентификатор сообщения) Код ответа (код возврата сообщения) Тело
short(2 байта) short(2 байта) int(4 байта) short(2 байта) JSONString

модуль ketty-router

Модуль прокси-сервера, предоставляющий функцию маршрутизации

модуль ketty-monitor

Мониторинг производительности
Уведомления

модуль ketty-analysis

Статистический анализ API
Интеллектуальное рекомендование

ЧИТАТЬ ДАЛЕЕ


Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dempe-jetty.git
git@api.gitlife.ru:oschina-mirror/dempe-jetty.git
oschina-mirror
dempe-jetty
dempe-jetty
master