Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add examples and update constraints for Kafka API #13492

Open
wants to merge 9 commits into
base: main
Choose a base branch
from

Conversation

a-serebryanskiy
Copy link
Collaborator

Changelog entry

...

Changelog category

  • Documentation (changelog entry is not required)

Additional information

...

@a-serebryanskiy a-serebryanskiy requested a review from a team as a code owner January 17, 2025 11:47
@github-actions github-actions bot added the documentation Improvements or additions to documentation label Jan 17, 2025
Copy link

github-actions bot commented Jan 17, 2025

2025-01-17 11:50:02 UTC Pre-commit check linux-x86_64-release-asan for c4ee593 has started.
2025-01-17 11:50:15 UTC Artifacts will be uploaded here
2025-01-17 11:52:46 UTC ya make is running...
🔴 2025-01-17 11:53:21 UTC Build failed, see the logs. Also see fail summary

Copy link

github-actions bot commented Jan 17, 2025

2025-01-17 11:52:34 UTC Pre-commit check linux-x86_64-relwithdebinfo for c4ee593 has started.
2025-01-17 11:52:46 UTC Artifacts will be uploaded here
2025-01-17 11:55:15 UTC ya make is running...
🔴 2025-01-17 11:55:47 UTC Build failed, see the logs. Also see fail summary

Copy link

❌ Documentation build

Revision build failed

Build logs

Errors (35)

❌ /en/reference/kafka-api/examples.md: 201: YFM001/inline-code-length Inline code length [Expected: 140; Actual: 212] [Context: "Unexpected error in join group response: This most likely occurs because of a request being malformed by the client library or the message was sent to an incompatible broker. See the broker logs for more details."]

❌ /en/reference/kafka-api/examples.md: 203: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /en/reference/kafka-api/examples.md: 36: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /en/reference/kafka-api/examples.md: 385: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- security.protocol with val..."]

❌ /en/reference/kafka-api/examples.md: 390: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- <path_to_database> is the pa..."]

❌ /en/reference/kafka-api/examples.md: 409: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /en/reference/kafka-api/examples.md: 43: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- absence of support for the [..."]

❌ /en/reference/kafka-api/examples.md: 463: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "1. Create a user. [How to do t..."]

❌ /en/reference/kafka-api/examples.md: 464: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "2. Connect to the Kafka API as..."]

❌ /en/reference/kafka-api/examples.md: 465: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- YDB is running locally with ..."]

❌ /en/reference/kafka-api/examples.md: 482: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /en/reference/kafka-api/examples.md: 48: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- check.crc=false"]

❌ /ru/reference/kafka-api/constraints.md: 12: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /ru/reference/kafka-api/constraints.md: 13: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /ru/reference/kafka-api/read-write.md: 201: YFM001/inline-code-length Inline code length [Expected: 140; Actual: 212] [Context: "Unexpected error in join group response: This most likely occurs because of a request being malformed by the client library or the message was sent to an incompatible broker. See the broker logs for more details."]

Log was truncated. (20 records)

Copy link

github-actions bot commented Jan 17, 2025

2025-01-17 12:15:08 UTC Pre-commit check linux-x86_64-release-asan for 3b08e43 has started.
2025-01-17 12:15:34 UTC Artifacts will be uploaded here
2025-01-17 12:18:02 UTC ya make is running...
🔴 2025-01-17 12:18:41 UTC Build failed, see the logs. Also see fail summary

Copy link

github-actions bot commented Jan 17, 2025

2025-01-17 12:16:55 UTC Pre-commit check linux-x86_64-relwithdebinfo for 3b08e43 has started.
2025-01-17 12:17:37 UTC Artifacts will be uploaded here
2025-01-17 12:20:25 UTC ya make is running...
🔴 2025-01-17 12:20:58 UTC Build failed, see the logs. Also see fail summary

Copy link

❌ Documentation build

Revision build failed

Build logs

Errors (35)

❌ /en/reference/kafka-api/examples.md: 201: YFM001/inline-code-length Inline code length [Expected: 140; Actual: 212] [Context: "Unexpected error in join group response: This most likely occurs because of a request being malformed by the client library or the message was sent to an incompatible broker. See the broker logs for more details."]

❌ /en/reference/kafka-api/examples.md: 203: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /en/reference/kafka-api/examples.md: 36: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /en/reference/kafka-api/examples.md: 385: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- security.protocol with val..."]

❌ /en/reference/kafka-api/examples.md: 390: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- <path_to_database> is the pa..."]

❌ /en/reference/kafka-api/examples.md: 409: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /en/reference/kafka-api/examples.md: 43: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- absence of support for the [..."]

❌ /en/reference/kafka-api/examples.md: 463: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "1. Create a user. [How to do t..."]

