Skip to content

Commit

Permalink
Add new providers and modules topic to doc_ru.md
Browse files Browse the repository at this point in the history
  • Loading branch information
maksim.konovalov committed Jan 14, 2025
1 parent df5c4b3 commit 0230589
Showing 1 changed file with 59 additions and 9 deletions.
68 changes: 59 additions & 9 deletions docs/doc_ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@
- [Tarantool](#tarantool)
- [Шардирование](#шардирование)
- [ETCD](#etcd)
- Начало работы с библиотекой
- Подготовка окружения
- Конфигурация и использование
- [Тестирование](#тестирование)
- [Начало работы с библиотекой](#начало-работы-с-библиотекой)
- [Подготовка окружения](#подготовка-окружения)
- [Конфигурация и использование](#конфигурация-и-использование)
- [Провайдеры топологии](#провайдеры-топологии)
- [Использование модулей go-tarantool](#использование-модулей-go-tarantool)

# Цели и задачи библиотеки

Expand All @@ -27,24 +28,25 @@
**Цель и задача библиотеки** заключаются в том, чтобы дать пользователям
возможность обращаться в репликасеты не используя Tarantool Router инсталяцию,
а резолвить бакеты и понимать в какой сторадж ходить прямо из вашего сервиса.
При этом не создавая проблем с расхождением интерфейсов lua роутера и go роутера.
В случае если термины выше вам незнакомы, мы надеемся что блок [теории](#теория) поможет вам в этом.

# Теория

### Tarantool
#### Tarantool

Tarantool — платформа in-memory вычислений с гибкой схемой данных для эффективного создания высоконагруженных
приложений.
Включает в себя базу данных и сервер приложений на Lua.
Подробнее ознакомиться можно на официальном сайте Tarantool.

### Шардирование
#### Шардирование

Подробнее про технологию виртуального шардирования а так же про библиотеку vhsard вы можете найти в
https://www.youtube.com/watch?v=_9zUB0vmRxM
А так же внутри [оригинальной библиотеки vshard](https://github.com/tarantool/vshard).

### ETCD
#### ETCD

[etcd](https://etcd.io/) — это быстрая, надёжная и устойчивая к сбоям key-value база данных.
В Tarantool etcd является основным источником конфигурации production решений.
Expand All @@ -56,8 +58,8 @@ https://www.youtube.com/watch?v=_9zUB0vmRxM
### Подготовка окружения
Для работы с библиотекой вам понадобятся вам необходимо следующее окружение:
- **[Go](https://go.dev/)**: любая из **двух последних мажорных версий** [releases](https://go.dev/doc/devel/release).
- Сетевой доступ до шардированного кластера Tarantool
- Доступность источника топологии(источником топологии может быть etcd или другие)
- Сетевой доступ до шардированного кластера Tarantool.
- Доступность источника топологии(источником топологии может быть etcd, файл, или другие).

Для локального запуска кластера:
- **[Tarantool](https://www.tarantool.io/ru/)** (библиотека проверена для версий 2.8+, документация написана поверх версии 2.11) в качетсве предустановленной программы на вашем ПК, в случае если вы собираетесь запускать кластер локально. Либо сетевое подключение до вашего кластера.
Expand Down Expand Up @@ -222,3 +224,51 @@ func main() {
}

```

### Провайдеры топологии
Провайдеры топологии - готовые реализации, обеспечивающие чтение
состояния топологии вашего кластера из различных источников. Это позовляет вам считать вашу конфигурацию из любого удобного места.
Если ни один из источников топологии вам не подходит - вы можете реализовать свой.

В качестве источника топологии tarantool, вам доступны следующие:
- **etcd** (для конфигурации основанной на [moonlibs/config](https://github.com/moonlibs/config?tab=readme-ov-file#example-of-etcd-configuration-for-vshard-based-applications-etcdclustervshard), подходит для tarantool версии ниже 3 и etcd v2)
- **static** (для случая, когда вам необходимо что-то быстро протестировать и в ручную в коде забить информацию о топологии в вашем кластере. Выше в примере мы рассмавтривали именно его).
- **[viper](../providers/viper/README.md)** (дает широкие возможности использования любого источника топологии, даже тех, которые еще не поддержаны в самом tarantool. Так, любой источник конфигурации, который поддерживает viper вы можете использовать в качестве провайдера)
- etcd v3
- consul
- files

### Использование модулей go-tarantool

Мы стараемся максимально обеспечить совместимость с интерфейсами go-tarantool там,
где это необходимо. В данном разделе мы расмотрим полезные примеры использования
модулей go-tarantool, которые позволяет сделать нам совместимость интерфейсов.

##### Box
Модуль go-tarantool, позволяющий получать доступ к builtin методам Tarantool,
не описывая интерфейсов самому.

Проверка состояния кластера.
```go
// Проверим что всем мастера всех репликасетов находятся в состоянии RO=false.
// Проходимся по всем репликасетам внутри кластера.
for _, rs := range router.RouteAll() {
// Поскольку модуль box рабоатет в рамках подключения к 1му инстансу,
// мы можем использовать адаптер, чтобы указать пулу использовать 1 инстанс репликасета в RW.
// В этом поможет нам адаптер go-tarantool.
adapter := pool.NewConnectorAdapter(rs.Pooler(), pool.RW)
// Создадим экземпляр box из go-tarantool.
b := box.New(adapter)

// Получим информацию из нашего инстанса.
info, err := b.Info()
if err != nil {
panic(err)
}

// Проверим, что мастер действительно находится в состоянии RO=false.
if info.RO == false {
panic("master non master 0_0")
}
}
```

0 comments on commit 0230589

Please sign in to comment.