Lighter: объектный кеш-сервис, облегчённая версия
(В настоящее время основная ветка — rebuild. Если есть проблемы с дизайном и стилем кода, пожалуйста, оставьте комментарий.)
Этот проект больше не поддерживается, рекомендуется перейти на переписанную версию Go kafo — 码云 / Github.
В данный момент идёт перестройка на Go! Будет добавлена функция сохранения данных, а также сервис будет преобразован в настоящий распределённый кеш.
Веб-сайт: https://www.fishin.com.cn
Контакты: fishgoddess@qq.com
Открытый исходный код: Apache License 2.0
Подробности см. в файле HowToUse.md.
Сначала скачайте сжатый пакет Lighter.
После успешной загрузки вы почти закончили!
Как запустить сервис Lighter на Linux?
a. Используйте команду ls для просмотра загруженных файлов.
b. Используйте команду tar для распаковки файлов.
c. После распаковки вы получите каталог. Используйте команду cd, чтобы войти в каталог, и после входа вы увидите три каталога.
Сначала посмотрите на каталог bin. Это каталог двоичных файлов, в котором находятся сценарии запуска и остановки службы.
Давайте запустим службу!
Выполните ./startup.sh, чтобы запустить её. Конечно, мы рекомендуем использовать фоновый режим запуска, как показано на рисунке ниже:
Вы можете беспокоиться, что не увидите журнал, если запустите его в фоновом режиме. Не беспокойтесь, позже мы расскажем, где найти журнал.
Если вам повезёт, вы увидите значок Lighter:
Теперь служба полностью запущена!
Обратите внимание: поскольку для запуска требуются права доступа, если вы видите сообщение «нет прав доступа» при запуске, сначала используйте chmod для предоставления прав доступа.
Если вы хотите остановить службу, конечно, мы не рекомендуем вам делать это таким образом, но если вы настаиваете, выполните shutdown.sh.
Как запустить службу Lighter на Windows?
a. Также необходимо загрузить сжатый пакет Lighter, здесь мы не будем повторять его. Распакуйте его в каталог.
b. Войдите в этот каталог, там также есть три каталога, войдите в каталог bin и дважды щёлкните startup.bat, чтобы запустить его.
c. Если вам нужно остановить службу, дважды щёлкните shutdown.bat.
Где находится журнал во время работы службы?
В полученном каталоге есть три каталога: bin, conf и logs.
Я думаю, вы уже догадались, что журналы хранятся в каталоге logs, они разделены по времени, каждый день — отдельный файл журнала.
Если вам нужно настроить службу, перейдите в каталог conf, откройте файл config.properties и настройте его.
Если вы хотите настроить информацию журнала, перейдите в bin/classes, откройте файл logback.xml и настройте его.
Полный пример протокола, используемого Lighter, можно найти в HttpProtocol.md.
Этот протокол в настоящее время реализует протокол HTTP и рекомендует использовать стиль Restful для отправки запросов:
Действие get для получения объекта:
Действие set для сохранения объекта:
Запрос тела:
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
}
или:
Любая строка
Запрос тела:
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
}
или:
Любая строка
5. Действие exists, проверка существования объекта по ключу: + Пример: http://127.0.0.1:9669/exists/testKey + testKey — значение ключа объекта. + Рекомендуется использовать GET-запрос. + Ответ: true, если ключ существует.
6. Действие expiredTime, определение времени жизни объекта по ключу: + Пример: http://127.0.0.1:9669/expiredTime/testKey + testKey — значение ключа объекта. + Рекомендуется использовать GET-запрос. + Значение ответа: + -2 — ключ не существует или уже истёк срок его действия. + -1 — этот ключ никогда не истечёт. + положительное число — время жизни ключа, больше 0. Когда это значение становится равным 0, ключ считается истёкшим.
7. Действие lighter, получение информации о работе сервиса Lighter: + Пример: http://127.0.0.1:9669/lighter/info + В настоящее время поддерживаются ключи, значения, numberOfKeys и info. + info — информация о системе, включая функции нескольких системных действий. + Рекомендуется использовать GET-запрос. + Ответ — системная информация.
{
"code": 0,
"data": [
{
"keys": {
"node_15": [],
"node_14": [],
"node_0": [],
"node_1": [],
"node_2": ["tehjhs"],
"node_3": ["bsdf"],
"node_4": [],
"node_5": [],
"node_13": ["gdsgas"],
"node_6": ["%E5%B9%BF%E6%B3%9B%E7%9A%84%E5%99%B6"],
"node_12": ["tyret"],
"node_7": [],
"node_11": ["gdsa"],
"node_8": [],
"node_10": [],
"node_9": ["ghfdhfd"]
},
"values": {
"node_15": [],
"node_14": [],
"node_0": [],
"node_1": [],
"node_2": "{ \"key1\": \"value1\", \"key2\": \"value2\"}",
"node_3": "{ \"key1\": \"value1\", \"key2\": \"value2\"}",
"node_4": [],
"node_5": [],
"node_13": "{ \"gsda\": \"gsdfga\", \"风格的yrtruhjm放大\": \"gdfgad灌水广\"}",
"node_6": "{ \"key1\": \"value1\", \"key2\": \"value2\"}",
"node_12": "{ \"key1\": \"value1\", \"key2\": \"value2\"}",
"node_7": [],
"node_11": "{ \"key1\": \"value1\", \"风格的放大\": \"gdfgad灌水广\"}",
"node_8": [],
"node_10": [],
"node_9": "{ \"key1\": \"value1\", \"key2\": \"value2\"}"
},
"numberOfKeys": {
"total": 7,
"details": {
"node_15": 0,
"node_14": 0,
"node_0": 0,
"node_1": 0,
"node_2": 1,
"node_3": 1,
"node_4": 0,
"node_5": 0,
"node_13": 1,
"node_6": 1,
"node_12": 1,
"node_7": 0,
"node_11": 1,
"node_8": 0,
"node_10": 0,
"node_9": 1
}
},
"numberOfNodes": 16
}
],
"msg": "Done",
"success": true
}
<properties>
<tuz.version>0.6.6-FINAL</tuz.version>
<netty.version>4.1.33.Final</netty.version>
<fastjson.version>1.2.56</fastjson.version>
<logback.version>1.2.3</logback.version>
</properties>
i. Tuz используется как контейнер для всего проекта, с применением технологий IOC и перехватчиков. ii. Netty используется в качестве сетевого коммуникационного модуля для всего проекта, используя NIO для сетевых услуг. iii. FastJson используется как часть протокола разбора, являясь библиотекой для разбора JSON-протокола. iiii. LogBack используется как модуль логирования проекта, применяя интерфейс SLF4J для подключения.
Тестирование производительности:
Конкретные тестовые файлы находятся в папке images и представляют собой JMeter-тест Lighter.jmx. Это план тестирования.
server.port=9669
server.closePort=9999
ChannelInitializer=cn.com.fishin.lighter.net.http.HttpServerInitializer
RequestParser=cn.com.fishin.lighter.protocol.http.HttpRequestParser
corePoolSize=8 maximumPoolSize=64
keepAliveTime=30
waitQueueSize=4096 RejectedExecutionHandler=cn.com.fishin.lighter.core.DefaultRejectedExecutionHandler
numberOfNodes=16
Node=cn.com.fishin.lighter.core.node.DefaultNode
NodeSelector=cn.com.fishin.lighter.core.selector.KeyHashNodeSelector
AccessControlAllowOrigin=*
GcPerSecond=60
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )