--- title: 科技英文-Reactive Performance by Oleh Dokuka --- #Reactive Performance by Oleh Dokuka-2/2 1165 01:00:59,119 --> 01:01:04,110 long chain of of pipes or operators 長鏈的管道或操作員 1166 01:01:04,309 --> 01:01:06,660 within your within your data processing 在您的資料處理範圍內 1167 01:01:06,860 --> 01:01:11,370 pipeline you can have a really huge win 管道可以取得巨大的勝利 1168 01:01:11,570 --> 01:01:16,500 by using by using growl by using growl 通過使用咆哮通過使用咆哮 1169 01:01:16,699 --> 01:01:22,050 vm and by using growl GT optimization of vm並通過使用growl GT優化 1170 01:01:22,250 --> 01:01:24,200 course which which happens at runtime 在運行時發生的過程 1171 01:01:24,400 --> 01:01:27,120 however as we will see a little bit 但是,正如我們將看到的一點 1172 01:01:27,320 --> 01:01:30,200 later it's it's a little bit 後來有一點 1173 01:01:30,400 --> 01:01:33,870 controversial and but I will I will be 有爭議的,但我會的 1174 01:01:34,070 --> 01:01:35,550 talking a bit about that a little bit 談一點 1175 01:01:35,750 --> 01:01:38,730 later so for now in general to summarize 以後再來概括一下 1176 01:01:38,929 --> 01:01:40,700 we can have a huge performance 我們可以有出色的表現 1177 01:01:40,900 --> 01:01:44,460 improvement just by using for example C 僅通過使用例如C來改善 1178 01:01:44,659 --> 01:01:47,400 version of growl we can win round from 我們可以從中贏得勝利的咆哮聲 1179 01:01:47,599 --> 01:01:51,750 from 6% to 10% which is in case of a 從6%到10% 1180 01:01:51,949 --> 01:01:56,070 really huge number of servers and in 大量的伺服器和 1181 01:01:56,269 --> 01:01:58,490 case of really 真的 1182 01:01:58,690 --> 01:02:00,919 which infrastructure you can save a lot 您可以節省多少基礎架構 1183 01:02:01,119 --> 01:02:04,669 of Funyuns you can save a lot of spans Funyuns可以節省很多跨度 1184 01:02:04,869 --> 01:02:08,740 and on your infrastructure by just using 只需使用 1185 01:02:08,940 --> 01:02:14,899 brawl in your in your application all 在您的應用程式中爭吵 1186 01:02:15,099 --> 01:02:17,659 right so let's talk a little bit on 對,所以讓我們談談 1187 01:02:17,858 --> 01:02:21,680 another another optimization that we can 我們可以進行的另一項優化 1188 01:02:21,880 --> 01:02:26,659 do for for our reactive streams and one 為我們的反應流和一個 1189 01:02:26,858 --> 01:02:28,730 of the options that we can do without 我們可以做的選擇 1190 01:02:28,929 --> 01:02:31,389 changing any line of code is of course 更改任何代碼行當然是 1191 01:02:31,588 --> 01:02:36,740 choosing the GC so in general every 選擇GC,所以通常每個 1192 01:02:36,940 --> 01:02:40,639 object that usually usually goes who 通常會去誰的對象 1193 01:02:40,838 --> 01:02:43,369 reactive pipeline is immutable object if 反應管道是不可變的物件,如果 1194 01:02:43,568 --> 01:02:46,250 you don't have immutable objects you 你沒有不變的物件 1195 01:02:46,449 --> 01:02:49,490 should think twice about about that 應該三思而後行 1196 01:02:49,690 --> 01:02:54,230 because a lot of a lot of you can have a 因為你們很多人可以擁有 1197 01:02:54,429 --> 01:02:56,840 lot of pain by by using beautiful 通過使用美麗帶來很多痛苦 1198 01:02:57,039 --> 01:02:59,990 objects so you have to probably move to 物件,所以您可能必須移動到 1199 01:03:00,190 --> 01:03:02,690 immutable one and in general when we are 一成不變的,一般來說,當我們 1200 01:03:02,889 --> 01:03:05,149 talking about a mutable object and 談論易變的物體 1201 01:03:05,349 --> 01:03:08,240 especially about those objects within 特別是那些裡面的東西 1202 01:03:08,440 --> 01:03:10,280 the stream we are talking about 我們正在談論的流 1203 01:03:10,480 --> 01:03:14,570 short-lived objects and this short life 短暫的物體和短暫的生命 1204 01:03:14,769 --> 01:03:17,510 objects GC works very well because all 物件GC工作得很好,因為所有 1205 01:03:17,710 --> 01:03:19,700 they are accused in the young generation 他們被指控為年輕一代 1206 01:03:19,900 --> 01:03:24,470 and now we have to say which GC works 現在我們不得不說哪個GC有效 1207 01:03:24,670 --> 01:03:28,430 well these short life objects and works 這些短暫的生活物件和作品 1208 01:03:28,630 --> 01:03:32,090 well with this young generation I'm not 對於這個年輕的一代,我不是 1209 01:03:32,289 --> 01:03:34,340 going to show you again all these 再次向您展示所有這些 1210 01:03:34,539 --> 01:03:36,740 benchmarks I'm going to show you just a 基準,我將向您展示一個 1211 01:03:36,940 --> 01:03:40,010 benchmark that they found on the on the 他們在上找到的基準 1212 01:03:40,210 --> 01:03:42,680 Twitter from David corner the David 大衛(David)的推特(twitter) 1213 01:03:42,880 --> 01:03:44,840 corner is the officer of one of the 角落是其中一名官員 1214 01:03:45,039 --> 01:03:47,750 authors of Eric's java and reactor 3 and Eric的Java和Reactor 3的作者以及 1215 01:03:47,949 --> 01:03:50,990 he did some measurements I did almost 他做了一些測量,我幾乎 1216 01:03:51,190 --> 01:03:54,379 similar but in general he had much 類似,但總的來說他有很多 1217 01:03:54,579 --> 01:03:56,629 better comparison and table of 更好的比較和表 1218 01:03:56,829 --> 01:03:59,480 comparison and in general if you are 比較,如果您是 1219 01:03:59,679 --> 01:04:04,310 looking for or good throat put you 尋找或嗓子好把你 1220 01:04:04,510 --> 01:04:06,500 probably should use parallel you see 大概應該使用並行 1221 01:04:06,699 --> 01:04:09,230 because parallel GC uses the last number 因為並行GC使用最後一個數字 1222 01:04:09,429 --> 01:04:11,220 of threads 執行緒 1223 01:04:11,420 --> 01:04:17,159 in that way allocate less or use less 這樣分配更少或使用更少 1224 01:04:17,358 --> 01:04:22,079 threads for for memory and for garbage 用於記憶體和垃圾的執行緒 1225 01:04:22,278 --> 01:04:24,990 collection however from my experience 但是從我的經驗來看 1226 01:04:25,190 --> 01:04:28,289 and from my experience of building high 而從我的高樓建設經驗 1227 01:04:28,489 --> 01:04:30,869 performance application in production in 性能在生產中的應用 1228 01:04:31,068 --> 01:04:34,740 life and one of the GC that we are using 生活和我們正在使用的GC之一 1229 01:04:34,940 --> 01:04:39,780 in in our this is in our company for run 在我們這是在我們公司中運行 1230 01:04:39,980 --> 01:04:43,139 in our socket infrastructure here we 在我們的通訊端基礎架構中, Socket:put something into it Infrastructure:base 1231 01:04:43,338 --> 01:04:45,539 are using G 1 GC which is also an 使用的是G 1 GC 1232 01:04:45,739 --> 01:04:48,240 excellent garbage collector which is 優秀的垃圾收集器 1233 01:04:48,440 --> 01:04:52,260 tuned it for low latency and for 對其進行了調整,以實現低延遲和 Latency:delay between computers 1234 01:04:52,460 --> 01:04:55,649 recta streams it shows a really good 直腸流顯示它真的很好 1235 01:04:55,849 --> 01:04:57,389 performance as well and a really good 性能也很好 1236 01:04:57,588 --> 01:05:00,919 throat put along with a really lot good 喉嚨放的很好 1237 01:05:01,119 --> 01:05:05,190 latency so we are going to we are going 延遲,所以我們要去 1238 01:05:05,389 --> 01:05:07,560 to play with GC a little bit later and 稍後再玩GC 1239 01:05:07,760 --> 01:05:10,318 now we just have to pay attention to 現在我們只需要注意 1240 01:05:10,518 --> 01:05:14,490 those numbers and remember which GC is a 這些數字,並記住哪個GC是 1241 01:05:14,690 --> 01:05:16,289 little bit better for reactive streams 反應性流好一點 1242 01:05:16,489 --> 01:05:20,669 and finally the final stage which I'm 最後是我的最後階段 1243 01:05:20,869 --> 01:05:24,568 going to I'm going to cover is some 我要覆蓋的是一些 1244 01:05:24,768 --> 01:05:26,849 tuning of the operators that I mention 我提到的運營商調整 1245 01:05:27,048 --> 01:05:32,300 it a few slides ago and one of the 它是幾張幻燈片之前的一張 1246 01:05:32,500 --> 01:05:35,039 options that we can tune with in 我們可以調整的選項 1247 01:05:35,239 --> 01:05:38,010 reactive streams is tuning the the size 反應流正在調整大小 1248 01:05:38,210 --> 01:05:40,859 of the queue because as you have as you 之所以排隊,是因為您擁有 1249 01:05:41,059 --> 01:05:43,200 can remember we have a few operators 記得我們有幾個操作員 1250 01:05:43,400 --> 01:05:46,649 like flat map like Kincaid map like 像平地圖一樣 1251 01:05:46,849 --> 01:05:49,068 published on which is which relies on 出版哪個依賴 1252 01:05:49,268 --> 01:05:52,530 some view and in many cases we just 一些觀點,在許多情況下,我們只是 1253 01:05:52,730 --> 01:05:54,780 write a flat map with no additional 無需額外書寫平面地圖 1254 01:05:54,980 --> 01:05:56,909 parameters just a lambda that converts 參數只是一個可以轉換的lambda 1255 01:05:57,108 --> 01:06:00,809 an element T to another stream and 元素T到另一個流,並且 1256 01:06:01,009 --> 01:06:03,930 that's the most common what we can do 那是我們最常做的 1257 01:06:04,130 --> 01:06:07,349 here and we are doing here and we are 在這裡,我們正在這裡,我們正在 1258 01:06:07,548 --> 01:06:10,818 doing and we do that in most cases and 我們在大多數情況下都這樣做 1259 01:06:11,018 --> 01:06:14,490 sometimes we forget about additional 有時我們忘記了其他 1260 01:06:14,690 --> 01:06:16,909 options and additional parameters it can 選項和其他參數 1261 01:06:17,108 --> 01:06:20,430 impact a lot of your on that can impact 對您的影響很大 1262 01:06:20,630 --> 01:06:24,510 your performance a lot however its 你的表現很多,但是 1263 01:06:24,710 --> 01:06:27,659 if you forgot to try to change these 如果您忘記嘗試更改這些 1264 01:06:27,858 --> 01:06:30,119 additional parameters if you didn't pay 其他參數(如果您不付款) 1265 01:06:30,318 --> 01:06:32,639 attention to those additional parameters 注意那些附加參數 1266 01:06:32,838 --> 01:06:35,340 and overloads or for example flatmap or 和超載,例如平面圖或 1267 01:06:35,539 --> 01:06:38,970 publish on you can always tune those 發佈您可以隨時調整那些 1268 01:06:39,170 --> 01:06:41,669 parameters in your application by 您的應用程式中的參數 1269 01:06:41,869 --> 01:06:44,389 providing additional arguments like 提供其他參數,例如 1270 01:06:44,588 --> 01:06:48,629 reactor buffer size or its small use and 反應堆緩衝區大小或使用少 1271 01:06:48,829 --> 01:06:51,539 for small use and if they're going back 少量使用,如果他們要回去 1272 01:06:51,739 --> 01:06:56,450 to you to you to our demo small demo 給你給你來我們的演示小演示 1273 01:06:56,650 --> 01:07:01,800 applications and if we are going to - in 應用程式,如果我們要- 1274 01:07:02,000 --> 01:07:04,919 order to show you how changing or how 為了向您展示如何變化或如何 1275 01:07:05,119 --> 01:07:07,470 tuning of those applications or those 那些應用程式的調優 1276 01:07:07,670 --> 01:07:10,470 parameters can impact your performance 參數可能會影響您的效果 1277 01:07:10,670 --> 01:07:14,159 and going to tune a little bit of those 然後去調一些 1278 01:07:14,358 --> 01:07:17,000 parameters for for this really plain 這個很簡單的參數 1279 01:07:17,199 --> 01:07:20,730 plain stream in order to make this more 普通流,以使其更多 1280 01:07:20,929 --> 01:07:23,930 realistic I'm going to do some warm-up 現實的我要做一些熱身 1281 01:07:24,130 --> 01:07:26,940 between and I'm going to measure some 之間,我要測量一些 1282 01:07:27,139 --> 01:07:30,210 time of execution of this stream so 執行此流的時間,因此 1283 01:07:30,409 --> 01:07:32,669 basically as let me remind you what is 基本上讓我提醒你什麼是 1284 01:07:32,869 --> 01:07:34,590 going on here basically we create a 基本上在這裡我們創建一個 1285 01:07:34,789 --> 01:07:37,619 stream of 1000 elements and then we 1000個元素的流,然後我們 1286 01:07:37,818 --> 01:07:41,070 create another 1000 of sub stream 再創建1000個子流 1287 01:07:41,269 --> 01:07:46,500 elements since we have some options and 元素,因為我們有一些選擇和 1288 01:07:46,699 --> 01:07:49,169 some additional over overloads for 一些額外的超載 1289 01:07:49,369 --> 01:07:52,109 flatmap like like prefetch size and 平面圖,例如預取大小和 1290 01:07:52,309 --> 01:07:55,019 concurrency which means that concurrency 併發,這意味著併發 1291 01:07:55,219 --> 01:07:58,950 is how many how many sub strings we can 我們可以有多少個子字串 1292 01:07:59,150 --> 01:08:01,980 have at a time within our fight flat map 一次在我們的戰鬥平面圖中 1293 01:08:02,179 --> 01:08:04,950 or in other work how many streams can be 或在其他工作中可以有多少個流 1294 01:08:05,150 --> 01:08:08,280 merged at the same time within one flat 在同一單位內同時合併 1295 01:08:08,480 --> 01:08:11,490 map and prefetch which means how many 映射並預取,這意味著有多少 Fetch:to catch something Pre:before 1296 01:08:11,690 --> 01:08:14,399 elements I would like to request the 我想要求的元素 1297 01:08:14,599 --> 01:08:19,050 first two in our for at the first for 在我們的頭兩個 1298 01:08:19,250 --> 01:08:22,110 our eternal sub string so it means how 我們永恆的子字串,這意味著 1299 01:08:22,310 --> 01:08:24,960 many elements I would like to to request 我想要求的許多要素 1300 01:08:25,159 --> 01:08:31,028 at first for in our internal stream and 首先在我們的內部流中 1301 01:08:31,448 --> 01:08:35,369 those elements can impact your 這些元素會影響您 1302 01:08:35,569 --> 01:08:37,260 performance a lot so let me show you 表現很多,讓我告訴你 1303 01:08:37,460 --> 01:08:38,289 looking just show 看起來只是秀 1304 01:08:38,489 --> 01:08:45,039 you the over the average time that this 您超過平均時間 1305 01:08:45,239 --> 01:08:48,190 execution takes so basically I do some 執行基本上需要我做一些 1306 01:08:48,390 --> 01:08:50,409 warm-up so my runtime should be happy 熱身,讓我的運行時快樂 warm-up: 熱身 1307 01:08:50,609 --> 01:08:52,989 with what is going on and if I'm going 發生了什麼,如果我要去 1308 01:08:53,189 --> 01:08:55,239 to rerun this application I will 重新運行此應用程式,我將 1309 01:08:55,439 --> 01:09:01,329 basically have the same output so around 基本上有相同的輸出 1310 01:09:01,529 --> 01:09:04,239 four seconds so everything that you can 四秒鐘,讓您可以做的一切 1311 01:09:04,439 --> 01:09:09,340 see is in miles so you have to to split 看到以英里為單位,所以您必須拆分 1312 01:09:09,539 --> 01:09:13,239 that on 1000 and have four seconds now 在1000上,現在有四秒鐘 1313 01:09:13,439 --> 01:09:17,039 if I'm going to just change the default 如果我要更改預設值 1314 01:09:17,239 --> 01:09:21,489 the default parameters for my 我的默認參數 1315 01:09:21,689 --> 01:09:24,300 application to you for example this one 以您的申請為例 1316 01:09:24,500 --> 01:09:27,279 for example I'm going to I want to use 例如我要去使用 1317 01:09:27,479 --> 01:09:32,949 the smallest cue I want to I want to set 我想要設定的最小提示 1318 01:09:33,149 --> 01:09:35,680 the the queue size for the smallest cue 最小提示的佇列大小 1319 01:09:35,880 --> 01:09:37,029 for 1000 為1000 1320 01:09:37,229 --> 01:09:40,630 for example elements and for small mm 例如元素和小毫米 1321 01:09:40,829 --> 01:09:43,210 elements and the same configuration as 元素和相同的配置 Configuration:setting 1322 01:09:43,409 --> 01:09:51,159 you can remember absolutely depends on 你會記得絕對取決於 1323 01:09:51,359 --> 01:09:53,320 what is going on in flat nap so for 平坦的午睡是怎麼回事 1324 01:09:53,520 --> 01:09:56,289 default parameters for no let's say it 不用說的默認參數 1325 01:09:56,489 --> 01:10:00,000 let's name it no arguments except mapper 讓我們將其命名為沒有任何參數,除了mapper 1326 01:10:00,199 --> 01:10:03,880 overload in that case the default 在這種情況下,超載 1327 01:10:04,079 --> 01:10:05,949 concurrency and default prefetch size 併發和默認預取大小 1328 01:10:06,149 --> 01:10:09,720 will be derived from small buffer size 將源自較小的緩衝區大小 1329 01:10:09,920 --> 01:10:12,730 which is here and which could be 在這裡,可能是 1330 01:10:12,930 --> 01:10:15,010 configured by providing that property 通過提供該屬性進行配置 1331 01:10:15,210 --> 01:10:17,980 and the prefetch size could be 並且預取大小可能是 1332 01:10:18,180 --> 01:10:20,920 configured by this property which can we 通過此屬性配置,我們可以 1333 01:10:21,119 --> 01:10:24,730 can set up in this way and just by 可以通過這種方式設置 1334 01:10:24,930 --> 01:10:28,510 tuning those three options we can 調整這三個選項,我們可以 1335 01:10:28,710 --> 01:10:30,820 increase our performance maybe in two 提高我們的表現也許在兩次 1336 01:10:31,020 --> 01:10:34,260 times yeah it's around one second and 是的,大約一秒鐘 1337 01:10:34,460 --> 01:10:38,949 600 miles here which is almost two times 600英里,幾乎是兩倍 1338 01:10:39,149 --> 01:10:40,810 better or three times better than 好於三倍 1339 01:10:41,010 --> 01:10:43,539 previous number which is good so 以前的號碼很好 1340 01:10:43,739 --> 01:10:47,079 basically we can just simply tune those 基本上我們可以簡單地調整那些 1341 01:10:47,279 --> 01:10:49,539 two parameters in order to improve our 為了改善我們的兩個參數 1342 01:10:49,739 --> 01:10:51,289 performance in our 在我們的表現 1343 01:10:51,489 --> 01:10:54,350 application as well however you should 應用程式,但是你應該 1344 01:10:54,550 --> 01:10:57,159 remember that by tuning those parameters 記住,通過調整這些參數 1345 01:10:57,359 --> 01:11:01,220 they have you have another impact you 他們對你有另一種影響 1346 01:11:01,420 --> 01:11:03,159 have an impact on the memory because 對記憶體有影響,因為 1347 01:11:03,359 --> 01:11:07,060 every cue allocation it means 每個提示分配意味著 1348 01:11:07,260 --> 01:11:09,860 allocation of the in the simplest case 在最簡單的情況下分配 1349 01:11:10,060 --> 01:11:12,920 allocation off of RA under the hood 幕後分配RA 1350 01:11:13,119 --> 01:11:16,159 which means that your streams will will 這意味著您的視頻流將 1351 01:11:16,359 --> 01:11:20,779 do have much more will use much more 確實有更多會使用更多 1352 01:11:20,979 --> 01:11:21,920 memory than before 記憶力比以前 1353 01:11:22,119 --> 01:11:24,640 so you have remember about that as well 所以你也記得 1354 01:11:24,840 --> 01:11:28,550 and the same could be done for publish 可以為發佈做同樣的事情 1355 01:11:28,750 --> 01:11:32,630 on and for publish operator and for 在和發佈運營商和 1356 01:11:32,829 --> 01:11:35,690 Kinkaid map because all ram relies on on Kinkaid地圖,因為所有ram都依賴 1357 01:11:35,890 --> 01:11:38,119 this default for example here we use the 例如,這裡使用預設值 1358 01:11:38,319 --> 01:11:41,180 same small buffer size per default which 每個默認的相同小緩衝區大小 1359 01:11:41,380 --> 01:11:44,539 means that here we have some prefetch 意味著這裡我們有一些預取 1360 01:11:44,739 --> 01:11:48,470 size higher than than before and in that 大小比以前大 1361 01:11:48,670 --> 01:11:50,510 case it potentially can improve the 可能會改善 1362 01:11:50,710 --> 01:11:52,460 performance by requesting more elements 通過請求更多元素來提高性能 1363 01:11:52,659 --> 01:11:55,550 from a synchronous source and in that 從同步源 1364 01:11:55,750 --> 01:11:57,020 case we can produce an increase 這樣我們就可以增加 1365 01:11:57,220 --> 01:11:59,329 performance as well and the same applies 性能也一樣 1366 01:11:59,529 --> 01:12:01,340 for complete map and for public ROM and 以獲得完整的地圖和公共ROM,以及 1367 01:12:01,539 --> 01:12:05,570 for public so when your when you are 對於公眾,所以當你當你 1368 01:12:05,770 --> 01:12:07,550 going to tune your application you have 要調整您的應用程式 1369 01:12:07,750 --> 01:12:10,130 to take into account those properties 考慮這些屬性 1370 01:12:10,329 --> 01:12:11,480 and you have to play with those 而且你必須和那些人一起玩 1371 01:12:11,680 --> 01:12:17,329 properties as well all right now let's 屬性,現在就讓我們 1372 01:12:17,529 --> 01:12:19,220 let's take a look at the real 讓我們來看看真正的 1373 01:12:19,420 --> 01:12:21,920 application and now let's try to apply 應用程式,現在讓我們嘗試應用 1374 01:12:22,119 --> 01:12:25,460 in all of those all of those two in all 在所有這兩個中 1375 01:12:25,659 --> 01:12:28,579 all of those dream changes all of those 所有這些夢想改變了所有那些 1376 01:12:28,779 --> 01:12:32,449 additional parameters to to our real 附加參數到我們的真實 1377 01:12:32,649 --> 01:12:36,920 application and see whether it improves 應用程式,看看是否有所改善 1378 01:12:37,119 --> 01:12:40,820 performance or not so here let me 表演與否所以在這裡讓我 1379 01:12:41,020 --> 01:12:44,270 shortly explain the application that I 簡要說明一下我的申請 1380 01:12:44,470 --> 01:12:47,810 have here so here is the image of the 有這裡所以這是 1381 01:12:48,010 --> 01:12:50,960 application that we are going to to work 我們將要工作的應用程式 1382 01:12:51,159 --> 01:12:55,130 with so here I have some cluster of 所以在這裡我有一些 1383 01:12:55,329 --> 01:12:58,789 services and here I have a plain Marvel 服務,在這裡我有一個簡單的奇跡 1384 01:12:58,989 --> 01:13:02,000 application that allows me to to to run 允許我運行的應用程式 1385 01:13:02,199 --> 01:13:04,400 a tournament between marbles 大理石之間的比賽 Tournament: 比賽 Marbles:彈珠 1386 01:13:04,600 --> 01:13:07,730 Kinnock heroes and choose which Marvel Kinnock英雄,然後選擇哪個奇跡 1387 01:13:07,930 --> 01:13:12,380 hero is the best one so I hope this this 英雄是最好的,所以我希望這個 1388 01:13:12,579 --> 01:13:14,710 guy build the working 傢伙建立工作 1389 01:13:14,909 --> 01:13:22,820 let me just rerun it come on as usual 讓我像往常一樣重新運行它 1390 01:13:23,020 --> 01:13:26,539 I don't want work so let me double check 我不想工作,所以讓我仔細檢查一下 1391 01:13:26,739 --> 01:13:29,779 whether it's running or not just a 無論它是否正在運行 1392 01:13:29,979 --> 01:13:33,170 second and I will be showing you yes 第二,我會向你展示 1393 01:13:33,369 --> 01:13:37,090 usually here I have here's viewer issues 通常這裡我有觀眾的問題 1394 01:13:37,289 --> 01:13:40,550 yeah let me just restore those guys and 是的,讓我恢復那些傢伙, 1395 01:13:40,750 --> 01:13:45,470 let me just restore the broker 讓我恢復經紀人 restore恢復 1396 01:13:45,670 --> 01:13:47,360 application in order to ensure that 申請以確保 1397 01:13:47,560 --> 01:13:51,770 everything is in good condition yeah so 一切都很好,是的,所以 1398 01:13:51,970 --> 01:13:56,510 in general as you have seen we have at 如您所見,通常 1399 01:13:56,710 --> 01:13:59,930 least four elements and four parts of 至少四個元素和四個部分 1400 01:14:00,130 --> 01:14:03,170 our system we have broker which is our 我們的系統我們有經紀人,這是我們的 1401 01:14:03,369 --> 01:14:05,720 socket broker we have an hour record 通訊端代理,我們有一個小時的記錄 1402 01:14:05,920 --> 01:14:08,779 server record server which can which can 伺服器記錄伺服器可以 1403 01:14:08,979 --> 01:14:11,449 communicate with database in in this 在此與資料庫通信 1404 01:14:11,649 --> 01:14:13,659 case we are using a little bit simpler 情況下,我們使用的更簡單 1405 01:14:13,859 --> 01:14:16,400 implementation of record servers which 記錄伺服器的實現 1406 01:14:16,600 --> 01:14:19,610 just consumes and pretend and supplies 只是消費,假裝和供應 1407 01:14:19,810 --> 01:14:22,279 data t-to to the requester from the 數據從 1408 01:14:22,479 --> 01:14:25,640 memory and here we have the client we 記憶,這裡有客戶,我們 1409 01:14:25,840 --> 01:14:27,680 have a tournament server which does 有一個比賽伺服器 1410 01:14:27,880 --> 01:14:30,500 which has some business logic in there 裡面有一些業務邏輯 1411 01:14:30,699 --> 01:14:35,060 so let me quickly go through the 所以讓我快速流覽一下 1412 01:14:35,260 --> 01:14:37,909 pipeline that we have so in general here 我們在這裡通常擁有的管道 1413 01:14:38,109 --> 01:14:41,000 we use a sum reactor stuff we use 我們使用總和反應堆的東西 1414 01:14:41,199 --> 01:14:44,779 publish on operator we use flat map here 在運營商上發佈我們在這裡使用平面地圖 1415 01:14:44,979 --> 01:14:46,789 will you subscribe on in order to run 您會訂閱以便運行嗎 1416 01:14:46,989 --> 01:14:49,579 our code on the different thread we use 我們在不同執行緒上使用的代碼 1417 01:14:49,779 --> 01:14:51,470 some buffer we use some additional 一些緩衝區,我們使用一些額外的 1418 01:14:51,670 --> 01:14:53,570 transformation and so for and so on and 等等,等等 1419 01:14:53,770 --> 01:14:56,329 since we use here our socket which is 因為我們在這裡使用我們的插座 1420 01:14:56,529 --> 01:14:59,750 reactive streams over the network so our 網路上的反應性流,所以我們 1421 01:14:59,949 --> 01:15:02,420 socket is basically the same reactive 插座基本上是相同的反應 1422 01:15:02,619 --> 01:15:04,340 streams as we have in Java but through 流,就像我們在Java中一樣 1423 01:15:04,539 --> 01:15:07,750 the network so it does everything to you 網路,以便它為您做一切 1424 01:15:07,949 --> 01:15:11,390 to encode your requests and elements to 將您的請求和元素編碼為 1425 01:15:11,590 --> 01:15:13,550 the frame and then decode it on the 幀,然後在 Frame:框 1426 01:15:13,750 --> 01:15:16,100 other side or on the other service and 另一方或另一方 1427 01:15:16,300 --> 01:15:18,320 in that way preserve 以這種方式保存 1428 01:15:18,520 --> 01:15:21,708 but pressure and it's build on top of it 但是壓力是建立在壓力之上的 1429 01:15:21,908 --> 01:15:24,079 and it's built for performance so it 它是為提高性能而設計的 1430 01:15:24,279 --> 01:15:27,380 uses only one only one connection and so 僅使用一個,只有一個連接,因此 1431 01:15:27,579 --> 01:15:29,600 foreign zone and in general this is the 外國區,通常這是 1432 01:15:29,800 --> 01:15:31,220 same react to streams but through the 相同的反應流,但通過 1433 01:15:31,420 --> 01:15:34,038 network that's all we have to know about 網路就是我們所需要知道的