Raft Consensus Algorithm
В мире распределённых систем, где надежность и согласованность данных критически важны и для этого есть популярный алгоритм Raft.
🙉 Что такое Raft?
Raft — это алгоритм, разработанный для достижения согласия между несколькими серверами в распределённой системе. Он упрощает процесс выбора лидера и управления состоянием системы, делая его более понятным по сравнению с другими алгоритмами, такими как Paxos. Raft спроектирован с учётом возможных сбоев. Если Leader выходит из строя, система быстро выбирает нового Leader, что обеспечивает высокую доступность и надёжность.
Основные компоненты Raft
➡️ Leader и Followers
В Raft серверы делятся на Leader и Followers. Leader координирует действия и обрабатывает команды от клиентов, а Followers следуют указаниям лидера.
➡️ Выбор Leader
Когда система запускается, происходит выбор лидера. Если текущий Leader не отвечает, Followers могут инициировать новый выбор. Это напоминает демократические выборы, где каждый голос важен.
➡️ Логи
Каждый сервер ведёт лог операций. Leader принимает команды от клиентов, добавляет их в свой лог и реплицирует эти записи на Followers. Все серверы должны применять команды в одном и том же порядке, чтобы избежать несогласованности.
🙉 Зачем это нужно?
Raft делает сложные вещи понятными. Он упрощает реализацию распределённых систем, что позволяет разработчикам сосредоточиться на бизнес-логике, а не на борьбе с алгоритмическими тонкостями.
📝 Итого
Raft — это не просто алгоритм, а подход к построению надёжных распределённых систем. Если вы хотите создать систему, которая будет устойчива к сбоям и легко понимаема, обратите внимание на Raft. Хоть она и реализована уже во многих местах, но стоит знать что это и как это работает.
📎 Ссылки
- https://habr.com/ru/companies/dododev/articles/469999/
- https://habr.com/ru/companies/otus/articles/793198/
- https://pk.org/417/notes/raft.html
- https://blog.container-solutions.com/raft-explained-part-23-overview-core-protocol
#consensus #raft
💡 Channel | ✏ Chat
В мире распределённых систем, где надежность и согласованность данных критически важны и для этого есть популярный алгоритм Raft.
🙉 Что такое Raft?
Raft — это алгоритм, разработанный для достижения согласия между несколькими серверами в распределённой системе. Он упрощает процесс выбора лидера и управления состоянием системы, делая его более понятным по сравнению с другими алгоритмами, такими как Paxos. Raft спроектирован с учётом возможных сбоев. Если Leader выходит из строя, система быстро выбирает нового Leader, что обеспечивает высокую доступность и надёжность.
Основные компоненты Raft
В Raft серверы делятся на Leader и Followers. Leader координирует действия и обрабатывает команды от клиентов, а Followers следуют указаниям лидера.
Когда система запускается, происходит выбор лидера. Если текущий Leader не отвечает, Followers могут инициировать новый выбор. Это напоминает демократические выборы, где каждый голос важен.
Каждый сервер ведёт лог операций. Leader принимает команды от клиентов, добавляет их в свой лог и реплицирует эти записи на Followers. Все серверы должны применять команды в одном и том же порядке, чтобы избежать несогласованности.
🙉 Зачем это нужно?
Raft делает сложные вещи понятными. Он упрощает реализацию распределённых систем, что позволяет разработчикам сосредоточиться на бизнес-логике, а не на борьбе с алгоритмическими тонкостями.
Raft — это не просто алгоритм, а подход к построению надёжных распределённых систем. Если вы хотите создать систему, которая будет устойчива к сбоям и легко понимаема, обратите внимание на Raft. Хоть она и реализована уже во многих местах, но стоит знать что это и как это работает.
📎 Ссылки
- https://habr.com/ru/companies/dododev/articles/469999/
- https://habr.com/ru/companies/otus/articles/793198/
- https://pk.org/417/notes/raft.html
- https://blog.container-solutions.com/raft-explained-part-23-overview-core-protocol
#consensus #raft
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Discord - это было быстро
Роскомнадзор (РКН) принял это решение 8 октября 2024 года. Люди уже заметили недоступность сервиса, думаю это относится в первую очередь к игровой индустрии, предполагаю что все вернутся обратно в TeamSpeak. Причины отключения нарушения требований местного законодательства.
В итоге люди уже начали искать решения и альтернативные платформы для общения, такие как Zoom или Skype. Я учу английский через Discord 🙉 и преподаватель накануне поменял площадку на Zoom.
#news #discord
💡 Channel | ✏ Chat
Роскомнадзор (РКН) принял это решение 8 октября 2024 года. Люди уже заметили недоступность сервиса, думаю это относится в первую очередь к игровой индустрии, предполагаю что все вернутся обратно в TeamSpeak. Причины отключения нарушения требований местного законодательства.
В итоге люди уже начали искать решения и альтернативные платформы для общения, такие как Zoom или Skype. Я учу английский через Discord 🙉 и преподаватель накануне поменял площадку на Zoom.
#news #discord
Please open Telegram to view this post
VIEW IN TELEGRAM
👀2
Garbage Collector: Large Object Heap
В .NET Core память управляется при помощи нескольких куч (heaps). Они предназначены для оптимизации работы с объектами разных размеров.
Почему есть разделение на SOH и LOH?
➡️ Разделение на SOH и LOH помогает эффективно управлять памятью и оптимизировать работу сборщика мусора
➡️ Мелкие объекты (массивы, строки, небольшие классы) хранятся в SOH, где они могут быть быстро размещены и освобождены. В SOH объекты перемещаются между поколениями (Generation 0, 1 и 2) что позволяет более эффективно управлять памятью.
➡️ Крупные объекты, такие как массивы с большим числом элементов, помещаются в LOH. Порог в 85,000 байт был выбран из-за компромисса производительности и минимального переноса данных.
В LOH крупные объекты не перемещаются между поколениями, как в SOH. Это снижает нагрузку на GC, так как перемещение крупных блоков данных требовало бы значительных ресурсов.
➡️ Разделение на SOH и LOH уменьшает фрагментацию🧐. Крупные объекты занимают отдельное место и не смешиваются с мелкими, что снижает риск создания множества небольших пустых областей в памяти, которые не могут быть использованы для новых больших объектов.
Вспомним что было в предыдущих сериях
❕ Сборка мусора в .NET Core организована по принципу разделения на поколения
LOH в .NET Core считается частью
❕ Сборка мусора для LOH запускается во время сборки
Поскольку LOH управляется как часть Generation 2, очистка памяти в LOH происходит только во время сборки
❕ В отличие от .NET Framework,
❕ .NET Core также поддерживает два режима работы GC:
Для серверных приложений чаще используется
📝 Итого
📎 Ссылка: Microsoft
#NoAI #GC #s01e05
💡 Channel | ✏ Chat
В .NET Core память управляется при помощи нескольких куч (heaps). Они предназначены для оптимизации работы с объектами разных размеров.
Small Object Heap (SOH) — используется для хранения объектов размером до 85,000 байт.Large Object Heap (LOH) — для объектов размером более 85,000 байт.Почему есть разделение на SOH и LOH?
GC. В LOH крупные объекты не перемещаются между поколениями, как в SOH. Это снижает нагрузку на GC, так как перемещение крупных блоков данных требовало бы значительных ресурсов.
Вспомним что было в предыдущих сериях
Generation 0 — для новых объектовGeneration 1 — для объектов, которые пережили одну сборку Generation 0Generation 2 — для объектов с долгим сроком жизни и тех, что пережили несколько сборок.LOH в .NET Core считается частью
Generation 2!!Generation 2Поскольку LOH управляется как часть Generation 2, очистка памяти в LOH происходит только во время сборки
Generation 2. Это происходит реже, чем сборки Generation 0 и Generation 1, что минимизирует влияние на производительность. Это позволяет избежать частых остановок программы (GC pauses) при работе с крупными объектами.Compact Phases для LOH была вручную, команды запускали сборку Generation 2 и LOH что сильно бьёт по перформансу. .NET Core GC делает это автоматически Compact Phases в LOH, если понимает, что фрагментация становится проблемой. Под капотом в .NET Core GC анализирует состояние памяти и принимает решение о том, когда целесообразно выполнять Compact Phases в LOH, основываясь на текущей нагрузке и уровне фрагментации.Server GC и Workstation GC. Для серверных приложений чаще используется
Server GC, который управляет сборкой мусора параллельно на нескольких потоках, у каждого потока свой heap, подходит для большой нагрузки (API). Workstation GC в основном использует один поток для выполнения сборки мусора, оптимизация для GUI приложений.Large Object Heap в .NET Core управляется автоматически GC и поддержка Compact Phase. Разделение на LOH и SOH позволяет эффективно управлять памятью для мелких и крупных объектов, снижая частоту сборок мусора и фрагментацию. 📎 Ссылка: Microsoft
#NoAI #GC #s01e05
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Please open Telegram to view this post
VIEW IN TELEGRAM
Mail Cloud/Yandex cloud не доступены
Всю неделю лихорадит инфраструктуру, сложности с доступом как внутри так и снаружи.
Всё таки кто-то решил в пятницу выложить свои изменения или перенести апдейты системы на выходные. В итоге, обычные люди вроде меня в будние дни заняты работой и в выходных выкраивается время на свои хотелки, а тут говорят тебе облака - расслабься и наслаждайся оффлайн жизнью
💡 Channel | ✏ Chat
Всю неделю лихорадит инфраструктуру, сложности с доступом как внутри так и снаружи.
Всё таки кто-то решил в пятницу выложить свои изменения или перенести апдейты системы на выходные. В итоге, обычные люди вроде меня в будние дни заняты работой и в выходных выкраивается время на свои хотелки, а тут говорят тебе облака - расслабься и наслаждайся оффлайн жизнью
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😎1
Forwarded from STEM: Science & Tech
Процентили. Дискретные и непрерывные процентили.
🇺🇸 Percentiles. Discrete and Continuous Percentiles
🇪🇸 Percentiles. Percentiles Discretos y Continuos
p-th percentile - это значение, ниже которого находится P процентов данных. Например, 90-й процентиль - это значение, ниже которого находится 90% наблюдений.
Для нахождения процентиля данные должны быть отсортированы в порядке возрастания. Процентили делят данные на 100 равных частей.
Важно упомянуть, что процентили бывают дискретными и непрерывными.
→ Непрерывный процентиль
Он может принимать любые значения в пределах диапазона данных, а не только те значения, которые непосредственно присутствуют в наборе данных.
Это позволяет более точно оценивать распределение данных, особенно когда мы хотим найти значение, которое находится между двумя существующими точками данных.
→ Дискретный процентиль
Может принимать значение из набора данных, которое наиболее близко соответствует желаемому проценту.
→ Найдем 90-й непрерывный процентиль для набора данных
Шаг 1. Нам нужен 90-й процентиль, поэтому P = 0.90.
Шаг 2. Исходный датасет: 2, 10, 1, 3, 40, 0
Шаг 3. Сортировка датасета: 0, 1, 2, 3, 10, 40
Шаг 4. Вычисляем позицию процентиля по формуле:
Прибавляем единицу для того, чтобы позиция начинась с индекса = 1, а не 0.
Шаг 5. Применяем линейную интерполяцию. Формула:
Позиция 5.5 находится между 5-й и 6-й точками в отсортированном списке. 5-е значение:
Шаг 6. Таким образом, значение на позиции 5.5, которое является 90-м процентилем для данного набора данных, составляет 25.
‼️ Важно не путать:
- Сам процентиль: 90-й
- Позицию 90-го процентиля в нашем датасете: 5.5
- Значение 90-го непрерывного процентиля в нашем датасете: 25.
Для дискретного процентиля:
поскольку он не использует интерполяцию, мы выбираем ближайшее значение, которое соответствует или превышает позицию 5.5. В данном случае это 6-е значение:
В следующем посте мы посмотрим на то, как процентили применяются в науке.
#math #statistics #computer_science #science
🇺🇸 Percentiles. Discrete and Continuous Percentiles
🇪🇸 Percentiles. Percentiles Discretos y Continuos
p-th percentile - это значение, ниже которого находится P процентов данных. Например, 90-й процентиль - это значение, ниже которого находится 90% наблюдений.
Для нахождения процентиля данные должны быть отсортированы в порядке возрастания. Процентили делят данные на 100 равных частей.
Важно упомянуть, что процентили бывают дискретными и непрерывными.
→ Непрерывный процентиль
Он может принимать любые значения в пределах диапазона данных, а не только те значения, которые непосредственно присутствуют в наборе данных.
Это позволяет более точно оценивать распределение данных, особенно когда мы хотим найти значение, которое находится между двумя существующими точками данных.
→ Дискретный процентиль
Может принимать значение из набора данных, которое наиболее близко соответствует желаемому проценту.
→ Найдем 90-й непрерывный процентиль для набора данных
Шаг 1. Нам нужен 90-й процентиль, поэтому P = 0.90.
Шаг 2. Исходный датасет: 2, 10, 1, 3, 40, 0
Шаг 3. Сортировка датасета: 0, 1, 2, 3, 10, 40
Шаг 4. Вычисляем позицию процентиля по формуле:
(P * (N - 1)) + 1 = 0.90 * (6 - 1) + 1 = 5.5.Прибавляем единицу для того, чтобы позиция начинась с индекса = 1, а не 0.
Шаг 5. Применяем линейную интерполяцию. Формула:
interpolated_value = a + (fraction * (b - a)).Позиция 5.5 находится между 5-й и 6-й точками в отсортированном списке. 5-е значение:
a = 10, а 6-е значение: b = 40, и fraction = 0.5 (дробная часть позиции 5.5).res = 10 + (0.5 * (40 - 10)) = 25.Шаг 6. Таким образом, значение на позиции 5.5, которое является 90-м процентилем для данного набора данных, составляет 25.
‼️ Важно не путать:
- Сам процентиль: 90-й
- Позицию 90-го процентиля в нашем датасете: 5.5
- Значение 90-го непрерывного процентиля в нашем датасете: 25.
Для дискретного процентиля:
поскольку он не использует интерполяцию, мы выбираем ближайшее значение, которое соответствует или превышает позицию 5.5. В данном случае это 6-е значение:
percentile_90 = 40.В следующем посте мы посмотрим на то, как процентили применяются в науке.
#math #statistics #computer_science #science
.NET Core позволяет решить задачи несколькими путями, например вопросы конфигурации проектов.
Вообщем разработчики .NET Core стремились создать гибкую платформу, которая может адаптироваться к любым нуждам и хотелкам. Поэтому конфигурацию можно настраивать через JSON, XML, даже INI файлы, переменные среды, командную строку, базы данных и если вам этого мало вы можете сами сделать свой провайдер. Но лучше посмотреть одно видео😎
#dotnet
📎 Ссылка: YouTube
💡 Channel | ✏ Chat
Вообщем разработчики .NET Core стремились создать гибкую платформу, которая может адаптироваться к любым нуждам и хотелкам. Поэтому конфигурацию можно настраивать через JSON, XML, даже INI файлы, переменные среды, командную строку, базы данных и если вам этого мало вы можете сами сделать свой провайдер. Но лучше посмотреть одно видео
#dotnet
📎 Ссылка: YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
Я только что получил сертификат по английскому языку, но зачем мне всё это нужно?
Когда я только начинал работать в IT, мне казалось, что знание английского это необязательный навык. Поскольку я могу найти документацию на родном языке, а все в команде говорят как бы не по-английски). Чем дальше я продвигался в профессиональной сфере, тем больше понимал, что английский это не просто язык, а ключ к новым возможностям и росту. Плюс к этому стало всё сложнее, потому что я изучал французский, но это уже другая история)
В результате изучение английского языка для меня это не столько про язык, сколько профессиональное развитие, культура и стремление к новым горизонтам. Более того, это не приобретение нового навыка, а способ поддерживать свои профессиональные знания на высоком уровне и стремиться к личностному развитию. Наконец, это часть моего путешествия, направленного на то, чтобы каждый день становиться лучшей версией себя.
#lifestory
💡 Channel | ✏ Chat
Когда я только начинал работать в IT, мне казалось, что знание английского это необязательный навык. Поскольку я могу найти документацию на родном языке, а все в команде говорят как бы не по-английски). Чем дальше я продвигался в профессиональной сфере, тем больше понимал, что английский это не просто язык, а ключ к новым возможностям и росту. Плюс к этому стало всё сложнее, потому что я изучал французский, но это уже другая история)
В результате изучение английского языка для меня это не столько про язык, сколько профессиональное развитие, культура и стремление к новым горизонтам. Более того, это не приобретение нового навыка, а способ поддерживать свои профессиональные знания на высоком уровне и стремиться к личностному развитию. Наконец, это часть моего путешествия, направленного на то, чтобы каждый день становиться лучшей версией себя.
#lifestory
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Retention и анализ, зачем это всё?
Как то я нашел один классный небольшой стартап, который разрабатывал мобильное приложение, идея была огонь, но пользователи быстро отказываются от него после первой недели. Product Analysis в голос говорят про какой то Retention и других много непонятных слов. Пришло время поднимать компетенцию в продакте :)
Вообщем, чтобы понять, что происходит, нужно провести анализ продукта и изучить показатели удержания (retention). С помощью аналитических инструментов выясняется, что пользователи сталкиваются с трудностями на этапе регистрации и не понимают, как использовать основные функции. После внесения изменений и упрощения интерфейса ребята заметили, что удержание пользователей значительно улучшилось. Этот опыт научил разработчиков, что регулярный анализ продукта и внимания к показателям удержания не просто важен, как бы критически необходим для успеха и роста.
В итоге, я наткнулся на отличный доклад, который раскрывает некоторые аспекты Product и как ищутся боли и находятся маркеры ЦА
Разбор кейса: YouTube
#product
💡 Channel | ✏ Chat
Как то я нашел один классный небольшой стартап, который разрабатывал мобильное приложение, идея была огонь, но пользователи быстро отказываются от него после первой недели. Product Analysis в голос говорят про какой то Retention и других много непонятных слов. Пришло время поднимать компетенцию в продакте :)
Вообщем, чтобы понять, что происходит, нужно провести анализ продукта и изучить показатели удержания (retention). С помощью аналитических инструментов выясняется, что пользователи сталкиваются с трудностями на этапе регистрации и не понимают, как использовать основные функции. После внесения изменений и упрощения интерфейса ребята заметили, что удержание пользователей значительно улучшилось. Этот опыт научил разработчиков, что регулярный анализ продукта и внимания к показателям удержания не просто важен, как бы критически необходим для успеха и роста.
В итоге, я наткнулся на отличный доклад, который раскрывает некоторые аспекты Product и как ищутся боли и находятся маркеры ЦА
Разбор кейса: YouTube
#product
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Масштабирование стартапа до миллионов пользователей: баланс технологий и затрат
Всем привет!
Хотел вам сообщить что выступал на конференции, конфа прошла отлично, были интересные вопросы и дискуссии.
Всех прошу прошу посмотреть, что в итоге получилось.
Видео доступно на YouTube
#dev #conference #architecture
💡 Channel | ✏ Chat
Всем привет!
Хотел вам сообщить что выступал на конференции, конфа прошла отлично, были интересные вопросы и дискуссии.
Всех прошу прошу посмотреть, что в итоге получилось.
Видео доступно на YouTube
#dev #conference #architecture
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Масштабирование стартапа до миллионов пользователей
Масштабирование стартапа до миллионов пользователей: баланс технологий и затрат.
Путь начнётся со стартапа, который обслуживает одного пользователя и затем масштабируется до обслуживания 10_000_000. По мере роста приложения будем учитывать масштабируемость…
Путь начнётся со стартапа, который обслуживает одного пользователя и затем масштабируется до обслуживания 10_000_000. По мере роста приложения будем учитывать масштабируемость…
🔥6👏2
AWS Community Day
Прошлая неделя была потрясающей!
Прошел AWS Community Day, и организация события была на высоте — начиная с входа и заканчивая докладами. Были две параллельные секции докладов, а также воркшопы, которые длились по 2-3 часа. Всё было продуктивно и очень интересно!
Приехали отличные спикеры, готовые поделиться новыми знаниями и ответить на любые вопросы. На конференцию приехали специалисты самых разных направлений: от community managers, advocates и architects до principal engineers и software developers. И тут возникает закономерный вопрос: кто такие эти advocates и principal engineers? Это высококвалифицированные технические специалисты и евангелисты в своей области, один из самых опытных инженеров в AWS. Если говорить проще, это как если бы вы были начинающим певцом и вам выпал шанс пообщаться со звездой, или вы врач в поликлинике и встретили профессионала, которым хотите стать.
Были отличные доклады, начиная от AWS Lambda до Amazon Q (AI). Воркшопы, общение, нетворкинг, встречи с давно знакомыми людьми — всё это создало атмосферу, где можно было одновременно и продуктивно провести время, и насладиться мероприятием.
Приятный бонус: я наконец-то познакомился с Viktor Vedmich, который, между прочим, является Senior Developer Advocate в AWS. Мы вместе работали на семинаре по созданию собственной AI платформы на базе AWS — два часа пролетели незаметно, всё получилось отлично!
После каждой презентации происходили живые обсуждения, инсайты, что делало мероприятие ещё более интересным.
BTW: от работы я, конечно, забыл отпроситься и несколько раз опоздал на митапы из-за этого 🫠.
Места в аудиториях в далеке были заняты, поэтому приходилось садиться в первый ряд и править баги прямо во время докладов. Но утешало то, что я был не один такой на этой конференции))
#aws #conference
💡 Channel | ✏ Chat
Прошлая неделя была потрясающей!
Прошел AWS Community Day, и организация события была на высоте — начиная с входа и заканчивая докладами. Были две параллельные секции докладов, а также воркшопы, которые длились по 2-3 часа. Всё было продуктивно и очень интересно!
Приехали отличные спикеры, готовые поделиться новыми знаниями и ответить на любые вопросы. На конференцию приехали специалисты самых разных направлений: от community managers, advocates и architects до principal engineers и software developers. И тут возникает закономерный вопрос: кто такие эти advocates и principal engineers? Это высококвалифицированные технические специалисты и евангелисты в своей области, один из самых опытных инженеров в AWS. Если говорить проще, это как если бы вы были начинающим певцом и вам выпал шанс пообщаться со звездой, или вы врач в поликлинике и встретили профессионала, которым хотите стать.
Были отличные доклады, начиная от AWS Lambda до Amazon Q (AI). Воркшопы, общение, нетворкинг, встречи с давно знакомыми людьми — всё это создало атмосферу, где можно было одновременно и продуктивно провести время, и насладиться мероприятием.
Приятный бонус: я наконец-то познакомился с Viktor Vedmich, который, между прочим, является Senior Developer Advocate в AWS. Мы вместе работали на семинаре по созданию собственной AI платформы на базе AWS — два часа пролетели незаметно, всё получилось отлично!
После каждой презентации происходили живые обсуждения, инсайты, что делало мероприятие ещё более интересным.
BTW: от работы я, конечно, забыл отпроситься и несколько раз опоздал на митапы из-за этого 🫠.
Места в аудиториях в далеке были заняты, поэтому приходилось садиться в первый ряд и править баги прямо во время докладов. Но утешало то, что я был не один такой на этой конференции))
#aws #conference
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👏7🔥3