Highload-2023: Отчёт Виталия Филиппова — различия между версиями

Материал из YourcmcWiki
Перейти к: навигация, поиск
Строка 13: Строка 13:
 
== Барсик ==
 
== Барсик ==
  
BARSiC — асинхронная репликация и консенсус для 70 баз данных.
+
'''Григорий Бутейко (VK, ВКонтакте) — BARSiC — асинхронная репликация и консенсус для 70 баз данных.'''
  
Хрень какая-то, честно говоря. Технических деталей было крайне мало, просто общая мысль - вот, им ничего готовое не подошло, Raft они почему-то сочли слишком сложным, поэтому сделали всё сами и на основе другого протокола - Viewstamped Replication аж от целой Бабы Лизы... то есть Барбары Лисков.
+
Помните, я же написал выше, что конфа — торжество велосипедов. Вот, это велосипед №1, прямо с открытия.
  
Я раньше про этот протокол вообще не слышал, уже после конфы почитал - так вот, '''ОНО ВООБЩЕ НЕ ОТЛИЧАЕТСЯ ОТ RAFT-а''', точнее, отличается, но в худшую сторону - оно '''СЛОЖНЕЕ'''! 10 типов сообщений вместо 4-х у Raft-а.
+
Полная фигня, 100 полуляхов из 250. Технических деталей работы алгоритма в докладе было крайне мало, просто общая мысль — вот, им ничего готовое не подошло, Raft они почему-то сочли слишком сложным (Raft, сложным?!), поэтому сделали всё сами и на основе другого протокола — Viewstamped Replication аж от целой Бабы Лизы… то есть Барбары Лисков.
 +
 
 +
