Microservices Expert

RandomGuy

Well-known member
  • Oct 15, 2014
    17,363
    16,195
    113
    mehemai mata microsoft eken service1 ekata ena ekama resource ekata adala requests tika correct order ekata enawa. eth smaharawa welawata me requests service1 eken process karaddi yana welawal wenas wena nisa service2 ekata yana order eka wenas wenawa.



    mage wadeta message queue efficient madi nisa gRPC use karanne communication walata
    ------ Post added on Aug 6, 2021 at 12:42 PM

    gRPC nam mama danne naha. gRPC walath internally message queues wage deyak neweida use wenne? Performance wise nam, mama danna widiyata fastest option eka message queues.
     

    හෙනයා

    Well-known member
  • May 23, 2014
    16,739
    16,847
    113
    Kottawa
    mehemai mata microsoft eken service1 ekata ena ekama resource ekata adala requests tika correct order ekata enawa. eth smaharawa welawata me requests service1 eken process karaddi yana welawal wenas wena nisa service2 ekata yana order eka wenas wenawa.

    uba service 1 ekata requests process karala service 2 ekata yawanne parallel da?
     

    RandomGuy

    Well-known member
  • Oct 15, 2014
    17,363
    16,195
    113
    C# kiyanne language ekane bn. mama kiwwe specific framework/language ekak gena newei. Basically, message queues concept eka gena. Message queues wala sahenna hoda performance thiynawa. ape project eke develop karapu system eke roundtrip latency eka under 30 microseconds (99th percentile), at 1M requests per minute.
     

    හෙළයෙක්

    Well-known member
  • Apr 26, 2014
    48,502
    98,447
    113
    thanks. mekedi wenne micorsoft eken ena requests mage service 1 eken process karanawa. eta passe service 2 ekata requests ywanawa serice 1 eken. methanadi yawana requests warga godak thiyenawa. eka resource ekakata adalawa service 1 eken service 2 ekata yana request sequence eke wenas unoth service 2 eke process eka complete awl yanawa.

    gRPC thamai use karanne communication ekata
    කරන්න තියෙන්නෙ Redis යූස් කරල State machine එකක් හදාගන්න sequence එකට එතකොට ඒ ස්ටේට් එක පාස් උනොත් නෙ අනිකට යන්නෙ. fallback, success දෙක වෙන වෙනම හැන්ඩ්ල් කරන්න හැම ස්ටේට් එකේම.
     

    Heshan Daminda

    Well-known member
  • Mar 13, 2009
    45,510
    1
    99,660
    113
    33
    Kalutara
    මයික්‍රෝවේව් අවන් එකක් හදන්න එකෙක් හොයනවා කියල මම හිතුවේ
     
    • Haha
    Reactions: 119©

    HAneo

    Well-known member
  • Jan 30, 2007
    12,970
    29,167
    113
    Homagama
    thanks. mekedi wenne micorsoft eken ena requests mage service 1 eken process karanawa. eta passe service 2 ekata requests ywanawa serice 1 eken. methanadi yawana requests warga godak thiyenawa. eka resource ekakata adalawa service 1 eken service 2 ekata yana request sequence eke wenas unoth service 2 eke process eka complete awl yanawa.

    gRPC thamai use karanne communication ekata
    මට පෙන්නේ ඔයා Microservices වල බේසික් පොඩ්ඩක් පටලවාගෙන වගේ. Microservicesගැන කතා කරද්දී synchronous/Asynchronous දෙක අහස පොලව වගේ. මේ දෙක නිකන් වචන දෙකක් උනාට ඇතුලේ යන වැඩේ සැහෙන්න වෙනස්.

    synchronous- කිසිම කෙස් එකක් නැ අපේ පයිප් ලයින් එක හෝල්ඩ් වෙලා තියනවා ෆයිනල් රිසල්ට් එක එනකන් අපිට රික්වෙස්ට් එක අවම එක synchronous විදිහට ඔයාගේ service1 එකට දෙනවා. එකේ ඇතුලේ ලොජික් එක නම් දන්නේ නැ . එත් මම ගත්ත අයිඩියා එක අනුව විවිද රික්වෙස්ට් යවනවා. එකත් service 2 එකට. දැන් service1 එක හෝල්ඩ් වෙලා බලන් ඉන්නවා service2 එකෙන් අන්ස්වර් එක එනකන්. එකෙන් අපුවහම අයිත service1 එකට දෙනවා . එයා එලියට දෙනවා. හරිම සිම්පල්

    Asynchronous - දැන් service1 එකට රික්වෙස්ට් එකක් අවාම එයා හෝල්ඩ් එකක් නැ කෙලින්ම service 2 එකට දුන්නා එයාගේ ප්‍රොසෙස් පයිප් ලයින් එකට එන නෙක්ස්ට් එක අරගෙන ප්‍රොසෙස් කරනවා. service එකක මල්ටිපල් ඉන්ස්ටන්ස් තියනවා නම් තත්වේ තවත් දරුණු වෙනවා. service 2 එකෙන් රික්වෙස්ට් එක back වෙනකොට Consistency එකක් නැ. ඒ Partition tolerance කියන තත්වේ එනවා. ඒ කියන්නේ ඔයා දන්නේ නැ service 2 එක ඇක්සස් කරන්න පුලුවන්ද බැරිද කියල. මොකද ඔයා service 1 එකෙන් වැඩේ service 2 එකට දීල service 1 එක ඊලග වැඩේට ගියා . මේක තමා සිම්පල් විදිහට out of sync යනවා කියන්නේ

    මම ඔයාට තියරි දෙකක් දෙන්නම්.
    1. service එකක් තියේ නම් ඩේටා write කරන/ හෝ කපල් එකක් තියන යවන service එකත් එක්ක එකට කිසිම වෙලාවක Asynchronous රික්වෙස්ට් යවන්න එපා. මොකද ඔයා දන්නේ නැනේ එක උනාද නැද්ද කියල. වැඩේ උනාද නැද්ද කියල කන්ඵර්ම් එක අරන් ඕනේ ඊලග එකට යන්න. මේ වෙලාවට අනිවා synchronous පයිප් එකකට යන්න ඕනේ. නැත්නම් කිව් එකකට දෙන්න ඕනේ ඒ වැඩේ කරන්න. එත් කිව් එකට හරියට ඩේටා ටික දුන්නා කියල කන්ඵර්ම් එක අරන් තමා return එක දෙන්න ඕනේ අදාළ සර්විස් එකෙන්. නැත්නම් කිව් එකේ ඩේටා නැ.

    2. හොදම resilient සිස්ටම් එක නම් Asynchronous සහ synchronous දෙකම හෝ මැදට queue එකක් කවලමේ වැටෙන්න ඕනේ . ඔයාට සම්පුර්ණ සිස්ටම් එකක් මුළුමනින් Asynchronous කරන්න බැ . හරියටම service එකෙන් වෙන වැඩේ සහ ඒ service එකට කෝල් කරන හෝ එකෙන් කෝල් කරන service ගැන හරිම ප්ලැන් එකක් ඔලුවේ නැත්නම් මේ වැඩේ අසාර්ථකයි. ඕක නිකන් ගෙදරක් වයරින් කරනවා වගේ වැඩක්.

    හෙළයා ඕකට හොදම පොයින්ට් එකක් දුන්න "පොඩි sequence diagram එකක් ඇදගෙන වැඩේට බැස්සොත්" එහෙම කරන්න පුලුවන්නම් ඔයාට මුළු සිස්ටම් එකම හොදට තේරෙයි. එත් බැරි නම් අඩුම ගානේ request පාත් ටික වත් ඇද ගන්න. එකෙන් හදන්න කලින් උඩින් කියපු ඒවා දාන්න ඕනේ තැන් පැහැදිලි වේවි
     

    CorD SaC

    Well-known member
  • Feb 4, 2015
    15,724
    28,085
    113
    .Net නම් rabbitmq වලින් ගොඩ දාගන්න පුලුවන් නේද ඔය වගේ එකක් :)
     

    naveenr

    Well-known member
  • Apr 17, 2017
    1,653
    1,777
    113
    මට පෙන්නේ ඔයා Microservices වල බේසික් පොඩ්ඩක් පටලවාගෙන වගේ. Microservicesගැන කතා කරද්දී synchronous/Asynchronous දෙක අහස පොලව වගේ. මේ දෙක නිකන් වචන දෙකක් උනාට ඇතුලේ යන වැඩේ සැහෙන්න වෙනස්.

    synchronous- කිසිම කෙස් එකක් නැ අපේ පයිප් ලයින් එක හෝල්ඩ් වෙලා තියනවා ෆයිනල් රිසල්ට් එක එනකන් අපිට රික්වෙස්ට් එක අවම එක synchronous විදිහට ඔයාගේ service1 එකට දෙනවා. එකේ ඇතුලේ ලොජික් එක නම් දන්නේ නැ . එත් මම ගත්ත අයිඩියා එක අනුව විවිද රික්වෙස්ට් යවනවා. එකත් service 2 එකට. දැන් service1 එක හෝල්ඩ් වෙලා බලන් ඉන්නවා service2 එකෙන් අන්ස්වර් එක එනකන්. එකෙන් අපුවහම අයිත service1 එකට දෙනවා . එයා එලියට දෙනවා. හරිම සිම්පල්

    Asynchronous - දැන් service1 එකට රික්වෙස්ට් එකක් අවාම එයා හෝල්ඩ් එකක් නැ කෙලින්ම service 2 එකට දුන්නා එයාගේ ප්‍රොසෙස් පයිප් ලයින් එකට එන නෙක්ස්ට් එක අරගෙන ප්‍රොසෙස් කරනවා. service එකක මල්ටිපල් ඉන්ස්ටන්ස් තියනවා නම් තත්වේ තවත් දරුණු වෙනවා. service 2 එකෙන් රික්වෙස්ට් එක back වෙනකොට Consistency එකක් නැ. ඒ Partition tolerance කියන තත්වේ එනවා. ඒ කියන්නේ ඔයා දන්නේ නැ service 2 එක ඇක්සස් කරන්න පුලුවන්ද බැරිද කියල. මොකද ඔයා service 1 එකෙන් වැඩේ service 2 එකට දීල service 1 එක ඊලග වැඩේට ගියා . මේක තමා සිම්පල් විදිහට out of sync යනවා කියන්නේ


    මම ඔයාට තියරි දෙකක් දෙන්නම්.
    1. service එකක් තියේ නම් ඩේටා write කරන/ හෝ කපල් එකක් තියන යවන service එකත් එක්ක එකට කිසිම වෙලාවක Asynchronous රික්වෙස්ට් යවන්න එපා. මොකද ඔයා දන්නේ නැනේ එක උනාද නැද්ද කියල. වැඩේ උනාද නැද්ද කියල කන්ඵර්ම් එක අරන් ඕනේ ඊලග එකට යන්න. මේ වෙලාවට අනිවා synchronous පයිප් එකකට යන්න ඕනේ. නැත්නම් කිව් එකකට දෙන්න ඕනේ ඒ වැඩේ කරන්න. එත් කිව් එකට හරියට ඩේටා ටික දුන්නා කියල කන්ඵර්ම් එක අරන් තමා return එක දෙන්න ඕනේ අදාළ සර්විස් එකෙන්. නැත්නම් කිව් එකේ ඩේටා නැ.

    2. හොදම resilient සිස්ටම් එක නම් Asynchronous සහ synchronous දෙකම හෝ මැදට queue එකක් කවලමේ වැටෙන්න ඕනේ . ඔයාට සම්පුර්ණ සිස්ටම් එකක් මුළුමනින් Asynchronous කරන්න බැ . හරියටම service එකෙන් වෙන වැඩේ සහ ඒ service එකට කෝල් කරන හෝ එකෙන් කෝල් කරන service ගැන හරිම ප්ලැන් එකක් ඔලුවේ නැත්නම් මේ වැඩේ අසාර්ථකයි. ඕක නිකන් ගෙදරක් වයරින් කරනවා වගේ වැඩක්.


    හෙළයා ඕකට හොදම පොයින්ට් එකක් දුන්න "පොඩි sequence diagram එකක් ඇදගෙන වැඩේට බැස්සොත්" එහෙම කරන්න පුලුවන්නම් ඔයාට මුළු සිස්ටම් එකම හොදට තේරෙයි. එත් බැරි නම් අඩුම ගානේ request පාත් ටික වත් ඇද ගන්න. එකෙන් හදන්න කලින් උඩින් කියපු ඒවා දාන්න ඕනේ තැන් පැහැදිලි වේවි
    Thanks :love:
     
    • Love
    Reactions: HAneo

    HAneo

    Well-known member
  • Jan 30, 2007
    12,970
    29,167
    113
    Homagama
    .Net නම් rabbitmq වලින් ගොඩ දාගන්න පුලුවන් නේද ඔය වගේ එකක් :)
    අනිවාර්යෙන් පුළුවන් .
    එත් අපි බලන්න ඕනේ

    සිස්ටම් එකේ සයිස් එක
    කොන්කරන්ට් රික්වෙස්ට් ගාන.
    සේර්විස් අතර කොච්චර කමියුනිකේෂන් එකක් ඕනෙද කියන ප්‍රමාණාත්මක මිනුම

    මත kafka හෝ Redis වගේ එකකට යනවද කියල තීරණය කරන්න වෙන්නේ.
     

    CorD SaC

    Well-known member
  • Feb 4, 2015
    15,724
    28,085
    113
    අනිවාර්යෙන් පුළුවන් .
    එත් අපි බලන්න ඕනේ

    සිස්ටම් එකේ සයිස් එක
    කොන්කරන්ට් රික්වෙස්ට් ගාන.
    සේර්විස් අතර කොච්චර කමියුනිකේෂන් එකක් ඕනෙද කියන ප්‍රමාණාත්මක මිනුම

    මත kafka හෝ Redis වගේ එකකට යනවද කියල තීරණය කරන්න වෙන්නේ.

    Thanks reply එකට. ඉස්සරහට එන client requirement අනුව ඒක depend වෙනවා නේද අයියේ, එතකොට කොහොමද කරන්න හොඳ සමන්‍යෙන්...
     

    HAneo

    Well-known member
  • Jan 30, 2007
    12,970
    29,167
    113
    Homagama
    multiple service instances thiyeddi ehema karanna puluwanda
    1628240191351.png


    Look at this graph. you are missing API gateway functionality. you can decide if calls are Sync or Async in APi gateway.
    it's sort of like Call paths and It's functions.

    let's say Request first hits the API gateway. and it knows how to direct the call to relevent path. and the best thing is it must tell how to do that to child nodes of that call back paths sort of like Command set in order to Minimize the Sync problems.

    Or atlest you must know in your Serivce 1 that it must call others Sync Or async or use Queue to just dump the data for later process and give the result back to Api Gatway
     

    CorD SaC

    Well-known member
  • Feb 4, 2015
    15,724
    28,085
    113
    @HAneo අයියේ, අපි සර්විසස් IIS වල හොස්ට් කරලා තියෙන්නෙ කියලා හිතමු, එතකොට කොහොමද Load balancer එකක් යූස් කරන්නෙ? AWS / azure වගේ යනවනම් උන්ගෙ තියෙනෙ ඒවා
     

    HAneo

    Well-known member
  • Jan 30, 2007
    12,970
    29,167
    113
    Homagama
    Thanks reply එකට. ඉස්සරහට එන client requirement අනුව ඒක depend වෙනවා නේද අයියේ, එතකොට කොහොමද කරන්න හොඳ සමන්‍යෙන්...
    Ow First balanna one mewa

    1. client get requirement eka Monolithic architecture ekakin karaganna puluwanda kiyala balanna. It is very easy to develop and Cheep
    2. Monolithic eken Microservice ekata bahinna one karana tika thama
    - Kochchara resilient wenna oneda sistem eka
    - Kochchara Decouple wenna oneda sistem eka

    simply balapan eka system ekak gahuwama fail point kochchara thiyanawada kiyala. ewa eka API ekakin maintain karanna bari nam aniwa Decouple wenna one. anna ethakota Microservice widihata gahanna ganin. meka tikak loku subject ekak.

    balamu podiyata hari note ekak dennam ban puluwan unoth.

    @HAneo අයියේ, අපි සර්විසස් IIS වල හොස්ට් කරලා තියෙන්නෙ කියලා හිතමු, එතකොට කොහොමද Load balancer එකක් යූස් කරන්නෙ? AWS / azure වගේ යනවනම් උන්ගෙ තියෙනෙ ඒවා
    Commercially use karala na AWS and Azure ekka witharayi karala thiyenne

    1. Best way to Implement Hardware-based Load balance. ape network karana ekek oka kala. wadi wisthara danne nam na .
    2. Server farm ekak hadala mama Study karana kale kala. ekath hoda wadak. eth server farm ekakin Microservice ekaka idea eka kadenawa kiyala mama hithanawa. but not sure. I was tested this server farm, not for microservices. just for normal Web API end points
    ------ Post added on Aug 6, 2021 at 2:59 PM