Спасибо за интерес к Yugabyte DB! Это, безусловно, отличный вариант использования. Пожалуйста, смотрите ответы в строке.
Меня интересует глобальная репликация с YugaByte. На данный момент я построил абстракцию над BadgerDB, базой данных Key-Value, написанной на GoLang. Наша абстракция поддерживает индексы, похожа на graphql и чрезвычайно БЫСТРАЯ. Можно ли использовать БД YugaByte с глобальной репликацией в качестве хранилища Key Value вместо GoLang? Я стремлюсь к производительности KeyValue, Globally Distributed.
Да, с помощью Yugabyte DB вы можете добиться высокопроизводительного глобально распределенного развертывания по принципу «ключ-значение». Вы можете увидеть пример глобально распределенного развертывания здесь. а>.
Как я понял скорость записи падает с каждой дополнительной реплицируемой нодой. Это правильно? Можно ли вместо этого предпочесть скорость и вместо этого иметь в конечном итоге согласованную модель для всех узлов?
Как правило, да, задержка увеличивается с коэффициентом репликации. Фактор репликации в первую очередь предназначен для повышения отказоустойчивости, но похоже, что вы хотите обслуживать операции чтения рядом с конечным пользователем. В этом сценарии у вас есть два варианта:
Реплики чтения — это доступное только для чтения расширение основных данных в кластере. В этом сценарии первичные данные кластера развертываются в нескольких зонах в одном регионе или в соседних регионах. Реплики чтения не увеличивают задержки записи, поскольку запись не реплицирует данные в них синхронно — данные реплицируются для реплик чтения асинхронно. Вы можете писать в реплику, но запись будет внутренне перенаправлена на источник правды.
Развертывания с несколькими мастерами в настоящее время выпускаются как часть нашей бета-версии 2.0. Эта функция позволяет независимым кластерам реплицироваться друг в друга с семантикой выигрывает последний писатель. Вот подробный проектный документ о развертывании с несколькими мастерами.
Предполагая, что вам нужны глобальные чтения и один кластер, я думаю, реплики чтения могут быть тем, что вы ищете.
Поэтому нам нужен уровень аутентификации на сервере между YugaByte и клиентом, в идеале этот уровень должен обеспечивать ту же абстракцию, которую мы сейчас написали в Go.
Да, Yugabyte DB поддерживает аутентификацию и RBAC для авторизации в клиентских драйверах Go.
Как насчет балансировки нагрузки между узлами, направляющими запросы к ближайшему географическому местоположению?
API YCQL в настоящее время поддерживает чтение из ближайшего географического региона, поэтому вы уже должны легко добиться этого. API YCQL является полуреляционным, но для приложений с ключом и значением этого должно хватить!
Надеюсь, что это поможет, и дайте мне знать, если у вас есть дополнительные вопросы!
person
Karthik Ranganathan
schedule
16.09.2019