Hacker News

Без бер җепле C ++ күп җепле Рөстәм белән интерфейс иттек

Без бер җепле C ++ күп җепле Рөстәм белән интерфейс иттек Интерфейсның бу комплекслы анализы аның төп компонентларын һәм киңрәк нәтиҗәләрен җентекләп тикшерүне тәкъдим итә. Фокусның төп өлкәләре Фикер алышу үзәкләре: Төп мех ...

1 min read Via antithesis.com

Mewayz Team

Editorial Team

Hacker News
Менә тулы SEO блог посты:

Күп җепле Рөстәм белән бер җепле C ++ интерфейс ясадык

Бер җепле C ++ кодны күп җепле Рөстәм белән алыштыру мөмкин түгел - бу мирас системаларын тулысынча яңадан язмыйча модернизацияләүнең иң практик ысулларының берсе. Мевайзда без бу төгәл проблеманы 138,000 кулланучыга хезмәт күрсәтү өчен 207-модульле бизнес ОСны масштаблаганда чиштек, һәм нәтиҗәләр системаларның үзара бәйләнеше турында уйлавыбызны үзгәртте.

Нигә сез күп җепле C ++ белән бер җепле C ++ интерфейсын ясыйсыз?

Күпчелек җитештерү системалары еллар дәвамында сынап каралган C ++ кодын йөртә. Рөстәмдәге бар нәрсәне яңадан язу кәгазьдә кызыклы яңгырый, ләкин ул зур куркыныч һәм берничә ай инженерлык вакытын кертә. Прагматик алым - арта торган кабул итү - булган C ++ логикасын урап, Рөстәмнең милек моделенә туры килгән авыр эш йөкләрен йөкләгәндә.

Безнең очракта, төп бизнес логик модульләр еллар дәвамында бер җепле C ++ ышанычлы эшли иде. Алар эзлекле эш эшкәртү, документлар тудыру, финанс исәпләүләр белән эш иттеләр. Ләкин безнең кулланучылар базасы 100К узганнан-арта барганга, безгә параллель мәгълүмат эшкәртү, бер үк вакытта API эшкәртү һәм куркынычсыз уртак дәүләт идарәсе кирәк иде. Рөстәмнең <код> җибәрү һәм <код> синхронлау үзенчәлекләре безгә компиляциягә туры килү гарантиясен бирде, C ++ киң кул белән аудитсыз тәкъдим итә алмый.

Төп мотивация - рискны киметү. Сез эшләгәнне саклыйсыз, һәм нинди тараза өстисез - миграциядә бөтен код базасын уйнамыйча, беркайчан да бетә алмаган.

FFI чикләре ничек эшли?

C ++ белән Рөстәм арасындагы чит функция интерфейсы (FFI) C яраклы функция имзалары аша эшли. Рөстәмнең <код> тышкы "С" блоклары C ++ турыдан-туры шалтырата ала торган функцияләрне фаш итә, һәм киресенчә. Критик проблема Рөстәмнең күп җепле эш вакыты бер җепле C ++ кодын куркынычсыз кулланырга тиеш булганда барлыкка килә.

