All language subtitles for 028-An Async Solution-git.ir

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian Download
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:01,860 --> 00:00:06,300 We just said that using synchronous communication was maybe not the best way of solving this because 2 00:00:06,300 --> 00:00:11,620 although it's really easy for you and I it's not really the best solution from an engineering standpoint. 3 00:00:11,670 --> 00:00:15,390 In this video we're going to take a look at a second possible solution as he guessed this is going to 4 00:00:15,390 --> 00:00:18,600 be an asynchronous communication based solution. 5 00:00:18,720 --> 00:00:24,000 Remember with asynchronous communication we frequently introduce something called an event broker and 6 00:00:24,000 --> 00:00:30,250 the goal or purpose of this event broker is to receive notifications from some different services. 7 00:00:30,420 --> 00:00:35,430 Take those notifications or those events and route them off to all the other services that we are running 8 00:00:37,210 --> 00:00:42,030 so with this approach we're going to dramatically change how our application behaves. 9 00:00:42,030 --> 00:00:46,170 We are going to introduce the idea of a query service down here. 10 00:00:46,170 --> 00:00:53,310 The goal the query service is to listen to any time that a post is created or a comment is created. 11 00:00:53,310 --> 00:00:57,900 So any time a post is created or a company is created we're going to have these services emit an event 12 00:00:58,910 --> 00:01:03,460 the query service will then listen for those events and it's going to take all the different posts and 13 00:01:03,460 --> 00:01:09,280 comes to get created and assembled them all into a very efficient data structure that can essentially 14 00:01:09,280 --> 00:01:14,440 solve our root problem right now which is to make sure that we reduce all these number of requests down 15 00:01:14,440 --> 00:01:16,740 to just one single request. 16 00:01:16,750 --> 00:01:21,400 So again the goal of this query service is to take all the different posts all the different comments 17 00:01:21,700 --> 00:01:27,400 and just serve them up to the browser in one very simple and easy request. 18 00:01:27,410 --> 00:01:30,430 Let's take a look at how this would actually work in practice. 19 00:01:30,470 --> 00:01:36,200 So here's where everything would start whenever someone makes a post request to the post service. 20 00:01:36,290 --> 00:01:41,720 We're gonna have our Post feature emit an event and it might look something like this. 21 00:01:41,720 --> 00:01:47,390 Maybe it's an event that has some type of post created and it has some data associated with it as well. 22 00:01:47,390 --> 00:01:53,240 And that data might be the actual post that was generated that would have an I.D. and a title the post 23 00:01:53,290 --> 00:01:56,210 service would throw that event off to the event. 24 00:01:56,200 --> 00:02:01,640 Buzz and then the event buzz would automatically route that event or send the event off. 25 00:02:01,840 --> 00:02:06,580 All of our different services that express some interest in it we might send that event off to our query 26 00:02:06,580 --> 00:02:12,480 service then it would be up to the query service to somehow process this event and store some data from 27 00:02:12,480 --> 00:02:12,870 it. 28 00:02:13,750 --> 00:02:17,720 I've got here the query service and the event that it needs to process. 29 00:02:18,040 --> 00:02:22,150 We might decide to create some kind of data structure like the one you see right here to store all these 30 00:02:22,150 --> 00:02:29,230 different events that are coming in so in this case we might have a collection or object keeping track 31 00:02:29,230 --> 00:02:30,680 of all of our different posts. 32 00:02:30,940 --> 00:02:36,390 We might store the ideas of every post that has been created its title and all the relevant comments. 33 00:02:36,490 --> 00:02:41,530 So anytime that we see this host created event come in we would take that idea right there. 34 00:02:42,520 --> 00:02:44,140 And enter in a brand new post. 35 00:02:44,200 --> 00:02:50,710 There'll be a one JP five as the I.D. The title is new post and then right now we don't have any comments 36 00:02:50,710 --> 00:02:55,810 associate with this post but probably just default this comments property right here to be an empty 37 00:02:55,810 --> 00:03:01,680 array for right now until we start to actually receive some comments then we can imagine that at some 38 00:03:01,680 --> 00:03:08,590 point in time in the future maybe someone creates a comment tied to that post does someone I'll make 39 00:03:08,590 --> 00:03:12,750 a post request for comment service and very similar to what we just went through. 40 00:03:12,820 --> 00:03:17,670 We're going to have our common service event and event that might look a little something like this. 41 00:03:17,880 --> 00:03:23,110 It might have a type of comment created and some data related or describing the comment that was just 42 00:03:23,110 --> 00:03:28,630 made that will go to our event bus and the event bus is going to take that thing and route it off to 43 00:03:28,630 --> 00:03:33,690 any service inside of our app that is interested in it now it's up to our query service once again to 44 00:03:33,690 --> 00:03:40,080 process this new different incoming event so we're back to our query service. 45 00:03:40,080 --> 00:03:42,580 We still have that same kind of data structure that we had before. 46 00:03:42,690 --> 00:03:46,600 And we've got the definition of some existing post inside there already. 47 00:03:46,800 --> 00:03:52,450 So we'll write out some code instead of our query Service to process this event it's going to take this 48 00:03:52,450 --> 00:03:54,130 comment that was just created. 49 00:03:54,340 --> 00:03:58,690 It's going to find the related post with this given post idea right here. 50 00:03:58,690 --> 00:04:01,930 In this case the post I.D. is A1 GP 5. 51 00:04:02,110 --> 00:04:03,850 There's the post right there. 52 00:04:03,940 --> 00:04:09,060 So our query service will take this comment and add it into some kind of comments array. 53 00:04:09,220 --> 00:04:19,870 I'll say the idea of this comment is to J 5 6 and the content is a comment like so then at that point 54 00:04:19,870 --> 00:04:25,840 time someone can make a request directly to our query service and ask for all the different posts and 55 00:04:25,870 --> 00:04:31,120 all the related comments and our query service really has to do now is take this entire data structure 56 00:04:31,210 --> 00:04:37,560 and send it out and inside this thing we've got all the relevant posts all the relevant comments but 57 00:04:37,630 --> 00:04:42,910 again this is this kind of asynchronous communication style then this diagram I just want to make sure 58 00:04:42,910 --> 00:04:46,440 it's really clear rather than making a get request to our post service. 59 00:04:46,450 --> 00:04:51,010 Now to get a list of all the posts and whatnot would instead make a get request down to the query service 60 00:04:51,010 --> 00:04:52,020 instead. 61 00:04:52,060 --> 00:04:56,610 So that would require making some changes inside of our ReACT application OK. 62 00:04:56,640 --> 00:05:01,990 So at this point I want to go over some pros and cons of this approach and it turns out yeah the pros 63 00:05:01,990 --> 00:05:06,850 and cons are identical to what we discussed before this query service that we're imagining creating 64 00:05:07,030 --> 00:05:10,180 doesn't really have any direct dependencies on other services. 65 00:05:10,630 --> 00:05:15,670 Yes till you're going through I understand it does rely upon some incoming events that are being issued 66 00:05:15,730 --> 00:05:20,650 by those services but if those services go down for any reason if they stop functioning if they stop 67 00:05:20,650 --> 00:05:27,140 working the query service is still going to work as expected the query service is also going to be really 68 00:05:27,140 --> 00:05:32,300 really fast compared to that more synchronous style of communication the reason for this is that we're 69 00:05:32,300 --> 00:05:35,820 not making any requests between our different services anymore. 70 00:05:35,990 --> 00:05:39,760 If someone ever wants to get a list of all the different posts and comments associated with them as 71 00:05:39,770 --> 00:05:46,470 can be one very simple request the downsides here are identical to the downsides we've looked at previously 72 00:05:46,560 --> 00:05:48,870 we now have some data duplication. 73 00:05:48,870 --> 00:05:55,020 One thing to be clear about is that even in this asynchronous style approach if we have say a post requests 74 00:05:55,020 --> 00:06:00,690 come into the post service right here the Postal Service is still going to store a post it's still going 75 00:06:00,700 --> 00:06:05,430 to have its own idea of what a post is though still being stored here. 76 00:06:05,430 --> 00:06:10,470 But we're also storing what a post is or this some information about this post inside of our query service 77 00:06:10,470 --> 00:06:11,700 as well. 78 00:06:11,700 --> 00:06:16,330 So we now are now effectively duplicating data between these two services. 79 00:06:16,410 --> 00:06:21,000 It might sound really wasteful to duplicate this data but there are some really good reasons to persist 80 00:06:21,000 --> 00:06:23,020 data between these two services. 81 00:06:23,050 --> 00:06:29,220 These reasons are something I will discuss a little bit later on in the last issue here is well without 82 00:06:29,220 --> 00:06:31,580 a doubt way harder to understand. 83 00:06:31,590 --> 00:06:36,420 No doubt about it from an engineering standpoint this is a lot harder to implement because we need to 84 00:06:36,420 --> 00:06:41,370 be aware of all these different events that are floating around our application however when it comes 85 00:06:41,370 --> 00:06:47,910 down to the actual operational efficiency of this it's going to be incredibly fast no issues with dependencies 86 00:06:47,910 --> 00:06:48,690 on their services. 87 00:06:48,720 --> 00:06:55,660 So again if anything else goes down this service will continue to work now at this point. 88 00:06:55,730 --> 00:06:56,540 You might be thinking. 89 00:06:56,570 --> 00:06:58,060 All right Steven. 90 00:06:58,070 --> 00:06:59,240 Sure whatever. 91 00:06:59,240 --> 00:07:00,440 Maybe this is how it's done. 92 00:07:00,530 --> 00:07:02,020 You might have some really big questions. 93 00:07:02,050 --> 00:07:06,410 So I put together a quick diagram here where I think I've got some questions that you might have at 94 00:07:06,410 --> 00:07:09,370 this point in time and some possible answers to them. 95 00:07:09,410 --> 00:07:10,960 This video is going a little bit long however. 96 00:07:10,970 --> 00:07:14,570 So let's take a pause right here and we'll go over some of your concerns that you might have at this 97 00:07:14,570 --> 00:07:16,090 approach in just a moment. 11424

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.