Hacker News

Раздор: Студија на случај во оптимизација на перформансите

Раздор: Студија на случај во оптимизација на перформансите Оваа сеопфатна анализа на раздорот нуди детално испитување на неговите основни компоненти и пошироки импликации. Клучни области на фокус Дискусијата се фокусира на: Основни механизми и п...

1 min read Via newsletter.fullstack.zip

Mewayz Team

Editorial Team

Hacker News

Discord: Студија на случај во оптимизацијата на перформансите

Патувањето за оптимизација на перформансите на Discord е еден од најпоучните примери во модерното софтверско инженерство, демонстрирајќи како платформата може да расте од илјадници до стотици милиони корисници без да се жртвува брзината или сигурноста. Со испитување на инженерските одлуки на Discord - од миграции на базата на податоци до архитектура на пораки во реално време - бизнисите можат да извлечат докажани стратегии за градење платформи кои работат под притисок.

Кои основни механизми ги зајакнуваат перформансите на раздор?

Инфраструктурата на Discord е изградена на филозофија на намерни инженерски компромиси. Првично изградена на Python и MongoDB, платформата брзо наиде на тесни грла бидејќи нејзината корисничка база експлодираше. Инженерскиот тим донесе критична архитектонска одлука: оддалечете се од монолитен оџак кон архитектура ориентирана кон услуги, овозможувајќи им на поединечните компоненти да се размеруваат независно.

Сржта на перформансите на Discord е неговата употреба на Elixir и виртуелната машина Erlang BEAM за нејзиниот слој за пораки во реално време. BEAM VM беше наменски создаден за истовремени системи толерантни за грешки - токму она што го бара платформата која ракува со милијарди пораки дневно. Во меѓувреме, слојот API на Discord на крајот беше препишан во Rust, нудејќи безбедност на меморијата и скоро нула надземни перформанси кои Python едноставно не можеше да ги совпадне во размер.

Резултатот е систем каде што се одржуваат милиони истовремени WebSocket конекции со време на испорака на пораки под 50 ms, дури и при максимална употреба. Ова не беше случајно - тоа беше производ на итеративно профилирање, идентификација на тесно грло и насочени препишувања на најнагласените компоненти на системот.

Како Discord го реши своето најозлогласено тесно грло во базата на податоци?

Еден од најјавно документираните инженерски предизвици на Discord ја вклучуваше Касандра, дистрибуираната база на податоци што ја користеше за складирање на историјата на пораките. Како што растеше платформата, латентноста на читањето сериозно се деградираше - не затоа што Касандра беше лош избор, туку затоа што шемите на употреба на Discord беа фундаментално променети. Жешките партиции, каде што непропорционален број на читања се концентрирани на одредени јазли на податоци, предизвикаа непредвидливи забавувања.

Одговорот на инженерскиот тим беше значајна миграција во ScyllaDB, база на податоци компатибилна со Касандра напишана во C++. Миграцијата ја намали латентноста на читањето на p99 од 40-125 ms на едноцифрена милисекунди во повеќето случаи. Што е уште поважно, ја намали оперативната сложеност на управувањето со кластерот, ослободувајќи ги инженерските ресурси да се фокусираат на развој на карактеристики наместо на гаснење пожари во инфраструктурата.

„Најдобрата оптимизација на перформансите не е секогаш технички најсофистицирана - таа е онаа што ја намалува сложеноста додека директно се справува со тесното грло што предизвикува болка кај корисниците“. — Принцип потврден од приказната за миграција на базата на податоци на Discord.

Овој случај илустрира критична лекција за секоја растечка платформа: вистинската алатка за една фаза на раст може да стане погрешна алатка за следната. Континуираното мерило и подготвеноста за миграција не се знаци на лошо планирање - тие се знаци на инженерска зрелост.

Кои лекции за имплементација од реалниот свет можат да ги применат бизнисите?

Патувањето за оптимизација на Discord не беше чисто теоретско - произведе збир на практики што може да се повторат, применливи за секој бизнис управуван од софтвер. Најдобрите средства за преземање вклучуваат:

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →
  • Профил пред да се оптимизира: Discord постојано ги идентификуваше точните тесни грла преку мерење наместо претпоставка, спречувајќи залуден напор на некритични патеки.
  • Изберете први јазици за конкурентност за тешки оптоварувања на I/O: Преместувањето во Еликсир за рутирање пораки драстично го намали трошокот на процесорот во споредба со моделите со нишка по конекција.
  • Одвојување на складиштето од пресметување: со одвојување на складирањето пораки од слојот за испорака во реално време, Discord овозможи секој слој да се размери независно врз основа на неговата специфична шема на оптоварување.
  • Прифатете ја инкременталната миграција над препишувањата со голема брзина: Критичните системи беа мигрирани услуга по услуга, намалувајќи го ризикот и овозможувајќи континуирана валидација на придобивките од перформансите.
  • Инвестирајте во забележливоста рано: Способноста на Discord за брзо откривање на регресии произлезе од длабоката инвестиција во дистрибуираното следење, контролните табли за метрика и инфраструктурата за предупредување изградена пред да се појават кризи.