Без моны махсус архитектура ярдәмендә чиштек:

    • Рас асинк күпер катламы: Токио биремнәре C ++ башкаручысына эш җибәрә һәм көтү нәтиҗәләрен онешот каналлары аша, Рөстәм ягын тулысынча асинхрон саклый.
    • Ачык булмаган күрсәткечләр белән идарә итү: C ++ объектлары детерминистик чистарту өчен, Drop га кертәләр, тел чикләре аша хәтер агып китмәсен өчен.
    • Чиктә серияләштерү: Катлаулы мәгълүмат структуралары FFI катламындагы FlatBuffers'ка серияләштерелгән, структур структураның яраклашуыннан сакланып, һәр тарафның мөстәкыйль эволюциясен булдырмый.
    • Паника изоляциясе: Рөстәмнең <код> тоту_унвинд һәр FFI керү ноктасын урап тора, шуңа күрә паника тел чикләрен узмый, бу билгесез тәртип.

    Бу үрнәк безгә расланган C ++ логикасының ышанычлылыгы белән күп җепле Рөстәм үткәрүне бирде - бизнес кагыйдәләренең бер сызыгын яңадан язмыйча.

    Нинди зур тозаклардан сакланырга?

    Иң куркыныч хата - C ++ коды булмаганда, җеп куркынычсыз. Глобаль дәүләт, статик үзгәрүләр, реентрант булмаган китапханә шалтыратулары Рөстәм компиляциясе FFI чикләре аша таба алмаган мәгълүмат узышларына китерәчәк. Рөстәмнең куркынычсызлыгы гарантиясе <код> куркынычсыз блогында туктала - эчтәге бар нәрсә сезнең җаваплылыгыгыз.

    Төп аңлау: Рөстәм үз коды эчендә хәтер куркынычсызлыгын гарантияли, ләкин FFI чикләрен C ++ аша узгач, сез C ++ булган һәр җеп-куркынычсызлык проблемасын мирас итеп аласыз. Бу чик тирәсендәге архитектура аның ике ягында да кодтан мөһимрәк.

    💡 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 →

    Тагын бер киң таралган куркыныч - гомер белән идарә итү. C ++ объектлары Рөстәмнең бурыч тикшерүчесендә катнашмыйлар. Әгәр дә C ++ күрсәткеч тотып торганда, Рөстәм белешмәне ташласа, диагностикалау авыр булган кулланусыз бушлай хаталар аласыз. Без моны катгый милек семантикасын кулланып чиштек: C ++ объектлары һәрвакыт төгәл бер Рөстәмнеке, һәм уртак керү Рөстәм ягында Арка нигезендә сылтама аша уза.

    Эшчәнлеккә нигезләнгән, артык FFI шалтыратулары контекстка күчү һәм серияләштерүдән өстенлек бирә. Без мөмкин булган урыннарда операцияләр ясыйбыз, C ++ башкаручысына эш чиратларын җибәрәбез, аерым телләр аша шалтыратулар түгел.

    Бу алым җитештерүдә ничек эшләде?

    Гибрид архитектураны безнең платформа аша урнаштырганнан соң, без конкрет камилләштерүне үлчәдек. Моңа кадәр C ++ эшкәртүдә комачаулаган модульләр өчен сорау үткәрү 3,4х артты. Койрыкның озынлыгы (p99) 61% ка кимеде, чөнки Рөстәмнең асинк эш вакыты мөстәкыйль запросларны бер үк вакытта эшкәртә ала, ә C ++ махсус җептә исәпләү-авыр эшләрне башкара.

    Иң мөһиме, җитештерүнең беренче алты аенда бездә нульгә туры килүче хаталар бар иде. Threadеп-чикләү үрнәге структур яктан C ++ кодны берничә җептән чакырып булмый, ә Рөстәм тибы системасы чик ягында мәгълүмат узышларын булдырмый. Бу C ++ га мутекслар белән җеп өстәргә тырышу алдагы карашыбызга караганда яхшырак булды, бер кварталда өч ярыш шартлары тудырган.

    Инженерлар командасы шулай ук тизрәк кабатлау цикллары турында хәбәр иттеләр. Яңа функцияләр Рөстәмдә тулы бердәмлек ярдәмендә төзелергә мөмкин, ә булган C ++ модульләре модификациясез эшләүне дәвам итә. Бу арту стратегиясе бездә беркайчан да куркыныч "зур шартлау" миграциясе булмавын аңлатты - бары тик тотрыклы, үлчәнә торган яхшырту.

    Еш бирелә торган сораулар

    Рөстәм бер җепле C ++ китапханәләрен үзгәртмичә чакыра аламы?

    Әйе, ләкин сез бу китапханәгә барлык шалтыратуларның бер җептән булуын тәэмин итәргә тиеш. Стандарт үрнәк - канал аша барлык C ++ шалтыратуларын серияләштерүче махсус башкаручы җеп булдыру. Рөстәмнең асинк биремнәре запрослар җибәрә һәм күп җепле эш вакытын блокламыйча җаваплар көтә. C ++ коды үзе бернинди үзгәрешләр дә таләп итми - куркынычсызлык чикләре тулысынча Рөстәм ягында кулланыла.

    FFI өстәмә куллану эшенә тәэсир итәрлек дәрәҗәдә мөһимме?

    Индивидуаль FFI шалтыратуларның минималь өстенлеге бар - гади функцияле шалтырату өчен гадәттә 10 наносекунд астында. Ләкин, катлаулы мәгълүмат структураларын серияләштерү һәм чикләрдә җепне синхронизацияләү меңләгән нечкә шалтыратулар ясаса, өстәлә. Операцияләрне туплау һәм FlatBuffers яки Cap'n Proto кебек нуль-копия серияләштерү форматларын куллану хәтта масштабта да зур булмаганны саклый.

    C ++ код базасын интерфейс урынына Рөстәмгә яңадан язарга тиешме?

    Күпчелек командалар өчен арта торган интерфейс - куркынычсыз һәм тизрәк юл. Тулы яңадан язу берничә айлык инженерлык куркынычын кертә, тәмамланганчы кулланучының бәясе юк. Интерфейс сезгә тиз арада яхшырту җибәрергә, производствода Рөстәм карашын расларга һәм бер-бер артлы модульләрне бер-бер артлы күчерергә мөмкинлек бирә. FFI чикләрен саклау бәясе яңадан язу бәясеннән арткан модульләрне генә языгыз.

    <сәгать>

    Мевайзда без техник яктан да, оператив яктан да масштаблы инфраструктура төзибез. Безнең 207-модульле бизнес ОС 138,000 командага ай саен 19 доллардан башлап акыллырак эш процессын башкарырга булыша. Сез проектлар белән идарә итәсезме, операцияләрне автоматлаштырасызмы, яисә бизнесыгызны киңәйтәсезме, Mewayz сезнең эш рәвешегезгә яраклаша. Бушлай сынауны app.mewayz.com сайтында башлап җибәрегез һәм заманча бизнес ОС сезнең команда өчен нәрсә эшли алачагын карагыз.

    бәясе булган модульләрне яңадан языгыз

Try Mewayz Free

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

Related Guide

HR Management Guide →

Manage your team effectively: employee profiles, leave management, payroll, and performance reviews.

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