Quite often, when using Spring applications, we use the Spring Boot Actuator. I do not really like this because it is not convenient for the user. You need to keep the necessary data in your head, remember the necessary endpoints. Spring Boot Admin comes to our rescue. As it turned out, not everyone knows about this impressive library. Let us figure out what it is and how to run it.
Spring Boot Admin is a web application used to manage and monitor Spring Boot applications. Each application can register as a client. Behind the scenes, the magic is created by…


Алгоритм поиска строки Бойера — Мура — алгоритм общего назначения, предназначенный для поиска подстроки в строке.

Давайте попробуем найти вхождение подстроки в строку.

Наш исходный текст будет:

Text: somestring

И паттерн, который мы будем искать

Pattern: string


Часть 5. Продолжим проектировать сервис для сокращения URL на подобии TinyUrl.

Предыдущие статьи : Часть 1, Часть 2, Часть 3, Часть 4. Прежде чем читать эту статью, рекомендую прочитать предыдущие, в которых описываются основные этапы интервью по системному дизайну.

В прошлый раз мы закончили расчет размера хранилища и пропускной способности нашей системы. Давайте рассчитаем и оценим сколько памяти нам потребуется:

Оценка необходимой памяти:

Если мы захотим кэшировать некоторые «горячие» URL, к которым наиболее частый доступ, сколько памяти нам понадобится для этого? Если мы последуем правилу 80/20, подразумевающему что 20% URL генерируют 80% трафика, нам хотелось бы кэшировать эти 20% горячих URL.

Так как у нас 19К запросов в секунду,

мы получим…


Часть 4. Спроектируем сервис для сокращения URL на подобии TinyUrl.

Предыдущие статьи : Часть 1, Часть 2, Часть 3. Прежде чем читать эту статью, рекомендую прочитать предыдущие, в которых описываются основные этапы интервью по системному дизайну.

Давайте спроектируем сервис для сокращения URL. Этот сервис будет предоставлять короткие псевдонимы/ссылки, которые будут перенаправлять на полный URL .

Спроектируем сервис для сокращения URL на подобии TinyURL.

1. Почему нам необходимо сокращение URL?

Сокращение URL используется что бы создать короткий алиас для длинного URL. Мы назовем эти короткие алиасы “короткие ссылки”.

Пользователи перенаправляются на оригинальный URL, когда переходят по “короткой ссылке”. “Короткие ссылки” сохраняют много места, когда отображаются, печатаются, передаются или твитятся. Кроме того, пользователь с меньшей вероятностью ошибется набирая короткий URL.

Для примера:

Исходный URL : https://www.educative.io/collection/page/5668639101419520/56490502253445


Часть 3.

Предыдущие статьи : Часть 1, Часть 2. Прежде чем читать эту статью, рекомендую прочитать предыдущую, что бы было понятно о чем идет речь.

Шаг 5. Высокоуровневый дизайн.

Нарисуйте блочную диаграмму с 5–6 блоками, представляющими основные компоненты нашей системы. Мы должны определить достаточно компонентов для решения проблемы от начала и до конца.

Для Twitter подобного сервиса, на высоком уровне, нам потребуется несколько серверов приложений, для обслуживания всех запросов на чтение/запись, с балансировщиками нагрузки перед ними для распределения трафика. Если мы предположим что у нас будет больше запросов на чтение (по сравнению с записью), то мы можем решить иметь отдельные серверы для…


Часть 2.

Предыдущая статья : Часть 1. Прежде чем читать эту статью, рекомендую прочитать предыдущую, что бы было понятно о чем идет речь.

Шаг 3. Оценка масштаба системы.

Хорошей идеей будет оценить масштаб системы, которую мы будем разрабатывать. Это так же поможет позже, когда мы сфокусируемся на масштабировании, партиционировании, распределении нагрузки, кэшировании.

— Какое масштабирование ожидается от системы (например количество новых твитов, количество просмотренных твитов, как много новостных лент генерируется в секунду).

— Как много памяти нам понадобится? Это будет разное количество, если пользователи смогут иметь/прикреплять фото и видео к своим твитам.

— Какую пропускную способность сети мы ожидаем? Это будет критично…


Часть 1.

Интервью по системному дизайну становятся стандартной частью процесса найма. Эффективность на этом интервью отражает вашу способность работать со сложными системами, а так же транслируется в должность и зарплату которую вам предложит компания.

Большинство инженеров боятся интервью по системному дизайну (SDI) частично из-за отсутствия опыта в разработке больших масштабируемых систем и частично из-за неструктурированной природы SDIs. Даже инженеры, кто имеет опыт в построении таких систем, не очень комфортно себя ощущают на этих интервью. Основная причина этого — то что интервью по системному дизайну не имеет стандартных ответов и носит открытый характер.

Эти статьи помогут стать лучше в SDI.

Шаг 1. Классификация…

Sergei Golitsyn

7+ years of experience in building massively scalable systems (mostly using Java) both from scratch and diving into an existing codebase.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store