Како пристапот на Discord се споредува со алтернативите во индустријата?

Моделот за оптимизација на Discord е значаен контраст со тоа како платформите како Slack и Microsoft Teams пристапиле кон слични предизвици. Slack, на пример, силно се навалуваше во стек базиран на Node.js и управување со WebSocket на слојот на апликацијата, прифаќајќи повисоки трошоци за меморија во замена за блискоста на програмерите. Тимовите, поддржани од Azure инфраструктурата на Мајкрософт, презедоа пристап на прво место на претпријатието - давајќи приоритет на усогласеноста и ширината на интеграцијата пред необработените перформанси на латентност.

Диференцијалот на Discord беше неговата подготвеност да усвои помалку мејнстрим технологии - Elixir, Rust, ScyllaDB - кога тие технологии беа очигледно подобро прилагодени за конкретни проблеми. Овој прагматичен, а не идеолошки пристап кон изборот на технологија произведе мерливи придобивки без да бара препишување на големопродажна платформа во која било временска точка.

За бизнисите кои ги проценуваат сопствените купови на платформи, примерот на Discord силно тврди против „развојот управуван од резиме“ - избирајќи технологии за престижот на нивната индустрија, наместо за нивната погодност за проблемот. Прашањето никогаш не е „што е популарно? но "што го решава ова специфично ограничување на перформансите?"

Кои емпириски докази докажуваат дека функционираат стратегиите за оптимизација на Discord?

Резултатите од инженерските одлуки на Discord се документирани и мерливи. По миграцијата на ScyllaDB, Discord пријави 10x намалување на бројот на јазли додека истовремено ја подобрува латентноста. Препишувањето на Rust API елиминираше цели категории на грешки поврзани со меморијата додека го намали времето на одговор на услугата. Испораката на пораки во размер постојано работи под прагот од 50 ms, дури и за време на големите игри на настани - моменти кои претходно го оптоваруваа системот до неговите граници.

До 2023 година, Discord обработуваше над 4 милијарди минути говорна комуникација дневно на повеќе од 19 милиони активни сервери. Ова не се суета метрика - тие се доказ дека архитектонските одлуки донесени под инженерски притисок создадоа издржливи, комбинирани придобивки од перформансите со текот на времето.

Често поставувани прашања

Зошто Discord мигрираше од Python во Rust за својот API слој?

Глобалното заклучување за преведувач на Python (GIL) фундаментално ја ограничува неговата способност за извршување на вистински истовремен код, создавајќи тавани за пропусната моќ што станаа сè попроблематични како што растеше обемот на барање за API на Discord. Rust нудеше споредлива продуктивност на развивачите за код на ниво на систем без време на работа, паузи за собирање ѓубре или ограничувања на истовременоста на Python - создавајќи слој API кој беше и побрз и попредвидлив при оптоварување.

Која е најголемата грешка при оптимизација на перформансите што ги прават платформите?

Најчеста грешка е оптимизирањето предвреме и широко, наместо таргетирање на специфичното, измерено тесно грло што предизвикува деградација. Инженерството за изведба е најефективно кога е управувано од профилирање на податоци и метрика на влијанието на корисникот. Discord постојано успеваше со идентификување на единственото ограничување со најголемо влијание - латентност на базата на податоци, проток на API, истовременост на WebSocket - и конкретно решавање пред да се префрли на следното.

Како платформата на деловно ниво може да ги примени лекциите за перформанси на Discord без инженерски ресурси на претпријатието?

Принципите ефикасно се намалуваат. Секоја платформа може да имплементира алатки за набљудување, крајните точки на профилот под реалистично оптоварување и да донесува поединечни одлуки за стек врз основа на податоци наместо стандардни. Сè-во-едно платформи кои ја апстрактираат комплексноста на инфраструктурата - ракување со кеширање, комуникација во реално време и складирање податоци на ниво на платформа - им овозможуваат на растечките бизниси да имаат корист од оптимизираната архитектура без потреба сами да ја обновуваат.


Студијата на случај за оптимизација на перформансите на Discord докажува дека одржливите размери се постигнуваат преку намерни архитектонски одлуки водени од податоци, а не со фрлање ресурси на проблеми. Без разлика дали водите комуникациска платформа или бизнис оперативен систем со повеќе модули, принципите се исти: неуморно мерете, интелигентно раздвојувајте и изберете алатки што одговараат на вистинскиот проблем.

Доколку вашиот бизнис бара платформа која ги применува овие принципи надвор од кутијата - перформанси, приспособливост и оперативна сложеност за да можете да се фокусирате на растот - истражете го Mewayz денес. Со 207 интегрирани модули, над 138.000 корисници и планови кои почнуваат од само 19 долари/месечно, Mewayz е создаден за да го зголеми вашиот бизнис уште од првиот ден.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime