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

OSCHINA-MIRROR/wheat-os-wheat-cache

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 7.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 18:45 fc2d210

WheatCache

Введение

WheatCache — это высокопроизводительное и масштабируемое распределённое кэширующее решение, разработанное на языке Go с использованием вызовов сервисов gRPC.

Функциональные возможности

  • Вызовы сервисов gRPC, поддержка многоязычных клиентов.
  • Многопоточное LRU с несколькими соединениями на основе модели событийного управления.
  • Эффективный механизм TTL на основе skiplist.
  • Пошаговая сборка мусора (GC) позволяет продолжать использовать недействительное кэширование при интенсивной обработке ввода-вывода, предотвращая эффект «снежного кома».
  • Распределённые механизмы: кластеризация, сторожевые узлы, репликация главный-резервный (в настоящее время реализована только кластеризация).
  • Опциональная строгая согласованность (AC) или высокая доступность (AP) (в настоящее время реализуется только AP).
  • Поддержка транзакций с возможностью отката.
  • Быстрый инструмент расширения API.
  • Плагины для расширения сообщений с поддержкой push-уведомлений, установка плагинов на основе git.
  • Персистентность через AOF и RDB (в настоящее время реализован только AOF). 1. На прикладном уровне используется однонаправленный RPC, на основе которого строится клиент для других платформ с использованием protobuf.

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")
}

Планы разработки версии 1.1

— Сервисный слой: * базовые типы; * listx; * stringx; * hashx; * setx; * zsetx (не реализовано); * channelx.

— Слой хранения: * отправка лог-сообщений; * инструменты автоматического создания сервисов; * отправка сообщений хранилища (не реализовано).

— LRU-слой: * основанный на однопоточных событиях LRU; * сегментированный блокировочный многопоточный LRU (не реализовано); * AOF-схема сохранения (не реализовано); * RDB-схема сохранения (не реализовано); * TTL-механизм; * механизм очистки; * LRU-отправка сообщений (не реализовано).

— Шлюзовый слой: * транспорт на основе кластерной согласованности ключей; * транспорт на основе конфигурации главного и подчиненного серверов (не реализовано); * транспорт на основе резервного копирования (не реализовано).

— Промежуточное ПО и слой плагинов: * промежуточное ПО для отправки; * события v2 (не реализовано); * плагины для имитации и анализа производительности; * плагин мониторинга системы (не реализован); * плагин резервного копирования и восстановления (не реализован); * инструмент управления плагинами на основе Git (не реализован).

Документация для разработчиков

Документация по разработке хранилища

Документация по разработке хранилища.

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

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

1
https://api.gitlife.ru/oschina-mirror/wheat-os-wheat-cache.git
git@api.gitlife.ru:oschina-mirror/wheat-os-wheat-cache.git
oschina-mirror
wheat-os-wheat-cache
wheat-os-wheat-cache
master