Amazon’s Highly Available Key-value Store
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Amazon’s Highly Available Key-value Store
Меня еще в одном месте удивил вопрос про размер микросервиса в килобайтах. Даже тебе не в гигабайтах, а в килобайтах . Спрашиваю, а почему это так важно ? А вот де AWS чарджит столько что мало не покажется. Что неужели все так плохо и критично ? У нас один из умнейших коллег с прошлой работы ушел в Амазон и написал следующие слова: " I am very depressed that I wasted so many years in ... surrounded by idiots and politics and being forced to write and support garbage while other engineers at places like Amazon, Apple, Google are inventing new technologies. "
Так что же получается это все за наш счет ? В смысле что нам теперь как хочешь - но напиши микросервисы чтобы все не больше среднего и по пять копеек ?
Так что же получается это все за наш счет ? В смысле что нам теперь как хочешь - но напиши микросервисы чтобы все не больше среднего и по пять копеек ?
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Amazon’s Highly Available Key-value Store
Я так поинмаю можно просто шпарить по спискуСабина wrote: best practices and pitfalls of building software on top of AWS
http://12factor.net/" onclick="window.open(this.href);return false;
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 8632
- Joined: 22 Mar 2011 01:40
Re: Amazon’s Highly Available Key-value Store
Представьте, что Вам нужно сделать машину, которая не просто будет ездить хуже/лучше по сравнeнию с другими, а которая проезжает США за 5 часов. От побережья до побережья. Потому, что за 6, 7, etc уже не надо. Совсем. И тогда вам уже без разницы сделана машина из желeза от банок для пива или уникальной смеси вольфрама-с-жигулевским. Другое, дело, что за 5 часов кост-ту-кост не всем надо. А если надо, то тогда монго выкидывается и покупается аэроспайк.valchkou wrote:Ув Леонид Ильич, не удачное сравнение.Леонид Ильич Брежнев wrote:Монго проигрывал, например, Аэроспайку еще год - два назад, как Москвич 401 современному мерседесу.valchkou wrote:Ставлю на .... Mongo в перспективе 5 лет.
Мерседес получше и нынешней лады, а народ в россии почемуто за ладу голосует ногами.
На рынке не всегда властвует тот у кого продукт лучше.
Есть еще такие показатели как community, Q&A на stackoverflow, production installations, (цена иногда).
Вот риак за кое что хочет денег, не важно за что, но где гарантия что ценовая политика не изменится,
как у GoogleAppEngine, спустя 3 года. Или тот же Аэроспайк, попробуйте найти ресурс на рынке с опытом Аэроспайк vs Монго.
Я тут не пытаюсь доказать какая бд лучше. Основной показатель лично для меня это рынок работ и зарплат.
Last edited by Леонид Ильич Брежнев on 28 May 2015 03:58, edited 1 time in total.
-
- Уже с Приветом
- Posts: 8632
- Joined: 22 Mar 2011 01:40
Re: Amazon’s Highly Available Key-value Store
Кассандру можно отрегулировать от eventual consistence до strong consistence. A когда читаю МЛ, я как раз (гибкость в этом плане) кассандры и привожу в пример.kostik78 wrote:Casandra не потдерживает siblings и только стратегия LWW.
-
- Уже с Приветом
- Posts: 8632
- Joined: 22 Mar 2011 01:40
Re: Amazon’s Highly Available Key-value Store
Проблема скорее cross ring трафик (дорого и долго), чем сама по себе функциональность.kostik78 wrote:По поводу multi-dc в cassandra все не так гладко, но так как я ее не использовал не буду дальше голословить. Мое понятие базируется на фитбеке знакомых которые cassandra активно юзают.
Внутри одного рэка, грубо говоря, два "логических" DC будут функционировать не хуже чем если бы это был один DC.
-
- Уже с Приветом
- Posts: 8632
- Joined: 22 Mar 2011 01:40
Re: Amazon’s Highly Available Key-value Store
Понятное дело, что и Амазон и любой иной WS заинтерсован, что бы трафика ходилo меньше. Это и деньги и нагрузка на web server (отрытые ресурсы). У тех из AWS, кто провайдит данные (а не исполнение) есть обычно ограничения, например у SimpleDB он был, если мне не изменяет память 1 мег на максимум размера страницы ответа.Сабина wrote:Меня еще в одном месте удивил вопрос про размер микросервиса в килобайтах. Даже тебе не в гигабайтах, а в килобайтах . Спрашиваю, а почему это так важно ? А вот де AWS чарджит столько что мало не покажется. Что неужели все так плохо и критично ? У нас один из умнейших коллег с прошлой работы ушел в Амазон и написал следующие слова: " I am very depressed that I wasted so many years in ... surrounded by idiots and politics and being forced to write and support garbage while other engineers at places like Amazon, Apple, Google are inventing new technologies. "
Так что же получается это все за наш счет ? В смысле что нам теперь как хочешь - но напиши микросервисы чтобы все не больше среднего и по пять копеек ?
p.s. при чем тут правда микросервисы?
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Amazon’s Highly Available Key-value Store
Как я уже написал выше - siblings и eventual/strong consistency мягко говоря не совсем одно и тожеЛеонид Ильич Брежнев wrote: Кассандру можно отрегулировать от eventual consistence до strong consistence. A когда читаю МЛ, я как раз (гибкость в этом плане) кассандры и привожу в пример.
То есть Вы говорите что в случае deploy on multisite ring будет шариться между обоими DC? бррр, надеюсь хоть там используется fast paxos или raft. И если то что я написал выше про read will fail when cluster is unstable как то выглядит совсем кисло Или я что-то пропускаю ?Леонид Ильич Брежнев wrote: Проблема скорее cross ring трафик (дорого и долго), чем сама по себе функциональность.
Внутри одного рэка, грубо говоря, два "логических" DC будут функционировать не хуже чем если бы это был один DC.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Amazon’s Highly Available Key-value Store
просто речь шла о микросервисах и товарищ волновался что если один апп расщепить на много микросервисов - хостить в облаке влетит в копеечку. Но я перый раз слышу чтобы размер of deployed app так досконально и скрупулезно мерялсяЛеонид Ильич Брежнев wrote: Понятное дело, что и Амазон и любой иной WS заинтерсован, что бы трафика ходилo меньше. Это и деньги и нагрузка на web server (отрытые ресурсы). У тех из AWS, кто провайдит данные (а не исполнение) есть обычно ограничения, например у SimpleDB он был, если мне не изменяет память 1 мег на максимум размера страницы ответа.
p.s. при чем тут правда микросервисы?
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 8632
- Joined: 22 Mar 2011 01:40
Re: Amazon’s Highly Available Key-value Store
Да, я видел, сиблинка в Кассандре нету, их схема в этом плане проще. В остальном Кассандра безусловно tunable от ничего не гарантируем до "вот тебе крест". У кассандры есть регулировка избыточности, так что при определенном уровне падения она будет гарантировать и read и write, но если продолжать падать то только write, a пором уже и вовсе ничего . Это нам на Политбюро приходили рассказывали.kostik78 wrote:Как я уже написал выше - siblings и eventual/strong consistency мягко говоря не совсем одно и тоже
То есть Вы говорите что в случае deploy on multisite ring будет шариться между обоими DC? бррр, надеюсь хоть там используется fast paxos или raft. И если то что я написал выше про read will fail when cluster is unstable как то выглядит совсем кисло Или я что-то пропускаю ?
Что касается второго вопроса, то возможно мы понимаем задачу по разному, но чудес ведь не бывает, если есть cross ring traffic: primary DC у Политбюро в Москве, а secondary DC на Камчатке. И если read/write идут только в Москву, то делать репликациюи Москва => Камчатка (в одну сторону) всегда будет проблемой для высоконагруженных систем. Решений два: либо мы позволяем read/write и в Москве и на Камчатке с минимальной репликацией Москва <=> Камчатка (плохо, но как вариант), либо делаем как в AWS, ring в Москве - это ring в Москве (Кремль, Дом Правительства, Совет Федерации), a ring на Камчатке - это ring на Камчатке (сопка раз, сопка два, сопка три). Ринги друг к другу отнощения не имеют, реплицируются строго внутри себя.
-
- Уже с Приветом
- Posts: 8632
- Joined: 22 Mar 2011 01:40
Re: Amazon’s Highly Available Key-value Store
Я не очень понимаю, что такое микросервис по отношению к Амазона.Сабина wrote:просто речь шла о микросервисах и товарищ волновался что если один апп расщепить на много микросервисов - хостить в облаке влетит в копеечку. Но я перый раз слышу чтобы размер of deployed app так досконально и скрупулезно мерялсяЛеонид Ильич Брежнев wrote: p.s. при чем тут правда микросервисы?
Ну кроме советского, не цензурного, простите анекдота:
Встретились двое. Один обращается к другому:
- Федя, ты слышал, что люди говорят? Доллар-то падает!
- Вася! Да чтобы у тебя х....й так стоял, как он падает.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Amazon’s Highly Available Key-value Store
А я то что с этим сделаю ?Леонид Ильич Брежнев wrote: Я не очень понимаю, что такое микросервис по отношению к Амазона.
Своими словами не донесла, видеоквоты СТО Амазона тоже не помогли. Как мне еще обьяснять ?
Ну вот идете вы на страничку, выбираете товар и жмете кнопицу, а на бакенде в это время сотни микросервисов шуруют.
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 8632
- Joined: 22 Mar 2011 01:40
Re: Amazon’s Highly Available Key-value Store
Сабина wrote:Ну вот идете вы на страничку, выбираете товар и жмете кнопицу, а на бакенде в это время сотни микросервисов шуруют.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Amazon’s Highly Available Key-value Store
Кстати для всех не любителей noSQL, вот пример из соседнего раздела of a very high throughput scalable системы построенной на Postgres
https://blog.cloudflare.com/scaling-out ... g-citusdb/" onclick="window.open(this.href);return false;
Конечно подходит под специфичные нужды как обычно, но use case в общем то распространенный. Citus DB is the keyword.
Всё равно джойны надо убирать по возможности, архитектуру менять в сторону декаплинга и денормализации, но можно и two phase commit если очень охота
Тут все подробно рассказывают и показывают - https://www.youtube.com/watch?v=mbXPbLjiYTI" onclick="window.open(this.href);return false;
https://blog.cloudflare.com/scaling-out ... g-citusdb/" onclick="window.open(this.href);return false;
Конечно подходит под специфичные нужды как обычно, но use case в общем то распространенный. Citus DB is the keyword.
Всё равно джойны надо убирать по возможности, архитектуру менять в сторону декаплинга и денормализации, но можно и two phase commit если очень охота
Тут все подробно рассказывают и показывают - https://www.youtube.com/watch?v=mbXPbLjiYTI" onclick="window.open(this.href);return false;
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Amazon’s Highly Available Key-value Store
Нее ... погодите что-то тут не сходиться. Давай те на кошечках Представим что у нас 3 сервера и ring распределен так (раcсматриваем только primary replicas)Леонид Ильич Брежнев wrote:У кассандры есть регулировка избыточности, так что при определенном уровне падения она будет гарантировать и read и write, но если продолжать падать то только write, a пором уже и вовсе ничего . Это нам на Политбюро приходили рассказывали.
server 1 - ring part A
server 2 - ring part B
server 3 - ring part C
Насколько я понял из приведенного мной фрагмента сравнения Riak and Cassandra в случае выпадания server 1 из кластера, Cassandra будет отклонять чтения данных которые являются частью ring part A, part B & C останутся не тронутыми. Я правильно понял или нет? Если все так, то мой комент про существенные ограничения которые нужно учитывать остается в силе, иначе нет
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Amazon’s Highly Available Key-value Store
При некоторых настройках consistency - да.kostik78 wrote: Вот тут такое на cassandra брешут. Это правда ?In the event of server failures and network problems, Riak is designed to always accept read and write requests, even if the servers that are ordinarily responsible for that data are unavailable.
Cassandra will allow writes to (optionally) be stored on alternative servers, but will not allow that data to be retrieved. Only after the cluster is repaired and those writes are handed off to an appropriate replica server (with the potential data loss that timestamp-based conflict resolution implies, as discussed earlier) will the data that was written be available to readers.
важно понимать что write request попросту ставится в очередь, сам write не случается, потому и данные недоступны.
Это как раз особенность кассандры что она не держит данных где попало,
так как в кассандре Data Replication & Data Distribution - это одно и то же.
потому стоит внимательно подойти к конфигурации кластера, чтобы минимизировать риск таких ситуаций.
Допустим у нас 3 Nodes и ReplicationFactor=3 (каждая нода держит копию)
Как будет работать write с разным Consistency:
СL: ALL - all 3 nodes should reply success. - если хоть одна из 3-х недоступна write fails
CL: QUORUM - 2 nodes should reply success - 2 из 3х должны быть доступны
CL: ONE - 1 nodes should reply success
CL: ANY - 1 любая. Для данного случая сработает вышеупомянутый hinted handoff.
А теперь допустим одна из нод недоступна и запись прошла с CL: QUORUM. 2 копии успешно сохранены.
Допустим эти данные считывают 2 клиента.
Один считывает с consistency QUORUM или ниже, а другой ALL.
Так вот тот который ALL - данных не получит, несмотря на то что 2 копии имеются в БД
Конечно все это нужно учитывать.
NoSQL вообще желательно сначала изучить инструмент досконально и понять насколько он подходит под требования,
прежде чем его использовать. К сожалению у руководства не всегда есть желание выделить ресурсы на изучение, прототипы.
Ув Леонид Ильич, согласен с тобой полностью, когда есть жесткие требования, с ограниченым бюджетом, то задача по выбору правильного инструмента упрощается.Леонид Ильич Брежнев wrote: Представьте, что Вам нужно сделать машину, которая не просто будет ездить хуже/лучше по сравнeнию с другими, а которая проезжает США за 5 часов. тогда монго выкидывается и покупается аэроспайк.
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Amazon’s Highly Available Key-value Store
Если это работает так как Вы указали то поведение эквивалентно Riak. Нужно мне тут поразбираться, потому что Basho говорит что это не так, да и знакомые говорят что не так. Говориться что Cassandra не даст читать сегмент данных если primary replica для которых недоступна.valchkou wrote: ...
А теперь допустим одна из нод недоступна и запись прошла с CL: QUORUM. 2 копии успешно сохранены.
Допустим эти данные считывают 2 клиента.
Один считывает с consistency QUORUM или ниже, а другой ALL.
Так вот тот который ALL - данных не получит, несмотря на то что 2 копии имеются в БД
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Amazon’s Highly Available Key-value Store
У Cassandra нет понятия primary replica. Все реплики равноценны и все primary, а все ноды - мастер.kostik78 wrote: Если это работает так как Вы указали то поведение эквивалентно Riak. Нужно мне тут поразбираться, потому что Basho говорит что это не так, да и знакомые говорят что не так. Говориться что Cassandra не даст читать сегмент данных если primary replica для которых недоступна.
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Amazon’s Highly Available Key-value Store
Что-то мне подсказывает после Вашего ответа что Вы недоконца понимаете как работает ringvalchkou wrote: У Cassandra нет понятия primary replica. Все реплики равноценны и все primary, а все ноды - мастер.
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Amazon’s Highly Available Key-value Store
спешу заверить, что понимаю в контексте кассандры, но возможно мы о несколько разных вещах говорим.kostik78 wrote:Что-то мне подсказывает после Вашего ответа что Вы недоконца понимаете как работает ringvalchkou wrote: У Cassandra нет понятия primary replica. Все реплики равноценны и все primary, а все ноды - мастер.
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Amazon’s Highly Available Key-value Store
Агааа... то бишь все тоже самое что и в Riak http://www.datastax.com/dev/blog/modern-hinted-handoff" onclick="window.open(this.href);return false;valchkou wrote: спешу заверить, что понимаю в контексте кассандры, но возможно мы о несколько разных вещах говорим.
Разница только в одном как сделана MDC. В Riak это независимые кольца, в Cassandra шареный. То бишь в MDC деплойменте время реакции на failure в Cassandra выше и потенциальный data loss при eventual consistency ввиду отсутсвия siblings. Теперь понятно стало
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Amazon’s Highly Available Key-value Store
Я тут учу что и Кассандра и Риак - они оба АР из САР теоремы . Получается один ограниченнее другого но по сути похоже?kostik78 wrote:Насколько я понял из приведенного мной фрагмента сравнения Riak and Cassandra в случае выпадания server 1 из кластера, Cassandra будет отклонять чтения данных которые являются частью ring part A, part B & C останутся не тронутыми. Я правильно понял или нет? Если все так, то мой комент про существенные ограничения которые нужно учитывать остается в силе, иначе нет
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Amazon’s Highly Available Key-value Store
Да нее ... разобрались уже ... одно и тоже почти одно и тоже. В Riak есть siblingsСабина wrote: Я тут учу что и Кассандра и Риак - они оба АР из САР теоремы . Получается один ограниченнее другого но по сути похоже?
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Amazon’s Highly Available Key-value Store
разница в том как данные представлены.kostik78 wrote:Да нее ... разобрались уже ... одно и тожеСабина wrote: Я тут учу что и Кассандра и Риак - они оба АР из САР теоремы . Получается один ограниченнее другого но по сути похоже?
Cassandra - column based and requires schema like in RDBMS
Riak - document based, like MongoDB
+- различные фишки.
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Amazon’s Highly Available Key-value Store
исходя из вышеупомянутого есть огромная разница в UPDATEvalchkou wrote:разница в том как данные представлены.kostik78 wrote:Да нее ... разобрались уже ... одно и тожеСабина wrote: Я тут учу что и Кассандра и Риак - они оба АР из САР теоремы . Получается один ограниченнее другого но по сути похоже?
Cassandra - column based and requires schema like in RDBMS
Riak - document based, like MongoDB
+- различные фишки.
Допустим у нас есть объект Person{id, name, phones[] }
Riak follow a read-modify-write cycle when performing updates.
примерно так
Code: Select all
person = bucket.get(id)
person.age = 15
person.name = "kostik78"
person.phones = [123]
person.store()
// change name
person = bucket.get(id)
person.name = "valchkou"
person.store()
// add phone
person = bucket.get(id)
person.phones = [123, 456]
person.store()
Cassandra не требуется считывать объект прежде чем его модифицировать, так же можно менять индивидуальные проперти.
Приведу пример с mapper + СQL для наглядности.
Code: Select all
Person person = mapper.get(Person.class, id); CQL: select * from person where id =id
person.age = 15
person.name = "kostik78"
person.phones = [123]
mapper.save(person) CQL: update person set age=15 ... where id=id
// change name. No reads before write
mapper.setValue(id, Person.class, ''name", "valchkou")
CQL: update person set name='valchkou' where id=id
// add phone
mapper.append(id, Person.class, 'phones', "345")
CQL: update person set phones = phones+'345' where id=id
-
- Новичок
- Posts: 66
- Joined: 04 Mar 2012 10:35
Re: Amazon’s Highly Available Key-value Store
2k read requests - это как-то не очень много... Для Cassandra это даже на разминку не тянет. Хотя конечно зависит от типа запросов...kostik78 wrote: На самом деле есть прекрасный опен соупс проект который был создан на основе dinamo - Riak. Написан прекрасной командой из basho(некоторых лично знаю). Продукт довольно стабильный и комьюнити сильное. У нас он пашет тоже только в путь - 2k read requests per server. 32 servers in cluster.
Соглашусь с обсуждением выше что Riak DB & Cassandra имеют очень схожую архитектуру и функциональность. К нам в контору приходили представители и тех и других, и надо сказать Cassandra team выглядела гораздо уверенней и солиднее. На прямой вопрос про преимущество Riak по сравнению с Cassandra толком ничего не было сказано, кроме как легкость администрирования. Так же смущает отсутствие хороших бенчмарков Riak, да и развивается C* гораздо активнее. Сравнить в продакшин к сожалению не было возможности, работаем пока только с Cassandra и Hadoop.