❌ /en/reference/kafka-api/examples.md: 464: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "2. Connect to the Kafka API as..."]

❌ /en/reference/kafka-api/examples.md: 465: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- YDB is running locally with ..."]

❌ /en/reference/kafka-api/examples.md: 482: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /en/reference/kafka-api/examples.md: 48: MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- check.crc=false"]

❌ /ru/reference/kafka-api/constraints.md: 12: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /ru/reference/kafka-api/constraints.md: 13: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /ru/reference/kafka-api/read-write.md: 201: YFM001/inline-code-length Inline code length [Expected: 140; Actual: 212] [Context: "Unexpected error in join group response: This most likely occurs because of a request being malformed by the client library or the message was sent to an incompatible broker. See the broker logs for more details."]

Log was truncated. (20 records)


Аутентификация всегда включена при использовании [Kafka API в Yandex Cloud](https://yandex.cloud/ru/docs/data-streams/kafkaapi/auth)

Аутентификация по умолчанию выключена при использовании локальной базы (например из Docker образа).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не совсем так. Работа по kafka api возможна с указанием логина\пароля, а так же без аутентификации. Для этого надо указать .... в логине-пароле. При использовании [Kafka API в Yandex Cloud] запросы без аутентификации запрещены. При разворачивании YDB самостоятельно доступны оба варианта. Для включения требования работы только с аутентификацией укажите опцию ....

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Может быть так: "при самостоятельном развертывании YDB аутентификация по умолчанию выключена. Для включения укажите опцию ..."? Мне нравится, что тезисы про cloud и dedicated разнесены по строчкам, чтобы можно было на оба из них обратить внимание.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я недавно это место обновлял в основной документации https://ydb.tech/docs/ru/security/authentication#anonymous

1. Поддержана только SASL/PLAIN-аутентификация.
1. Не поддержаны [компатифицированные топики](https://docs.confluent.io/kafka/design/log_compaction.html).
В связи с этим поверх Kafka API в YDB Topics не работают Kafka Connect, Schema Registry и Kafka Streams.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

уточни что schema registry не работает с нами как со стораджем, а писать схематизированные данные и читать их можно.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Как бы ты это написал? Я читаю текущий вариант как "Приложение Schema registry не работает с YDB"

Добавить что-то типа "При этом писать во внешние Schema Registry, которые уже работают поверх другого Kafka кластера, схему и писать в YDB сообщения возможно"?

1. Создайте [базу данных YDB](https://yandex.cloud/ru/docs/ydb/quickstart), если у вас ее еще нет
2. Создайте [очередь Yandex Data Streams](https://yandex.cloud/ru/docs/data-streams/quickstart)
3. Создайте [сервисный аккаунт](https://yandex.cloud/ru/docs/iam/operations/sa/create), если у вас его еще нет
и добавьте этому сервисному аккаунту роли ydb.viewer (для чтения данных из потока), ydb.editor (для записи данных в поток) и ydb.kafkaApi.client (для доступа к потоку данных по Kafka API)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ydb.kafkaApi.client очень скоро уже не будет нужно, надо не забыть будет удалить, и докатить это по-быстрее.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А этой мой фикс вот тут удаляет эту проверку?
https://a.yandex-team.ru/arcadia/contrib/ydb/services/persqueue_v1/actors/persqueue_utils.h?rev=r15535601#L20

- Spark

Apache Spark при работе с Kafka не использует ничего из существующих ограничений Kafka API в YDB Topics. Благодаря этому
работа с Kafka API из Spark должна работать в полном объеме.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

работа должна работать. Благодаря этому использование Spark с Ydb topics возможно в полном объеме.

- Exactly once работа по Kafka API сейчас не поддержана, так как поддержка транзакций в Kafka API сейчас в разработке;
- Подписка на топики через паттерн сейчас недоступна;
- Использование CreateTime сообщения в качестве watermark сейчас недоступно, так как вместо CreateTime используется текущее время вычитки
(баг будет пофикшен в следующих версиях).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

баг будет пофикшен - почему сразу баг-то? Не надо это писать. Исправим, уберем.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ну так совсем не пишут в документации "баг будет пофикшен"

@@ -63,6 +259,80 @@
producer.close();
```

- Spark

Apache Spark при работе с Kafka не использует ничего из существующих ограничений Kafka API в YDB Topics. Благодаря этому
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

работа должна работать опять. Так же надо поправить

@@ -72,9 +342,6 @@
topic_id => "<topic-name>"
bootstrap_servers => "<ydb-endpoint>"
compression_type => none
security_protocol => SASL_SSL
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а вот это зря убрал. Можно 2 примера? Без аутентификации и с. Везде. Или доп секция тут - если нужна аутентификация , добавьте вот это в конфиг : [3 строки]. По этой доке должно быть легко и просто настроить утилиты для работы с облаком и своим продовым YDB. А как указать аутентификацию не понятно.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Так там же ниже целый блок про работу с аутентификацией


{% endlist %}

#### Примеры с аутентификацией в локальной базе
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

что такое "локальная база"? разве так у нас везде называется? К самостоятельно развернутому YDB? и только в докере? а как подключиться к моему YDB на кластере?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хороший поинт. Может быть "примеры аутентификации в самостоятельно развернутом YDB"?

Copy link

github-actions bot commented Jan 17, 2025

2025-01-17 13:25:53 UTC Pre-commit check linux-x86_64-release-asan for 0397407 has started.
2025-01-17 13:26:21 UTC Artifacts will be uploaded here
2025-01-17 13:29:27 UTC ya make is running...
🔴 2025-01-17 13:29:59 UTC Build failed, see the logs. Also see fail summary

Copy link

❌ Documentation build

Revision build failed

Build logs

Errors (9)

❌ /en/reference/kafka-api/examples.md: 203: YFM001/inline-code-length Inline code length [Expected: 140; Actual: 212] [Context: "Unexpected error in join group response:

❌ /ru/reference/kafka-api/read-write.md: 116: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /ru/reference/kafka-api/read-write.md: 151: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /ru/reference/kafka-api/read-write.md: 153: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /ru/reference/kafka-api/read-write.md: 165: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /ru/reference/kafka-api/read-write.md: 195: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /ru/reference/kafka-api/read-write.md: 204: YFM001/inline-code-length Inline code length [Expected: 140; Actual: 212] [Context: "Unexpected error in join group response: This most likely occurs because of a request being malformed by the client library or the message was sent to an incompatible broker. See the broker logs for more details."]

❌ /ru/reference/kafka-api/read-write.md: 60: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ Link is unreachable: ./auth.md in /en/reference/kafka-api/examples.md

Copy link

github-actions bot commented Jan 17, 2025

2025-01-17 13:28:15 UTC Pre-commit check linux-x86_64-relwithdebinfo for 0397407 has started.
2025-01-17 13:28:25 UTC Artifacts will be uploaded here
2025-01-17 13:30:46 UTC ya make is running...
🔴 2025-01-17 13:31:15 UTC Build failed, see the logs. Also see fail summary

Copy link

❌ Documentation build

Revision build failed

Build logs

Errors (4)

❌ /en/reference/kafka-api/examples.md: 203: YFM001/inline-code-length Inline code length [Expected: 140; Actual: 212] [Context: "Unexpected error in join group response:

❌ /ru/reference/kafka-api/read-write.md: 165: MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]

❌ /ru/reference/kafka-api/read-write.md: 205: YFM001/inline-code-length Inline code length [Expected: 140; Actual: 212] [Context: "Unexpected error in join group response: This most likely occurs because of a request being malformed

❌ Link is unreachable: ./auth.md in /en/reference/kafka-api/examples.md

Copy link

github-actions bot commented Jan 17, 2025

2025-01-17 13:41:27 UTC Pre-commit check linux-x86_64-release-asan for bca759d has started.
2025-01-17 13:41:39 UTC Artifacts will be uploaded here
2025-01-17 13:44:00 UTC ya make is running...
🔴 2025-01-17 13:44:31 UTC Build failed, see the logs. Also see fail summary

Copy link

github-actions bot commented Jan 17, 2025

2025-01-17 13:41:48 UTC Pre-commit check linux-x86_64-relwithdebinfo for bca759d has started.
2025-01-17 13:42:02 UTC Artifacts will be uploaded here
2025-01-17 13:44:31 UTC ya make is running...
🔴 2025-01-17 13:45:02 UTC Build failed, see the logs. Also see fail summary

Copy link

github-actions bot commented Jan 17, 2025

2025-01-17 13:48:21 UTC Pre-commit check linux-x86_64-relwithdebinfo for 8ba9d89 has started.
2025-01-17 13:48:25 UTC Artifacts will be uploaded here
2025-01-17 13:50:45 UTC ya make is running...
🔴 2025-01-17 13:52:00 UTC Build failed, see the logs. Also see fail summary

Copy link

github-actions bot commented Jan 17, 2025

2025-01-17 13:48:47 UTC Pre-commit check linux-x86_64-release-asan for 8ba9d89 has started.
2025-01-17 13:48:52 UTC Artifacts will be uploaded here
2025-01-17 13:51:20 UTC ya make is running...
🔴 2025-01-17 13:52:26 UTC Build failed, see the logs. Also see fail summary

Copy link

❌ Documentation build

Revision build failed

Build logs

Errors (1)

❌ Link is unreachable: ./auth.md in /en/reference/kafka-api/examples.md

Copy link

github-actions bot commented Jan 17, 2025

2025-01-17 13:57:58 UTC Pre-commit check linux-x86_64-release-asan for 0ee73e8 has started.
2025-01-17 13:58:09 UTC Artifacts will be uploaded here
2025-01-17 14:00:31 UTC ya make is running...
🟢 2025-01-17 14:01:53 UTC Tests successful.

Test history | Ya make output | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
0 0 0 0 0 0

🟢 2025-01-17 14:02:00 UTC Build successful.

Copy link

github-actions bot commented Jan 17, 2025

2025-01-17 13:58:11 UTC Pre-commit check linux-x86_64-relwithdebinfo for 0ee73e8 has started.
2025-01-17 13:58:23 UTC Artifacts will be uploaded here
2025-01-17 14:00:48 UTC ya make is running...
🟢 2025-01-17 14:02:18 UTC Tests successful.

Test history | Ya make output | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
0 0 0 0 0 0

🟢 2025-01-17 14:02:23 UTC Build successful.

Copy link

✅ Documentation build

Revision built successfully
Revision preview link


Аутентификация всегда включена при использовании [Kafka API в Yandex Cloud](https://yandex.cloud/ru/docs/data-streams/kafkaapi/auth)

Аутентификация по умолчанию выключена при использовании локальной базы (например из Docker образа).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я недавно это место обновлял в основной документации https://ydb.tech/docs/ru/security/authentication#anonymous

@@ -1,5 +1,14 @@
# Аутентификация Kafka API

## Когда аутентификация включена и когда выключена?
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Плохой заголовок для документации.

Аутентификация по умолчанию выключена при использовании локальной базы (например из Docker образа).
Чтобы включить ее, укажите опцию [`enforce_user_token_requirement` в конфиге](../configuration/index.md#auth).

## Как работает аутентификация в Kafka API?
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тоже самое, плохой заголовок

1. Поддержана только SASL/PLAIN-аутентификация.
1. Не поддержаны [компатифицированные топики](https://docs.confluent.io/kafka/design/log_compaction.html).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Точно есть такой термин "компактифицированные"?


В примерах используются:
## Как попробовать Kafka API {#how-to-try-kafka-api}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Плохой заголовок. Можно что-то вроде "Начало работы"

- только одна стратегия назначения партиция - roundrobin;
- отсутствие возможности читать без предварительно созданной консьюмер группы

Поэтому в конфигурации консьюмера всегда нужно указывать **имя консьюмер группы** и параметры:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нет термина "консьюмер"
https://ydb.tech/docs/ru/concepts/glossary#consumer

- Exactly once работа по Kafka API сейчас не поддержана, так как поддержка транзакций в Kafka API сейчас в разработке;
- Подписка на топики через паттерн сейчас недоступна;
- Использование CreateTime сообщения в качестве watermark сейчас недоступно, так как вместо CreateTime используется текущее время вычитки
(баг будет пофикшен в следующих версиях).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ну так совсем не пишут в документации "баг будет пофикшен"

Unexpected error in join group response: This most likely occurs because of a request being malformed by the client library or the message was sent to an incompatible broker. See the broker logs for more details.
```

Скорее всего проблема в том, что не указана консьюмер группа или указанная консьмер группа не существует в кластере YDB.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нет термина консьюмер
https://ydb.tech/docs/ru/concepts/glossary#consumer


Для того, чтобы проверить работу с аутентификацией в локальной базе:

1. Создайте пользователя. [Как это сделать в YQL](https://ydb.tech/docs/ru/yql/reference/syntax/create-user). [Как выполнить YQL из CLI](https://ydb.tech/docs/ru/reference/ydb-cli/yql).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужны относительные ссылки

1. Создайте пользователя. [Как это сделать в YQL](https://ydb.tech/docs/ru/yql/reference/syntax/create-user). [Как выполнить YQL из CLI](https://ydb.tech/docs/ru/reference/ydb-cli/yql).
2. Подключитесь к Kafka API, как в примерах ниже. Во всех примерах предполагается, что:

- YDB запущен локально с переменной окружения YDB_KAFKA_PROXY_PORT=9092 - то есть Kafka API доступен по адресу localhost:9092. Например можно поднять YDB в докере, как указано [здесь](https://ydb.tech/docs/ru/quickstart#install)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужны относительные ссылки

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants