Сервис кэширования данных - JMemcached

Категория: Java Standart Edition
- 16 уроков
- Длительность: 6:38:15
- Исходный код
- Обзор результата
- UI макеты
- 3286 просмотров
Описание курса
Данный курс предназначен для закрепления основ Java Standart Edition на примере разработки сервиса кэширования данных JMemcached, который является упрощенным Java аналогом популярного решения memcached (http://www.memcached.org/)
Сервис JMemcached является многопоточным автономным сервисом, позволяющим взаимодействовать по сети со всеми его клиентами. Данный сервис хранит данные на основе хеш карты и позволяется выполнять операции добавления, получения и удаления любого значения по ключу, а также операции очистки всей карты. При добавлении значения по ключу возможно указать время жизни данного объекта и по истечении данного времени объект будет автоматически удален из карты хранения данных.
За исключением теоретического описания разрабатываемого протокола сетевого взаимодействия, на всех уроках данного курса практически разрабатывается данное приложение, т.е. в данном курсе нет теоретических лекций, а на протяжении всех уроков данного курса разрабатывается приложение начиная с постановке задачи и заканчивая сдачей проекта заказчику.
В качестве среды разработки используется среда Intellij IDEA, конечный продукт запускается как автономный сервис в операционной системе Windows как обычная служба.
Основной цель данного курса является практически закрепить знания по основам JSE, полученные в рамках курса Основы Java SE - HTTP сервер и продемонстрировать процесс разработке приложения на реальном проекте, последовательно проходя все этапы разработки.
После успешного прохождения данного курса, для развития в направлении web и enterprise рекомендуем курс Web приложение - IShop.
Для получения дополнительной информации по теме данного курса, рекомендуем следующие источники информации:
В рамках данного курса Вы научитесь
- Разрабатывать сетевой протокол для взаимодействия по сети;
- Создавать несколько модулей для Вашего проекта;
- Использовать интерфейсы для создания слабых связей в приложении;
- Создавать Unit тесты для всех модулей Вашего проекта;
- Запускать java приложение как автономный Windows сервис.
Для успешного прохождения курса необходимо
- Знание Java core: (Classes, IO, Collections, Exceptions, Sockets) (Для получения этих знаний рекомендуем курс Основы Java SE - HTTP сервер);
План курса
-
1Постановка задачи
Длительность урока: 16:13
- Описание проекта
- Детали проекта
- Формализованное описание Jmemcached-client: команды и статусы команд
- Пример использования jmemcached в отдельном Java проекте
- Схема взаимодействия компонентов
- Архитектура Jmemcached server
- Этапы разработки проекта
-
2Описание протокола
Длительность урока: 19:04
- Определение сетевого протокола
- Описание протокола
- Формат пакета запроса
- Назначение флагов и длина пакета запроса
- Формат пакета ответа
-
3Модуль jmemcached-common, модели и основные интерфейсы
Длительность урока: 29:20
- Добавление плагинов и зависимостей в pom.xml
- Создание классов исключений для проекта
- Перечисления Version, Command и Status
- Модели запроса и ответа: Request, Response
- Интерфейс конвертера запросов RequestConverter
- Интерфейс конвертера ответов ResponseConverter
- Интерфейс сериализатора объектов ObjectSerializer
-
4Реализация конвертеров и сериализатора
Длительность урока: 31:59
- Реализация сериализатора DefaultObjectSerializer
- Реализация конвертера ответов DefaultResponseConverter
- Реализация конвертера запросов DefaultRequestConverter
-
5Unit тесты для моделей и сериализатора
Длительность урока: 33:10
- Unit тесты для перечислений Version, Command, Status
- Unit тесты для моделей запроса и ответа: Request, Response
- Unit тесты для сериализатора DefaultObjectSerializer
-
6Unit Тесты для конвертеров
Длительность урока: 32:42
- Unit тесты для абстрактного конвертера AbstractPackageConverter
- Unit тесты для конвертера запросов DefaultRequestConverter
- Unit тесты для конвертера ответов DefaultResponseConverter
- Оценка степени покрытия тестами
-
7Модуль jmemcached-client, основные интерфейсы
Длительность урока: 14:59
- Добавление плагинов и зависимостей в pom.xml
- Интерфейс клиента: Client
- Интерфейс настроек клиента: ClientConfig
- JMemcachedClientFactory - фабрика создания клиентов
- Реализация настроек клиента DefaultClientConfig
- Создание тестового класса ExternalProject, моделирующего отдельный проект, использующий jmemcached-client
-
8Реализация DefaultClient
Длительность урока: 11:49
- Реализация DefaultClient
- Изменения в JMemcachedClientFactory
-
9Unit тесты для модуля jmemcached-client
Длительность урока: 25:14
- Unit тесты для DefaultClientConfig
- Unit тесты для DefaultClient
- Оценка степени покрытия тестами
-
10Модуль jmemcached-server, основные интерфейсы
Длительность урока: 20:37
- Добавление плагинов и зависимостей в pom.xml
- Интерфейс сервера Server
- Интерфейс настроек сервера ServerConfig
- Интерфейс хранилища данных типа ключ-значение Storage
- Интерфейс диспетчера обработки команды CommandHandler
- Интерфейс рабочего потока соединения ClientSocketHandler
- Класс запуска сервера CLI
- Класс-оболочка для запуска сервера как Windows сервис ServiceWrapper
- Фабрика создания JMemcached сервера JMemcachedServerFactory
-
11Реализация DefaultStorage
Длительность урока: 27:22
- Создание внутреннего класса для хранения данных в карте StorageItem
- Создание внутреннего класса для автоматического удаления устаревших данных ClearExpiredDataJob
- Реализация хранения данных типа ключ-значение на основе конкурентной хеш таблицы DefaultStorage
-
12Реализация DefaultServerConfig
Длительность урока: 16:29
- Реализация интерфейса настроек сервера DefaultServerConfig
-
13Реализация DefaultCommandHandler и DefaultClientSocketHandler
Длительность урока: 18:29
- Реализация интерфейса диспетчера обработки команды DefaultCommandHandler
- Реализация интерфейса рабочего потока соединения DefaultClientSocketHandler
-
14Реализация DefaultServer
Длительность урока: 30:24
- Реализация интерфейса jmemcached сервера DefaultServer
- Реализация диспетчера соединений
-
15Unit тесты для модуля jmemcached-server
Длительность урока: 28:02
- Unit тесты для DefaultClientSocketHandler
- Unit тесты для DefaultCommandHandler
- Unit тесты для DefaultServer
- Unit тесты для DefaultServerConfig
- Unit тесты для DefaultStorage
- Unit тесты для внутренних классов DefaultStorage
- Оценка степени покрытия тестами
-
16Демонстрация работы проекта, направления улучшения и сдача заказчику
Длительность урока: 42:22
- Демонстрация работы сервера для следующих сценариев
- Корректное взаимодействие между клиентом и сервером;
- Остановка клиента во время работы сервера;
- Остановка сервера во время работы клиента;
- Превышение количества подключений клиентов к серверу;
- Обработка ошибок в логике сервера.
- Направления улучшения работы jmemcached
- Использование неблокирующего IO для архитектуры jmemcached-server;
- Использование off-heap области памяти для решения проблем медлительности сборщика мусора Java;
- Варианты ручного управления памятью для реализации логики затирания новыми объектами наименее используемых старых объектов в хеш таблице
- Создание Windows сервиса для jmemcached-server
- Запуск jmemcached-server через командную строку Windows
- Демонстрация работы сервера для следующих сценариев