WheatCache
WheatCache — это высокопроизводительное и масштабируемое распределённое кэширующее решение, разработанное на языке Go с использованием вызовов сервисов gRPC.
2. Уровень шлюза в основном реализует:
3. Сервисный уровень представляет собой конкретную реализацию структуры хранения данных. В основном это сервис хранения, DAO и структура. Подробные сведения можно найти в документации разработчика.
4. LRU-уровень отвечает за конкретное хранение, механизм истечения срока действия и механизм очистки.
5. Уровень промежуточного программного обеспечения отвечает за отправку сообщений от storage и шлюза к плагинам.
— Использование Docker для быстрого ознакомления:
# Извлечение образа Docker
docker pull registry.cn-hangzhou.aliyuncs.com/bandl/wheat-cache:v1.1
# Запуск службы wheatCache storage
docker run -p 5890:5890 -itd registry.cn-hangzhou.aliyuncs.com/bandl/wheat-cache:v1.1 ./bin/storage
— Сборка проекта с помощью кода (на примере Ubuntu):
# Предварительные условия: Go 1.15+ и Python 3
sudo apt install python3-pip # Для сборки проекта требуется скрипт Python3
pip3 install jinja2
sudo apt install make
# Клонирование кода
git clone https://gitee.com/wheat-os/wheat-cache.git
# Установка зависимостей модуля
cd wheat-cache
go mod tidy # Если tidy не работает, обратитесь к https://goproxy.cn/
# Сборка проекта
make install # Каталог конфигурации по умолчанию: /etc/wheat-cache/wheat-cache.yaml
# Запуск storage
make storage
# Запуск шлюза кластера
make gateway
Для установки клиента выполните команду go get gitee.com/wheat-os/wheat-cache
.
func TestClient(t *testing.T) {
// middle.WithUnaryColonyClient создает клиент в режиме кластера, прямой доступ к storage не требует использования
cli, err := NewWheatClient("127.0.0.1:5890", middle.WithUnaryColonyClient)
require.NoError(t, err)
ctx := context.Background()
bKey := proto.NewBaseKey("apple")
resp, err := cli.Set(ctx, &proto.SetRequest{
Key: bKey,
Val: "yyyy",
})
require.NoError(t, err)
require.Equal(t, resp.Result, "yyyy")
getResp, err := cli.Get(ctx, &proto.GetRequest{
Key: bKey,
})
require.NoError(t, err)
require.Equal(t, getResp.Result, "yyyy")
}
— Сервисный слой: * базовые типы; * listx; * stringx; * hashx; * setx; * zsetx (не реализовано); * channelx.
— Слой хранения: * отправка лог-сообщений; * инструменты автоматического создания сервисов; * отправка сообщений хранилища (не реализовано).
— LRU-слой: * основанный на однопоточных событиях LRU; * сегментированный блокировочный многопоточный LRU (не реализовано); * AOF-схема сохранения (не реализовано); * RDB-схема сохранения (не реализовано); * TTL-механизм; * механизм очистки; * LRU-отправка сообщений (не реализовано).
— Шлюзовый слой: * транспорт на основе кластерной согласованности ключей; * транспорт на основе конфигурации главного и подчиненного серверов (не реализовано); * транспорт на основе резервного копирования (не реализовано).
— Промежуточное ПО и слой плагинов: * промежуточное ПО для отправки; * события v2 (не реализовано); * плагины для имитации и анализа производительности; * плагин мониторинга системы (не реализован); * плагин резервного копирования и восстановления (не реализован); * инструмент управления плагинами на основе Git (не реализован).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )