Оригинал: Miss Sister Taste (идентификатор публичной учетной записи WeChat: xjjdog), добро пожаловать, пожалуйста, сохраните источник для перепечатки.
Система seckill штука сложная, как видно из нашей прошлой статьи, в ней полно вонючих, вонючих и почти 5000 слов. Такая сложная вещь, если каждую систему нужно написать один раз, это неизбежно будет огромной тратой рабочей силы. Если одна из ссылок не будет тщательно рассмотрена, она выйдет из строя.
С того момента, когда я в последний раз говорил о дизайне системы seckill в группе технического обмена, я набрался до сих пор.8位
Маленький партнер, который очень в этом заинтересован, главный автор кодинга. После всеобщего обсуждения я чувствую, что в дополнение к демо-версии seckill мы можем сделать еще один шаг и сделать его движком seckill.
Здесь xjjdog поделится с вами процессом. Не важен результат, важна идея и процесс. вы могли бы получить некоторые框架类
Опыт разработки кода, надеюсь.
[Seckill] 1. Ключевые моменты построения системы, начиная с продажи больных гусей
черный ящик
Основная идея состоит в том, чтобы рассматривать движок seckill как черный ящик, скрывающий логику выполнения seckill. Один вход и один выход. То есть,После того, как вы очистите данные, которые хотите убить, и зальете их во флеш-движок, в остальном нет ничего от исходной системы.
"Изысканный механизм Spike, облачное ускорение, гибкая и масштабируемая архитектура высокой доступности. SLA 5 9 в течение всего года, экологически чистый и экологически чистый, сопровождающий ваш бизнес. Профессиональная предпродажная техническая поддержка, которая поможет вам выполнить оптимальную конфигурацию". правда?Очень знакомая и бредовая пропаганда? Это черный ящик, пока я выполняю функцию, вы можете меня игнорировать.
концептуальная абстракция
С точки зрения процесса, мы также классифицируем код спайка на три этапа: подготовка, спайк и ликвидация. Для достижения вышеуказанных целей необходимо дополнительно абстрагировать задействованные ресурсы. Ниже приведены некоторые предварительные концепции, которые могут измениться в будущем.
Актер убивает участников
По буквальному смыслу видно, что здесь абстрагируется основная часть операции, то есть задействованные люди. Актер будет нести некоторую прикрепленную информацию, например некоторую основную информацию о пользователе. Таким образом, могут быть реализованы некоторые отдельные стратегии управления потоком или стратегии управления рисками. Например, если есть логика: только что зарегистрированный аккаунт не подходит для мгновенного убийства. Тогда дополнительная информация актора должна включать время регистрации пользователя.
очередь буфер очередь
Очередь — это буфер для запроса seckill, и это первое место, куда он попадает. Будь то очередь памяти или распределенная очередь, операция аналогична. Давайте также немного абстрагируемся. Таким образом, настроив параметры, вы можете настроить поведение и производительность очереди seckill.
источник источника данных seckill
поставщик данных. Данные могут поступать из внешней базы данных (db), также могут поступать из внешнего push-уведомления (push) или могут поступать из внешнего интерфейса pull (pull). Мы даем этому процессу сбора данных имя, называемое источником. Разумеется, функции этой части также могут быть расширены, например, исходные данные поступают из ЕС.
приемник убивает данные и поглощает
В основном это касается местонахождения данных после завершения всплеска. Подобно источнику, это обратное действие. Он касается действий по приземлению, таких как вычеты из запасов. Поведение этого компонента может заключаться в отправке или прямой отправке сообщения о событии. Источник и приемник, которые составляют конкретный поток данных цели выброса, находятся за пределами черного ящика.
цель убить цель
Пришло время дать вашей мишени спайка имя. У него есть уникальное имя в механизме seckill: targetID, которое используется для идентификации продукта. Здесь есть много персонализированных параметров конфигурации, таких как время начала seckill, длина очереди, отложенная ли загрузка продуктов и т. д.
складские операции со складом
Инвентарные операции относятся к операциям внутри черного ящика.Эта информация будет время от времени объединяться и передаваться бизнес-стороне. Для работы запаса необходимо обеспечить его правильность и пропускную способность. Это также одна из наших основных концепций.
действие действие
Подобно роли шины сообщений. Действие, поступок, относится к носителю всех форм поведения, порожденных действующим лицом, и является неизменным на протяжении всего жизненного цикла. Действия буферизуются, отслеживаются, отправляются, записываются и представляют собой поведенческие объекты, разбросанные по всему движку.
единица времени выполнения в реальном времени
Меняется рантайм, и он используется для буферизации информации в хаотичном периоде, в принципе не будет записывать и пропускать. Наше беговое подразделение проведет множество операций и суждений, пока не будут получены окончательные данные.BASE
статус.
Основной процесс
Цель
Движок seckill будет использовать множество технологий, которые у нас есть под рукой, но нам также нужен способ поделиться ими. С учебником + исходным кодом результаты будут лучше. Чтобы обеспечить надежность программы, мы будем использовать модульное тестирование, чтобы максимально покрыть код; чтобы оценить производительность всей системы, мы также введем некоторые инструменты стресс-тестирования; наконец, мы будем использовать springboot для интеграции движка Spike для создания окончательного эффекта.
Абстрактная концептуальная часть должна иметь возможность динамически заменяться и предоставлять настраиваемый метод расширения.
Предварительный технический выбор
Шиповый двигатель состоит из трех частей.
1. Основная часть
Этот модуль использует как можно меньше компонентов для использования в различных средах разработки (не только Spring) и охватывает важные концепции и логику реализации. Будет много тонко настроенных параметров конфигурации для настройки производительности.
2. демонстрационная часть
Покажите полный пример с использованием самых популярных технологий, таких как springboot, vue, flutter и т. д.
3. Программная часть
Типичным репрезентативным решением является оптимизация некоторых специальных сценариев или расширяемая тема.
Говоря самым маркетинговым языком, это行业解决方案
.
код
Код проекта находится на github, и на данный момент есть только некоторые абстрактные концепции. Заинтересованные могут следить.
https://github.com/xjjdog/seckill-engine
Публичный аккаунт Miss Sister WeChat WeChat будет продолжать отслеживать изменения статуса и технологии, заслуживающие упоминания, и использовать практический подход для обзора и вкрапления некоторых знаний в прошлом.
Добро пожаловать, чтобы добавить меня в WeChat и высказать свое ценное мнение.
Об авторе:Мисс сестра вкус(xjjdog), публичная учетная запись, которая не позволяет программистам идти в обход. Сосредоточьтесь на инфраструктуре и Linux. Десять лет архитектуры, десятки миллиардов ежедневного трафика, обсуждение с вами мира высокой параллелизма, дающие вам другой вкус. Мой личный WeChat xjjdog0, добро пожаловать в друзья для дальнейшего общения.