AMcoder - javascript, python, java, html, php, sql

Առանձին Lagom գրել / կարդալ կողմերը առանձին ծառայությունների մեջ:

Ես դիտել եմ մի քանի դեմո, այդ թվում՝ Chirper ցուցադրական հավելվածը՝ https://github.com/lagom/lagom-java-sbt-chirper-example

Ծլվլոց ավելացնելը և ծլվլոցների ուղիղ հոսքի առբերումը ավելացվում է նույն ծառայությանը: Սա, կարծես, սովորական պրակտիկա է.

public interface ChirpService extends Service {

  ServiceCall<Chirp, NotUsed> addChirp(String userId);

  ServiceCall<LiveChirpsRequest, Source<Chirp, ?>> getLiveChirps();

  ServiceCall<HistoricalChirpsRequest, Source<Chirp, ?>> getHistoricalChirps();

  @Override
  default Descriptor descriptor() {
    // @formatter:off
    return named("chirpservice").withCalls(
        pathCall("/api/chirps/live/:userId", this::addChirp),
        namedCall("/api/chirps/live", this::getLiveChirps),
        namedCall("/api/chirps/history", this::getHistoricalChirps)
      ).withAutoAcl(true);
    // @formatter:on
  }
}

Իմ հարցը պտտվում է այն գաղափարի շուրջ, որ դուք կարող եք addChirp հաղորդագրությունը ներկայացնել հաղորդագրության միջնորդի թեմային (Կաֆկայի գործընթաց)՝ ընթերցումները գրություններից անջատելու նպատակով: Այսինքն՝ գրելը հաջողությամբ կվերադարձնի նույնիսկ այն դեպքում, երբ ընթերցման կողմը (սպառողը) ժամանակավորապես անհասանելի է (այսինքն՝ ծլվլոցը ժամանակավորապես պահվում է Կաֆկայի կողմից սկավառակի վրա, որպեսզի այն վերամշակվի ընթերցման կողմից, երբ այն նորից հասանելի լինի):

Տրամաբանական չի՞ լինի գրելու կողմը կարդալու կողմը առանձնացնել առանձին ծառայությունների և դրանք ընդհանրապես գործարկել տարբեր պորտերի վրա: Թե՞ այս մոտեցումն ունի ընդհանուր թակարդներ:

29.05.2018

Պատասխանները:


1

Lagom-ում read-side-ը գրելիս դուք ունեք երկու տարբերակ.

  • Ներսպասարկման ընթերցման կողմ. օգտագործում է Akka Persistence Query-ը ուղղակիորեն գրելու կողմի ամսագրից կարդալու և կարդալու կողմը կառուցելու համար: Նոր իրադարձությունները ձեռք բերելու, օֆսեթին հետևելու (իմանալու, թե որ իրադարձություններն են արդեն կարդացվել) և ձեր ընթերցման կողքի աղյուսակները ստեղծելու օպերացիան կատարվում է ընթացքի մեջ, և, ամենաարդիականը, օֆսեթ հետևելը և օգտագործողի աղյուսակի թարմացումը տեղի են ունենում գործարքի ընթացքում: առաջարկելով effectively-once իմաստաբանություն: Ներսպասարկման ընթերցման կողմերի մյուս առավելությունն այն է, որ մոդելավորումը մնում է դռների հետևում, և դուք կարող եք ազատորեն վերամշակել ձեր աղյուսակները, քանի դեռ հանրային REST վերջնակետերն առաջարկում են նույն API-ն:
  • Միջծառայության ընթերցման կողմը. (այսպես նաև հեռակա ընթերցման կողմեր) այլընտրանքը ենթադրում է հեռակա ծառայության ստեղծում և իրադարձությունների հրապարակում սկզբնական ծառայությունից բրոքերում, որպեսզի հեռակա ծառայությունը կարողանա դրանք սպառել: Սա ունի որոշ նախազգուշացումներ. (1) իրադարձություններն այժմ հրապարակային են, և, հետևաբար, հանրային API-ն այնքան էլ հեշտ չէ վերափոխել, (2) հրապարակումը գործարքային չէ և սպառող կարող է լինել կամ at-least-once (այն, ինչ դուք ընդհանուր առմամբ ցանկանում եք) կամ at-most-once, ուստի վերջը- մինչև վերջ երաշխիքներն այլևս effectively-once չեն, (3) թեման հասանելի է այլ ծառայությունների համար (սա վատ չէ, դա պարզապես հավելյալ նկատառում է), (4) գրելու և կարդալու կողմի ուղիղ միացում տարբեր ծառայություններում, ինչը մի քիչ անբնական.

online-auction-java ցուցադրական հավելվածում կա հեռակա ընթերցման ցուցադրություն. search-service-ը հանդիսանում է հեռավոր ընթերցման կողմը, որը սպառում է բազմաթիվ թեմաներից իրադարձություններ՝ համախմբելով տեղեկատվությունը մեկ elasticsearch ինդեքսի մեջ: Այս դեպքում շատ իմաստալից է օգտագործել հեռակա ընթերցման կողմը, քանի որ (ա) մենք օգտագործում ենք հատուկ պահպանման տեխնոլոգիա (առաձգական որոնում) և (բ) մենք միավորում ենք հոսքերը, որոնք գալիս են վերին հոսքի երկու տարբեր ծառայություններից:

HTH,

29.05.2018
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..