Skip to content

Commit 0230589

Browse files
author
maksim.konovalov
committed
Add new providers and modules topic to doc_ru.md
1 parent df5c4b3 commit 0230589

File tree

1 file changed

+59
-9
lines changed

1 file changed

+59
-9
lines changed

docs/doc_ru.md

Lines changed: 59 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
- [Tarantool](#tarantool)
88
- [Шардирование](#шардирование)
99
- [ETCD](#etcd)
10-
- Начало работы с библиотекой
11-
- Подготовка окружения
12-
- Конфигурация и использование
13-
- [Тестирование](#тестирование)
10+
- [Начало работы с библиотекой](#начало-работы-с-библиотекой)
11+
- [Подготовка окружения](#подготовка-окружения)
12+
- [Конфигурация и использование](#конфигурация-и-использование)
13+
- [Провайдеры топологии](#провайдеры-топологии)
14+
- [Использование модулей go-tarantool](#использование-модулей-go-tarantool)
1415

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

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

3234
# Теория
3335

34-
### Tarantool
36+
#### Tarantool
3537

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

41-
### Шардирование
43+
#### Шардирование
4244

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

47-
### ETCD
49+
#### ETCD
4850

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

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

224226
```
227+
228+
### Провайдеры топологии
229+
Провайдеры топологии - готовые реализации, обеспечивающие чтение
230+
состояния топологии вашего кластера из различных источников. Это позовляет вам считать вашу конфигурацию из любого удобного места.
231+
Если ни один из источников топологии вам не подходит - вы можете реализовать свой.
232+
233+
В качестве источника топологии tarantool, вам доступны следующие:
234+
- **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)
235+
- **static** (для случая, когда вам необходимо что-то быстро протестировать и в ручную в коде забить информацию о топологии в вашем кластере. Выше в примере мы рассмавтривали именно его).
236+
- **[viper](../providers/viper/README.md)** (дает широкие возможности использования любого источника топологии, даже тех, которые еще не поддержаны в самом tarantool. Так, любой источник конфигурации, который поддерживает viper вы можете использовать в качестве провайдера)
237+
- etcd v3
238+
- consul
239+
- files
240+
241+
### Использование модулей go-tarantool
242+
243+
Мы стараемся максимально обеспечить совместимость с интерфейсами go-tarantool там,
244+
где это необходимо. В данном разделе мы расмотрим полезные примеры использования
245+
модулей go-tarantool, которые позволяет сделать нам совместимость интерфейсов.
246+
247+
##### Box
248+
Модуль go-tarantool, позволяющий получать доступ к builtin методам Tarantool,
249+
не описывая интерфейсов самому.
250+
251+
Проверка состояния кластера.
252+
```go
253+
// Проверим что всем мастера всех репликасетов находятся в состоянии RO=false.
254+
// Проходимся по всем репликасетам внутри кластера.
255+
for _, rs := range router.RouteAll() {
256+
// Поскольку модуль box рабоатет в рамках подключения к 1му инстансу,
257+
// мы можем использовать адаптер, чтобы указать пулу использовать 1 инстанс репликасета в RW.
258+
// В этом поможет нам адаптер go-tarantool.
259+
adapter := pool.NewConnectorAdapter(rs.Pooler(), pool.RW)
260+
// Создадим экземпляр box из go-tarantool.
261+
b := box.New(adapter)
262+
263+
// Получим информацию из нашего инстанса.
264+
info, err := b.Info()
265+
if err != nil {
266+
panic(err)
267+
}
268+
269+
// Проверим, что мастер действительно находится в состоянии RO=false.
270+
if info.RO == false {
271+
panic("master non master 0_0")
272+
}
273+
}
274+
```

0 commit comments

Comments
 (0)