Я раньше про этот протокол вообще не слышал, уже после конфы почитал — так вот, архитектурно '''ОНО ВООБЩЕ НЕ ОТЛИЧАЕТСЯ ОТ RAFT-а''' — единственное реальное отличие — это то, что ноды голосуют не за первого заявившегося кандидата, а за кандидата с минимальным ID (IP-адресом). Всё остальное практически идентично, Raft Term = VR View и так далее. Плюс есть небольшое отличие не смысловое, а именно в особенностях реализации, но оно не в пользу VR — VR тупо сложнее, например, там 10 типов сообщений вместо 4-х у Raft-а.
  
 
{{WikiCutBegin|Развёрнутое объяснение под катом, взял [https://groups.google.com/g/raft-dev/c/cBNLTZT2q8o отсюда]}}
 
{{WikiCutBegin|Развёрнутое объяснение под катом, взял [https://groups.google.com/g/raft-dev/c/cBNLTZT2q8o отсюда]}}
Строка 25: Строка 27:
 
paid less attention to Paxos and more to VR.
 
paid less attention to Paxos and more to VR.
  
You're right, Heidi, that Raft and VR/VRR are similar, and we
+
You’re right, Heidi, that Raft and VR/VRR are similar, and we
 
acknowledge this in the first page of the paper.
 
acknowledge this in the first page of the paper.
  
At a high level, you could argue they're exactly the same. Lamport
+
At a high level, you could argue they’re exactly the same. Lamport
 
would probably call them both Paxos. Their messaging pattern is
 
would probably call them both Paxos. Their messaging pattern is
 
similar. Why they work is similar, and their proofs of correctness
 
similar. Why they work is similar, and their proofs of correctness
 
could be similar.
 
could be similar.
  
At a low level, you could argue they're very different. Raft's
+
At a low level, you could argue they’re very different. Raft’s
 
mechanism is compact (VRR uses 10 message types where Raft uses 4 to
 
mechanism is compact (VRR uses 10 message types where Raft uses 4 to
 
accomplish the same tasks). Raft spells out how to do leader election
 
accomplish the same tasks). Raft spells out how to do leader election
Строка 40: Строка 42:
 
And of course membership changes are entirely different.
 
And of course membership changes are entirely different.
  
Now (2015), there's a huge difference in completeness. Raft has
+
Now (2015), there’s a huge difference in completeness. Raft has
 
several implementations including membership changes and log
 
several implementations including membership changes and log
 
compaction, some evaluation, a proof or two, my dissertation (a lot of
 
compaction, some evaluation, a proof or two, my dissertation (a lot of
 
discussion about design choices), and many online resources to help
 
discussion about design choices), and many online resources to help
people learn. I don't think VR/VRR is competitive with any of that
+
people learn. I don’t think VR/VRR is competitive with any of that
currently. For example, I just searched GitHub for "Viewstamped
+
currently. For example, I just searched GitHub for «Viewstamped
Replication" and found only one project; searching "VRR" yields noise.  
+
Replication» and found only one project; searching «VRR» yields noise.
  
Paper-wise, I'm biased, but I think the Raft paper is more accessible
+
Paper-wise, I’m biased, but I think the Raft paper is more accessible
to beginners. That's because the Raft paper explains the why, and the
+
to beginners. That’s because the Raft paper explains the why, and the
 
VRR paper just tells you the what.
 
VRR paper just tells you the what.
  
Строка 55: Строка 57:
 
better than in VRR. I discuss this in the related work in my
 
better than in VRR. I discuss this in the related work in my
 
dissertation. The original VR has the view manager tell the new leader
 
dissertation. The original VR has the view manager tell the new leader
to start, yes, but it doesn't have to transmit any log entries. And I
+
to start, yes, but it doesn’t have to transmit any log entries. And I
still don't feel great about the leader being a function of the view
+
still don’t feel great about the leader being a function of the view
 
(term) number. It feels misleading, since of course different servers
 
(term) number. It feels misleading, since of course different servers
 
might be in different views, especially during leader changes. But I
 
might be in different views, especially during leader changes. But I
haven't implemented or evaluated that approach.
+
haven’t implemented or evaluated that approach.
  
We (John and I) actually didn't know about the VRR paper until after
+
We (John and I) actually didn’t know about the VRR paper until after
 
we had started Raft. I think the earliest time someone mentioned it to
 
we had started Raft. I think the earliest time someone mentioned it to
 
us was three days before our first paper submission on Raft, in
 
us was three days before our first paper submission on Raft, in
 
September 2012, buried in an email with a bunch of other pointers.
 
September 2012, buried in an email with a bunch of other pointers.
 
Would we have used VRR instead of creating Raft if we knew abut it in
 
Would we have used VRR instead of creating Raft if we knew abut it in
time? I'm not sure, but it definitely would have been a better
+
time? I’m not sure, but it definitely would have been a better
 
starting point for us.
 
starting point for us.
  
 
Know of any performance evaluation between these two protocols? Nope.
 
Know of any performance evaluation between these two protocols? Nope.
Normal-case operation would be the same, so you'd probably have to
+
Normal-case operation would be the same, so you’d probably have to
 
compare leader changes. And I feel like that depends on the details of
 
compare leader changes. And I feel like that depends on the details of
how you "optimize" VRR, so I don't know if it'd be apples-to-apples.
+
how you «optimize» VRR, so I don’t know if it’d be apples-to-apples.
 +
 
 +
Hope I haven’t offended anyone, and hope this helps,
 +
Diego
 +
{{WikiCutEnd}}
 +
 
 +
Причём аргументы, согласно которым им не подошли готовые решения, меня лично вообще не убедили. Какое-то расхождение данных и метаданных при использовании внешнего сервиса консенсуса… не, ну писать просто надо нормально, что значит — расхождение. Я же юзаю etcd в Vitastor, брат жив. Ну ладно я, ещё пример — TiDB юзает встраиваемый etcd, брат тоже жив. Всё ещё мало? Patroni/Stolon испокон веков юзают Consul/etcd — и тоже все довольны.
  
Hope I haven't offended anyone, and hope this helps,
+
Хоть бы исходники открыли, ё-моё, хоть какая-то польза была бы от этого барсика. А то ну написали тесты, ну пофаззили, ну дополнительно верифицировали на TLA+, ну молодцы. Но какой во всём этом толк, если рядом лежит штук 10 «вот таких же, только меньше, но других», тоже хорошо оттестированных за годы Raft-ов…
Diego
+
{{WikiCutEnd}}.
+
  
 
== Оптимизации Go ==
 
== Оптимизации Go ==

Версия 23:42, 29 ноября 2023

Как я уже писал в прошлогоднем отчёте - самая крупная и раскрученная конференция Бунина. Финальная стоимость выросла уже аж до 64 тыр с 60, то есть годовая инфляция по версии Онтико в этот раз составила 6.66 %. :-)

Общее впечатление: Неплохо - "торжество велосипедов" в докладах, всё как мы любим, но перегруженно. Слишком много народу на эту площадку.

Реально, 3750 человек в Сколково, в котором и проходила конференция - это перебор. Если чуть более, чем средне-интересный доклад шёл в любом зале, кроме самого большого "Конгресс-холла" - сесть там было невозможно. Они пытались организовывать какие-то "расширительные бачки" в виде ретрансляций докладов рядом с залами, но это было бесполезно, ибо организовывали не прямо в коридоре, а в маленьких отдельных комнатушках. Какой толк от расширительного бачка на 10 человек, когда не влезло 50...

Второй момент - совершенно упоротая топология здания. Поиск нужного зала каждый раз превращался в квест: сначала надо попытаться понять по карте, где ты находишься, решить, в какую сторону идти и с какой стороны всё обходить, а потом ещё иногда искать отдельные лестницы на второй этаж для прохода в некоторые залы (просто подняться в произвольном месте недостаточно). При этом везде столики, стенды, толпы, поэтому даже образовывались заторы и проходы становились полудуплексными. Даже в сортирах был хайлоад. Явно не хватало процессоров на все... потоки.

При этом ещё и 11 параллельных залов. Я даже пожалел, что не заявил какую-нибудь хрень на опенсорс-трек - там такую фигню рассказывали, что я бы точно смог не хуже. Не, сама идея опенсорс-трека неплохая, но доклады бестолковые, хорошо демонстрируют механистический подход к опенсорсу: одни рассказывают, что опенсорс это хорошо, потому что признание сообщества, розовые пони и вообще, а вторые - что они попробовали давать по 100$ рандомным разработчикам модулей питона раз в неделю, и профита не обнаружили, но будут ещё пробовать. А третьи вообще вместо рассказа, КАК же они пилят этот самый опенсорс, рассказывают, что они его закрывают и продают как сборник произведений по ГК РФ - это очень важная и интересная информация, которой, конечно, до этого не было ни на одной конференции (тро-ло-ло).

День 1

Барсик

Григорий Бутейко (VK, ВКонтакте) — BARSiC — асинхронная репликация и консенсус для 70 баз данных.

Помните, я же написал выше, что конфа — торжество велосипедов. Вот, это велосипед №1, прямо с открытия.

Полная фигня, 100 полуляхов из 250. Технических деталей работы алгоритма в докладе было крайне мало, просто общая мысль — вот, им ничего готовое не подошло, Raft они почему-то сочли слишком сложным (Raft, сложным?!), поэтому сделали всё сами и на основе другого протокола — Viewstamped Replication аж от целой Бабы Лизы… то есть Барбары Лисков.

Я раньше про этот протокол вообще не слышал, уже после конфы почитал — так вот, архитектурно ОНО ВООБЩЕ НЕ ОТЛИЧАЕТСЯ ОТ RAFT-а — единственное реальное отличие — это то, что ноды голосуют не за первого заявившегося кандидата, а за кандидата с минимальным ID (IP-адресом). Всё остальное практически идентично, Raft Term = VR View и так далее. Плюс есть небольшое отличие не смысловое, а именно в особенностях реализации, но оно не в пользу VR — VR тупо сложнее, например, там 10 типов сообщений вместо 4-х у Raft-а.

Причём аргументы, согласно которым им не подошли готовые решения, меня лично вообще не убедили. Какое-то расхождение данных и метаданных при использовании внешнего сервиса консенсуса… не, ну писать просто надо нормально, что значит — расхождение. Я же юзаю etcd в Vitastor, брат жив. Ну ладно я, ещё пример — TiDB юзает встраиваемый etcd, брат тоже жив. Всё ещё мало? Patroni/Stolon испокон веков юзают Consul/etcd — и тоже все довольны.

Хоть бы исходники открыли, ё-моё, хоть какая-то польза была бы от этого барсика. А то ну написали тесты, ну пофаззили, ну дополнительно верифицировали на TLA+, ну молодцы. Но какой во всём этом толк, если рядом лежит штук 10 «вот таких же, только меньше, но других», тоже хорошо оттестированных за годы Raft-ов…

Оптимизации Go

Опенсорс от девушки из Apache Ignite

"Сообщества вокруг технологии: почему быть бесплатным недостаточно"

Дата скетчи

Yandex S3

Неудачный опенсорс от бодишопа

Перила

День 2

Шардирование: с нуля до Яндекс Диска

Реконсиляция от Меликова

Хадуп в облаке

Петабайт в УДБ на ХДД

Как разрабатывается опенсорс в АЛЬТ

(никак...)

SQL-регэкспы (MATCH_RECOGNIZE)

Нагрузка или задержка?

Устройство индексов в почте mail.ru

Вот наконец и третья часть архитектуры mail.ru. Но вот эту часть — можно я не буду у себя нигде повторять, можно же, правда? :-)

Велосипед от Тинькова (SAGE DB)

PATCH в S3