เดนเดฒเต, เดนเดฌเตเตผ.
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ, เดฎเตเดเตเดฐเตเดธเตผเดตเตเดธเตเดเตพ เดชเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดฐเต เดชเด เดจ เด เดจเตเดคเดฐเตเดเตเดทเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจ เดเตปเตเดฑเต เด เดจเตเดญเดตเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเต เดธเดเดธเดพเดฐเดฟเดเตเดเดพเตป เดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดชเตเดคเดฟเดฏ เดเตเดณเตเด เดชเด เดฟเดเตเดเตเดฎเตเดชเตเตพ, เดเตปเตเดฑเต เดฒเตเดเตเดเตฝ เดฎเตเดทเตเดจเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดเตเดเตเดคเตฝ เดฑเดฟเดฏเดฒเดฟเดธเตเดฑเตเดฑเดฟเดเต เด เดตเดธเตเดฅเดฏเดฟเดฒเตเด เด เดคเต เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเตป เดเดพเตป เดเดชเตเดชเตเดดเตเด เดเดเตเดฐเดนเดฟเดเตเดเต. เด เดคเดฟเดจเดพเตฝ, เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดฎเตเดเตเดฐเตเดธเตผเดตเตเดธเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต, เด เดคเต เดชเดฟเดจเตเดจเตเดเต เดเดฒเตเดฒเดพเดคเตเดคเดฐเด เดฐเดธเดเดฐเดฎเดพเดฏ เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏเดเดณเตเด เดเดชเดฏเตเดเดฟเดเตเดเต "เดคเตเดเตเดเดฟเดเตเดเดฟเดเดเตเดเดพเดตเตเดจเตเดจเดคเดพเดฃเต". เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเตปเตเดฑเต เดชเตเดฐเดงเดพเดจ เดเดตเดถเตเดฏเดเดค เดฏเดฅเดพเตผเดคเตเดฅ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเตเดเตเดณเตเดณ เด เดคเดฟเตปเตเดฑเต เดชเดฐเดฎเดพเดตเดงเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเดชเดฐเดฎเดพเดฏ เดธเดพเดฎเตเดชเตเดฏเดฎเดพเดฃเต.
เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ, เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเตปเตเดฑเต เดธเตเดทเตเดเดฟเดฏเต เดเดพเตป เดชเดฒ เดเดเตเดเดเตเดเดณเดพเดฏเดฟ เดตเดฟเดญเดเดฟเดเตเดเต:
-
เดฐเดฃเตเดเต เดธเตเดตเดจเดเตเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเตเด - 'เดฌเดพเดเตเดเตเตปเดกเต', 'เดเตเดฑเตเดฑเตโเดตเต', เด เดตเดฏเต เดกเตเดเตเดเตผ เดเดฎเตเดเตเดเดณเดพเดฏเดฟ เดชเดพเดเตเดเต เดเตเดฏเตโเดคเต เดเดฐเตเดฎเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเด
เดเตเดตเตเดกเตเดเตพ: เดเดพเดต 11, เดธเตเดชเตเดฐเดฟเดเดเต เดฌเตเดเตเดเต, เดกเตเดเตเดเตผ, เดเดฎเตเดเต เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเตเดทเตป
-
เดเตเดตเตเดกเตเดเตพ: เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต, เดเดฟเดเตเด, เดฑเดฟเดธเตเดดเตโเดธเต เดฎเดพเดจเตเดเตโเดฎเตเตปเตเดฑเต, เดเดเตเดเตเดธเตโเดเตเดฒเดฟเดเดเต, เดฐเดนเดธเตเดฏเดเตเดเตพ
-
เดเตเดเตเดคเตฝ เดเดพเดฐเตเดฏเดเตเดทเดฎเดฎเดพเดฏ เดเตเดฒเดธเตเดฑเตเดฑเตผ เดฎเดพเดจเตเดเตเดฎเตเตปเตเดฑเดฟเดจเดพเดฏเดฟ เดนเตเตฝเด 3 เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดเดพเตผเดเตเดเต เดธเตเดทเตเดเดฟเดเตเดเตเด
เดเตเดตเตเดกเตเดเตพ: เดนเตเตฝเด 3, เดเดพเตผเดเตเดเต เดตเดฟเดจเตเดฏเดพเดธเด
-
เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เดธเตเดตเดฏเดฎเตเดต เดเตเดกเต เดกเตเดฒเดฟเดตเตผ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเตเดเตเดเดฟเตปเดธเตเด เดชเตเดชเตเดชเต เดฒเตเดจเตเด เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต
เดเตเดตเตเดกเตเดเตพ: เดเตเตปเดเดฟเตปเดธเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป, เดชเตเดฒเดเดฟเดจเตเดเตพ, เดชเตเดฐเดคเตเดฏเตเด เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดถเตเดเดฐเด
เดเดฐเต เดเดเตเดเดคเตเดคเดฟเดจเตเด เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดฒเตเดเดจเด เดธเดฎเตผเดชเตเดชเดฟเดเตเดเดพเตป เดเดพเตป เดชเดฆเตเดงเดคเดฟเดฏเดฟเดเตเดจเตเดจเต.
เด เดฒเตเดเดจ เดชเดฐเดฎเตเดชเดฐเดฏเตเดเต เดถเตเดฐเดฆเตเดงเดพเดเตเดจเตเดฆเตเดฐเด เดฎเตเดเตเดฐเตเดธเตผเดตเตเดธเตเดเตพ เดเดเตเดเดจเต เดเดดเตเดคเดพเด เดเดจเตเดจเดฒเตเดฒ, เดฎเดฑเดฟเดเตเดเต เด เดตเดฏเต เดเดเตเดเดจเต เดเดฐเตเดฑเตเดฑ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเด เดเดจเตเดจเดคเดพเดฃเต. เดเดตเดฏเตเดฒเตเดฒเดพเด เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดกเดตเดฒเดชเตเดชเดฑเตเดเต เดเดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเดคเตเดคเดฟเดจเต เดชเตเดฑเดคเตเดคเดพเดฃเตเดเตเดเดฟเดฒเตเด, เด เดตเดฐเตเดฎเดพเดฏเดฟ เดเตเดฑเดเตเดเดคเต 20% เดชเดฐเดฟเดเดฟเดคเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดเดชเตเดชเตเดดเตเด เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดฃเตเดจเตเดจเต เดเดพเตป เดเดฐเตเดคเตเดจเตเดจเต (เดซเดฒเดคเตเดคเดฟเตปเตเดฑเต 80% เดเดคเต เดเดฃเดเตเดเดพเดเตเดเตเดจเตเดจเต). เดฐเดเดฏเดฟเดคเดพเดตเดฟเดจเต เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดฑเดเตเดเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดธเตเดฐเดเตเดท เดชเตเดฒเตเดณเตเดณ เดตเดณเดฐเต เดชเตเดฐเดงเดพเดจเดชเตเดชเตเดเตเด เดเดฟเดฒ เดตเดฟเดทเดฏเดเตเดเตพ เด เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดดเดฟเดตเดพเดเตเดเดชเตเดชเตเดเตเด; เดธเดฟเดธเตเดฑเตเดฑเด เดตเตเดฏเดเตเดคเดฟเดเดค เดเดชเดฏเตเดเดคเตเดคเดฟเดจเต เดฎเดพเดคเตเดฐเดฎเดพเดฏเดฟ เดธเตเดทเตเดเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเต. เดเดคเต เด เดญเดฟเดชเตเดฐเดพเดฏเดเตเดเดณเตเดฏเตเด เดธเตเดทเตเดเดฟเดชเดฐเดฎเดพเดฏ เดตเดฟเดฎเตผเดถเดจเดเตเดเดณเตเดฏเตเด เดเดพเตป เดธเตเดตเดพเดเดคเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดฎเตเดเตเดฐเตเดธเตผเดตเตเดธเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต
เดธเตเดชเตเดฐเดฟเดเดเต เดฌเตเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดพเดต 11 เดฒเดพเดฃเต เดธเตเดตเดจเดเตเดเตพ เดเดดเตเดคเดฟเดฏเดคเต. REST เดเดชเดฏเตเดเดฟเดเตเดเต เดเตปเตเดฑเตผ-เดธเตผเดตเตเดธเต เดเดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด เดธเดเดเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต. เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเตฝ เดเดฑเตเดฑเดตเตเด เดเตเดฑเดเตเด เดเดฃเตเดฃเด เดเตเดธเตเดฑเตเดฑเตเดเตพ เดเตพเดชเตเดชเตเดเตเด (เด
เดคเดฟเดจเดพเตฝ เดเตเดเตเดเดฟเตปเดธเดฟเตฝ เดชเดฟเดจเตเดจเตเดเต เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเดจเดพเดเตเด). เดธเตเดตเดจเดเตเดเดณเตเดเต เดธเตเดดเตเดธเต เดเตเดกเต GitHub-เตฝ เดฒเดญเตเดฏเดฎเดพเดฃเต:
เดเดฐเต เดธเตเดตเดจเดเตเดเดณเตเดเตเดฏเตเด เดจเดฟเดฒ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป, เด เดตเดฏเตเดเต เดเดถเตเดฐเดฟเดคเดคเตเดตเดคเตเดคเดฟเดฒเตเดเตเดเต เดเดฐเต เดธเตเดชเตเดฐเดฟเดเดเต เดเดเตเดฏเตเดตเตเดฑเตเดฑเตผ เดเตเตผเดคเตเดคเต. เดเดคเต เดเดฐเต เดเตปเดกเตโเดชเตเดฏเดฟเตปเตเดฑเต / เดเดเตเดเตเดตเตเดฑเตเดฑเตผ/เดนเตเตฝเดคเตเดคเต เดธเตเดทเตโเดเดฟเดเตเดเตเดเดฏเตเด เดธเตเดตเดจเด เดเตเดฐเดพเดซเดฟเดเต เดธเตเดตเตเดเดฐเดฟเดเตเดเดพเตป เดคเดฏเตเดฏเดพเดฑเดพเดฃเตเดเตเดเดฟเตฝ 200 เดเดจเตเดจ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเตเดฐเดถเตโเดจเดเตเดเตพ เดเดฃเตเดเดพเดฏเดพเตฝ 504 เดเดจเตเดจ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต เดจเตฝเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด. เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดคเต เดคเดฟเดเดเตเดเตเด เดธเดพเดเตเดเตฝเดชเตเดชเดฟเด เดชเดฐเดฟเดถเตเดงเดจเดฏเดพเดฃเต, เดเดพเดฐเดฃเด เดธเตเดตเดจเดเตเดเตพ เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฃเต, เดเตเดเดพเดคเต เดเดคเตเดเตเดเดฟเดฒเตเด เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดฌเดฒเดชเตเดฐเดฏเตเดเดคเตเดคเดฟเดจเต เดเตเดดเดฟเตฝ เด เดต เดญเดพเดเดฟเดเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดฎเดพเดฏเดฟ เดคเตเดเดฐเตเดจเตเดจเดคเดฟเดจเตเดเตเดเดพเตพ เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เดฒเดญเตเดฏเดฎเดฒเตเดฒเดพเดคเดพเดเดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดค เดเตเดเตเดคเดฒเดพเดฃเต. เดเดจเตเดจเดพเตฝ เดฏเดฅเดพเตผเดคเตเดฅ เดธเดฟเดธเตเดฑเตเดฑเดเตเดเดณเดฟเตฝ, เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพ เดเดฐเต เดชเตเดฐเดถเตโเดจเดคเตเดคเดฟเตฝ เด เดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เด เดคเต เดเดฃเตเดเตเดชเดฟเดเดฟเดเตเดเดพเตป เดเดเตเดเตเดตเตเดฑเตเดฑเตผ เดธเดนเดพเดฏเดฟเดเตเดเตเด. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดเตโเดธเดธเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเดเต เดชเตเดฐเดถเตโเดจเดเตเดเตพ เดเดฃเตเดเดพเดฏเดพเตฝ, เดธเตเดตเดจเดคเตเดคเดฟเตปเตเดฑเต เดเดฐเต เดคเดเตผเดจเตเดจ เดเดฆเดพเดนเดฐเดฃเด เดเดชเดฏเตเดเดฟเดเตเดเต เด เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเดฟเดฒเตเดเต เดเดเตเดเตพเดเตเดเต เดธเตเดตเดฏเดฎเตเดต เดเดคเดฟเดจเตเดเต เดชเตเดฐเดคเดฟเดเดฐเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
เดฌเดพเดเตเดเตเดเตปเดกเต เดธเตเดตเดจเด
เดฌเดพเดเตเดเตเตปเดกเต เดธเตเดตเดจเด, เดธเตเดตเตเดเดฐเดฟเดเตเด เด เดญเตเดฏเตผเดคเตเดฅเดจเดเดณเตเดเต เดเดฃเตเดฃเด เดเดฃเดเตเดเดพเดเตเดเดฟ เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเด.
เดเตบเดเตเดฐเตเดณเตผ เดเตเดกเต:
@RestController
public class RequestsCounterController {
private final AtomicLong counter = new AtomicLong();
@GetMapping("/requests")
public Long getRequestsCount() {
return counter.incrementAndGet();
}
}
เดเตบเดเตเดฐเตเดณเตผ เดเตเดธเตเดฑเตเดฑเต:
@WebMvcTest(RequestsCounterController.class)
public class RequestsCounterControllerTests {
@Autowired
private MockMvc mockMvc;
@Test
public void firstRequest_one() throws Exception {
mockMvc.perform(get("/requests"))
.andExpect(status().isOk())
.andExpect(MockMvcResultMatchers.content().string("1"));
}
}
เดเตเดฑเตเดฑเตโเดตเต เดธเตเดตเดจเด
เดเตเดฑเตเดฑเตโเดตเต เดฌเดพเดเตเดเตเตปเดกเต เดธเตเดตเดจเดคเตเดคเดฟเดฒเตเดเตเดเต เด เดญเตเดฏเตผเดคเตเดฅเดจ เดเตเดฎเดพเดฑเตเด, เด เดคเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเดฟเดตเดฐเดเตเดเดณเตเดเตเดชเตเดชเด เด เดจเตเดฌเดจเตเดงเดฎเดพเดฏเดฟ เดจเตฝเดเตเด:
- เดเตเดฑเตเดฑเตโเดตเต เดเดกเดฟ. เดธเตเตผเดตเตผ เดชเตเดฐเดคเดฟเดเดฐเดฃเด เดตเดดเดฟ เดเตเดฑเตเดฑเตโเดตเตเดฏเตเดเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดฎเดฑเตเดฑเตเดจเตเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเตผเดคเดฟเดฐเดฟเดเตเดเดฑเดฟเดฏเดพเตป เดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต.
- เดตเดณเดฐเต เดชเตเดฐเดงเดพเดจเดชเตเดชเตเดเตเด เดเดฐเต เดชเดพเดธเตโเดตเตเดกเดฟเตปเตเดฑเต เดชเดเตเดเต เดตเดนเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด "เดฐเดนเดธเตเดฏเด" (เดเดฐเต เดชเตเดฐเดงเดพเดจ เดเตเดเตเดเดฟเดฏเตเดเต เดเตปเดเตเดฐเดฟเดชเตเดทเดจเตเดณเตเดณ เดเต เดจเดฎเตเดชเตผ)
application.properties เดฒเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป:
backend.url=http://localhost:8081
instance.id=${random.int}
secret="default-secret"
เดฌเดพเดเตเดเตเตปเดกเตเดฎเดพเดฏเตเดณเตเดณ เดเดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดคเตเดคเดฟเดจเตเดณเตเดณ เด เดกเดพเดชเตเดฑเตเดฑเตผ:
@Service
public class BackendAdapter {
private static final String REQUESTS_ENDPOINT = "/requests";
private final RestTemplate restTemplate;
@Value("${backend.url}")
private String backendUrl;
public BackendAdapter(RestTemplateBuilder builder) {
restTemplate = builder.build();
}
public String getRequests() {
ResponseEntity<String> response = restTemplate.getForEntity(
backendUrl + REQUESTS_ENDPOINT, String.class);
return response.getBody();
}
}
เดเดฃเตเดเตเดฐเตเดพเดณเตผ:
@RestController
@RequiredArgsConstructor
public class EndpointController {
private final BackendAdapter backendAdapter;
@Value("${instance.id}")
private int instanceId;
@Value("${secret}")
private String secret;
@GetMapping("/")
public String getRequestsCount() {
return String.format("Number of requests %s (gateway %d, secret %s)", backendAdapter.getRequests(), instanceId, secret);
}
}
เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเด:
เดจเดฎเตเดเตเดเต เดฌเดพเดเตเดเตเดเตปเดกเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดพเด:
./mvnw package -DskipTests
java -Dserver.port=8081 -jar target/microservices-backend-1.0.0.jar
เดจเดฎเตเดเตเดเต เดเตเดฑเตเดฑเตเดตเต เดเดฐเดเดญเดฟเดเตเดเดพเด:
./mvnw package -DskipTests
java -jar target/microservices-gateway-1.0.0.jar
เดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต:
$ curl http://localhost:8080/
Number of requests 1 (gateway 38560358, secret "default-secret")
เดเดฒเตเดฒเดพเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต. เดเตเดฑเตเดฑเตโเดตเต เดฎเดฑเดฟเดเดเดจเตเดจเต เดฌเดพเดเตเดเตเตปเดกเดฟเดฒเตเดเตเดเต เดจเตเดฐเดฟเดเตเดเต เดชเตเดฐเดตเตเดถเดฟเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดจเตเดจเตเด เดจเดฎเตเดฎเต เดคเดเดฏเตเดจเตเดจเดฟเดฒเตเดฒเตเดจเตเดจเต เดถเตเดฐเดฆเตเดงเดฏเตเดณเตเดณ เดตเดพเดฏเดจเดเตเดเดพเดฐเตป เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด (
เดเตเดเดพเดคเต, เดฐเดฃเตเดเต เดธเตเดตเดจเดเตเดเดณเตเด เดเดฐเต เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเด เดชเดเตเดเดฟเดเตเดจเตเดจเต, เดคเตเดฐเตเดกเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เดเดฐเต เดเดเตเดเดคเตเดคเดฟเตฝ เดชเดฐเดธเตเดชเดฐเด เดเดเดชเตเดเดพเตป เดคเตเดเดเตเดเตเด. เดเดเตเดเดณเตเดเต เดฎเตเดเตเดฐเตเดธเตผเดตเตเดธเตเดเดณเต เดเดฑเตเดฑเดชเตเดชเตเดเตเดคเตเดคเตเดจเตเดจเดคเต เดจเดจเตเดจเดพเดฏเดฟเดฐเดฟเดเตเดเตเด. เดตเตเดฏเดคเตเดฏเดธเตโเดค เดฎเตเดทเตเดจเตเดเดณเดฟเตฝ (เดงเดพเดฐเดพเดณเด เดชเดฃเด, เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเต), เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเตพ (เดฑเดฟเดธเตเดดเตโเดธเต-เดเตปเตเดฑเตปเดธเตเดตเต, เดฒเตเดเดเต เดธเตเดฑเตเดฑเดพเตผเดเตเดเดชเตเดชเต) เดเดชเดฏเตเดเดฟเดเตเดเต เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฃเตเดเตเดฏเตโเดจเดฑเตเดธเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเต เด
เดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตโเดคเต เดเดคเต เดจเตเดเดพเดจเดพเดเตเด. เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเดคเตเดชเตเดฒเต, เดเดเตเดเตพ เดฎเตเดจเตเดจเดพเดฎเดคเตเดคเต เดเดชเตเดทเตป เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดจเตเดจเต
เดกเตเดเตเดเตผ
เดเตเดฐเตเดเตเดเดคเตเดคเดฟเตฝ, เดกเตเดเตเดเตผ เดเดฑเตเดฑเดชเตเดชเตเดเตเด เดเดฃเตเดเตเดฏเตเดจเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต, เดเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเด. เดกเตเดเตเดเตผ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดเตเดเตพ เดเดฐเต เดกเตเดเตเดเตผเดซเดฏเตฝ เดเดดเตเดคเตเดฃเตเดเดคเตเดฃเตเดเต - เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ. เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฟเดคเตเดฐเด เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเดจเตเด เดเดฎเตเดเต เดฐเดเดฟเดธเตเดเตเดฐเดฟเดฏเดฟเดฒเตเดเตเดเต เด
เดชเตโเดฒเตเดกเต เดเตเดฏเตเดฏเดพเดจเตเด เดเดดเดฟเดฏเตเด (เดจเดฎเตเดชเตผ.
Dockerfile
เดเดฐเต เดเดฟเดคเตเดฐเดคเตเดคเดฟเตปเตเดฑเต เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดงเดพเดจเดชเตเดชเตเดเตเด เดธเดตเดฟเดถเตเดทเดคเดเดณเดฟเดฒเตเดจเตเดจเต เด เดคเดฟเตปเตเดฑเต เดตเดฒเตเดชเตเดชเดฎเดพเดฃเต. เดเดฐเต เดเตเดเดชเดพเดเตเดฑเตเดฑเต เดเดฎเตเดเต เดเดฐเต เดฑเดฟเดฎเตเดเตเดเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดเดคเตเดคเดฟเตฝ เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเด, เดเตเดฑเดเตเดเต เดธเตเดฅเดฒเด เดเดเตเดเตเดเตเด, เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเด เดตเตเดเดคเตเดคเดฟเตฝ เดเดฐเดเดญเดฟเดเตเดเตเด. เดเดคเตเดฐเต เดเดฟเดคเตเดฐเดตเตเด เดเดฐเต เด เดเดฟเดธเตเดฅเดพเดจ เดเดฟเดคเตเดฐเดคเตเดคเดฟเตปเตเดฑเต เด เดเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเดฒเดพเดฃเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต, เดเดฑเตเดฑเดตเตเด เดเตเดฐเตเดเตเดเดฟเดฏ เดเดชเตเดทเตป เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเดพเตป เดเดคเต เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต. เดเดฐเต เดจเดฒเตเดฒ เดเดชเตเดทเตป เดเตฝเดชเตเตป เดเดฃเต, เดเตเดฐเตเดเตเดเดฟเดฏ เดชเดพเดเตเดเตเดเตเดเดณเตเดณเตเดณ เดเดฐเต เดชเตเตผเดฃเตเดฃ เดฒเดฟเดจเดเตเดธเต เดตเดฟเดคเดฐเดฃเดฎเดพเดฃเต.
เดเดฆเตเดฏเด, เดจเดฎเตเดเตเดเต เดเดฐเต เดกเตเดเตเดเตผเดซเดฏเตฝ "เดคเดฒเดฏเดฟเตฝ" เดเดดเตเดคเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดพเด (เดเดคเตเดฐเต เดฎเตเดถเด เดฎเดพเตผเดเดฎเดพเดฃเตเดจเตเดจเต เดเดพเตป เดเดเตป เดชเดฑเดฏเตเด, เด เดคเต เดเตเดฏเตเดฏเดฐเตเดคเต):
FROM adoptopenjdk/openjdk11:jdk-11.0.5_10-alpine
ADD . /src
WORKDIR /src
RUN ./mvnw package -DskipTests
EXPOSE 8080
ENTRYPOINT ["java","-jar","target/microservices-gateway-1.0.0.jar"]
เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตโเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดเตเดเตพ เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดค JDK เดเดณเตเดณ เดเดฐเต เดเตฝเดชเตเตป เด เดงเดฟเดทเตเด เดฟเดค เดฌเตเดธเต เดเดฎเตเดเดพเดฃเต เดเดตเดฟเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต. ADD เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต, เดเดเตเดเตพ เดเดฟเดคเตเดฐเดคเตเดคเดฟเดฒเตเดเตเดเต เดจเดฟเดฒเดตเดฟเดฒเต src เดกเดฏเดฑเดเตเดเดฑเดฟ เดเตเตผเดเตเดเตเดเดฏเตเด เด เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดพเดฏเดฟ เด เดเดฏเดพเดณเดชเตเดชเตเดเตเดคเตเดคเตเดเดฏเตเด (WORKDIR) เดฌเดฟเตฝเดกเต เดเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเดฒเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เด เดคเดฟเตปเตเดฑเต เดชเตเตผเดเตเดเต 8080 เดเดชเดฏเตเดเดฟเดเตเดเตเดฎเตเดจเตเดจเต EXPOSE 8080 เดเดฎเดพเตปเดกเต เดกเตเดเตเดเดฑเดฟเดฒเตเดเตเดเต เดธเดฟเดเตเดจเดฒเตเดเตพ เดจเตฝเดเตเดจเตเดจเต (เดเดคเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเต เดชเตเดฑเดคเตเดคเต เดจเดฟเดจเตเดจเต เดเดเตโเดธเดธเต เดเตเดฏเตเดฏเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเดฟเดฒเตเดฒ, เดชเดเตเดทเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดเตโเดธเดธเต เดเตเดฏเตเดฏเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด เดคเต เดกเตเดเตเดเตผ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเดฒเต เดฎเดฑเตเดฑเตเดฐเต เดเดฃเตเดเตเดฏเตโเดจเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต. ).
เดเดฎเตเดเตเดเดณเดฟเดฒเตเดเตเดเต เดธเตเดตเดจเดเตเดเตพ เดชเดพเดเตเดเตเดเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดเดฐเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเตปเตเดฑเตเดฏเตเด เดฑเตเดเตเดเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดเตเดเตพ เดเดฎเดพเตปเดกเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต:
docker image build . -t msvc-backend:1.0.0
เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดจเดฎเตเดเตเดเต 456 MB เดตเดฒเตเดชเตเดชเดฎเตเดณเตเดณ เดเดฐเต เดเดฎเตเดเต เดฒเดญเดฟเดเตเดเตเดจเตเดจเต (เด เดคเดฟเตฝ เด เดเดฟเดธเตเดฅเดพเดจ JDK 340 เดเดฟเดคเตเดฐเด MB เดเดเตเดคเตเดคเต). เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดฒเต เดเตเดฒเดพเดธเตเดเตพ เดเดฐเต เดตเดฟเดฐเดฒเดฟเตฝ เดเดฃเตเดฃเดพเด เดเดจเตเดจ เดตเดธเตเดคเตเดค เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดเตเดเตเด. เดเดเตเดเดณเตเดเต เดเดฟเดคเตเดฐเดคเตเดคเดฟเตปเตเดฑเต เดตเดฒเตเดชเตเดชเด เดเตเดฑเดฏเตเดเตเดเตเดจเตเดจเดคเดฟเดจเต:
- เดเดเตเดเตพ เดฎเตพเดเตเดเดฟ-เดธเตเดฑเตเดฑเตเดชเตเดชเต เด เดธเดเดฌเตเดฒเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต. เดเดฆเตเดฏ เดเดเตเดเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเตเด, เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเดฟเตฝ เดเดเตเดเตพ JRE เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด, เดฎเตเดจเตเดจเดพเด เดเดเตเดเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเดคเตเดฒเตเดฒเดพเด เดเดฐเต เดชเตเดคเดฟเดฏ เดเตเดฒเตเตป เดเตฝเดชเตเตป เดเดฎเตเดเดฟเดฒเตเดเตเดเต เดชเดเตผเดคเตเดคเตเด. เดฎเตเดคเตเดคเดคเตเดคเดฟเตฝ, เด เดจเตเดคเดฟเดฎ เดเดฟเดคเตเดฐเดคเตเดคเดฟเตฝ เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดเดเดเตเดเตพ เดฎเดพเดคเตเดฐเดฎเต เด เดเดเตเดเดฟเดฏเดฟเดเตเดเตเดณเตเดณเต.
- เดจเดฎเตเดเตเดเต เดเดพเดต เดฎเตเดกเตเดฒเดฑเตเดธเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเดพเด. Java 9 เดฎเตเดคเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดฎเตเดกเตเดฏเตเดณเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดพเดคเตเดฐเด JRE เดธเตเดทเตเดเดฟเดเตเดเดพเตป jlink เดเตเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเด
เดเดฟเดเตเดเดพเดธเดฏเตเดณเตเดณเดตเตผเดเตเดเดพเดฏเดฟ, เดเดฟเดคเตเดฐเดคเตเดคเดฟเตปเตเดฑเต เดตเดฒเตเดชเตเดชเด เดเตเดฑเดฏเตเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเดฎเตเดชเดจเดเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดฐเต เดจเดฒเตเดฒ เดฒเตเดเดจเด เดเดคเดพ
เด เดจเตเดคเดฟเดฎ เดกเตเดเตเดเตผ เดซเดฏเตฝ:
FROM adoptopenjdk/openjdk11:jdk-11.0.5_10-alpine as builder
ADD . /src
WORKDIR /src
RUN ./mvnw package -DskipTests
FROM alpine:3.10.3 as packager
RUN apk --no-cache add openjdk11-jdk openjdk11-jmods
ENV JAVA_MINIMAL="/opt/java-minimal"
RUN /usr/lib/jvm/java-11-openjdk/bin/jlink
--verbose
--add-modules
java.base,java.sql,java.naming,java.desktop,java.management,java.security.jgss,java.instrument
--compress 2 --strip-debug --no-header-files --no-man-pages
--release-info="add:IMPLEMENTOR=radistao:IMPLEMENTOR_VERSION=radistao_JRE"
--output "$JAVA_MINIMAL"
FROM alpine:3.10.3
LABEL maintainer="Anton Shelenkov [email protected]"
ENV JAVA_HOME=/opt/java-minimal
ENV PATH="$PATH:$JAVA_HOME/bin"
COPY --from=packager "$JAVA_HOME" "$JAVA_HOME"
COPY --from=builder /src/target/microservices-backend-*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
เดเดเตเดเตพ เดเดฟเดคเตเดฐเด เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเต, เดเดเตเดตเดฟเตฝ เด เดคเต 6 เดฎเดเดเตเดเต เดเดจเด เดเตเดฑเดเตเดเต 77 MB เดเดฏเดฟ. เดฎเตเดพเดถเดฎเดฒเตเดฒ. เด เดคเดฟเดจเตเดถเตเดทเด, เดชเตเตผเดคเตเดคเดฟเดฏเดพเดฏ เดเดฟเดคเตเดฐเดเตเดเตพ เดเดฎเตเดเต เดฐเดเดฟเดธเตเดเตเดฐเดฟเดฏเดฟเดฒเตเดเตเดเต เด เดชเตโเดฒเตเดกเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด, เด เดเตเดเดจเต เดจเดฟเดเตเดเดณเตเดเต เดเดฟเดคเตเดฐเดเตเดเตพ เดเตปเตเดฑเตผเดจเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเตป เดฒเดญเตเดฏเดฎเดพเดฃเต.
เดกเตเดเตเดเดฑเดฟเตฝ เดธเตเดตเดจเดเตเดเตพ เดเดฐเตเดฎเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต
เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดเตเดเดณเตเดเต เดธเตเดตเดจเดเตเดเตพ เดเดฐเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเตฝ เดเดฏเดฟเดฐเดฟเดเตเดเดฃเด. เดกเตเดเตเดเดฑเดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ เดคเดฐเด เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเตเดเตพ เดเดฃเตเดเต, เด เดตเดฏเดฟเตฝ เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดพเดเตเดคเดฎเดพเดฏเดคเต เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต - เดฌเตเดฐเดฟเดกเตเดเต, เดเดฐเต เดนเตเดธเตเดฑเตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดเดฃเตเดเตเดฏเตโเดจเดฑเตเดเตพ เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฎเตเดเตเดเต เดเดฐเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เดธเตเดทเตเดเดฟเดเตเดเดพเด:
docker network create msvc-network
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, microservices-backend:1.0.0 เดเดจเตเดจ เดเดฎเตเดเดฟเดจเตเดชเตเดชเด 'backend' เดเดจเตเดจ เดชเตเดฐเดฟเดฒเตเดณเตเดณ เดเดฐเต เดฌเดพเดเตเดเตเตปเดกเต เดเดฃเตเดเตเดฏเตโเดจเตผ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดพเด:
docker run -dit --name backend --network msvc-net microservices-backend:1.0.0
เดฌเตเดฐเดฟเดกเตเดเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเต เด
เดตเดฐเตเดเต เดชเตเดฐเตเดเดณเดพเตฝ เดเดฃเตเดเตเดฏเตโเดจเดฑเตเดเตพเดเตเดเต เดฌเตเดเตโเดธเดฟเดจเต เดชเตเดฑเดคเตเดคเต เดธเตเดตเดจ เดเดฃเตเดเตเดคเตเดคเตฝ เดจเตฝเดเตเดจเตเดจเต เดเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต. เด
เดคเดพเดฏเดคเต, เดกเตเดเตเดเตผ เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเดฟเดจเตเดณเตเดณเดฟเตฝ เดฌเดพเดเตเดเตเตปเดกเต เดธเตเดตเดจเด เดฒเดญเตเดฏเดฎเดพเดเตเด
เดจเดฎเตเดเตเดเต เดเตเดฑเตเดฑเตเดตเต เดเดฐเดเดญเดฟเดเตเดเดพเด:
docker run -dit -p 80:8080 --env secret=my-real-secret --env BACKEND_URL=http://backend:8080/ --name gateway --network msvc-net microservices-gateway:1.0.0
เด เดเดฎเดพเตปเดกเดฟเตฝ เดเดเตเดเตพ เดเดเตเดเดณเตเดเต เดนเตเดธเตเดฑเตเดฑเดฟเตปเตเดฑเต เดชเตเตผเดเตเดเต 80 เดเดฃเตเดเตเดฏเตเดจเดฑเดฟเตปเตเดฑเต เดชเตเตผเดเตเดเต 8080-เดฒเตเดเตเดเต เดซเตเตผเดตเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดพเดฏเดฟ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต. เดเตปเดตเดฟเดฏเตเตบเดฎเตเตปเตเดฑเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดพเตป เดเดเตเดเตพ env เดเดชเตโเดทเดจเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต เดตเดธเดจเตเดคเดเดพเดฒเดคเตเดคเต เดธเตเดตเดฏเดฎเตเดต เดตเดพเดฏเดฟเดเตเดเตเดเดฏเตเด application.properties-เตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเตเดชเตเดชเตผเดเตเดเดฟเดเตพ เด เดธเดพเดงเตเดตเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดฒเตเดเตเดเต เดเตเดฏเตเดค เดถเตเดทเด, เดตเดฟเดณเดฟเดเตเดเตเด
เดคเตเดฐเตเดฎเดพเดจเด
เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดเดเตเดเตพ เดฐเดฃเตเดเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดฎเตเดเตเดฐเตเดธเตผเดตเตเดธเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเต, เด เดต เดกเตเดเตเดเตผ เดเดฃเตเดเตเดฏเตโเดจเดฑเตเดเดณเดฟเตฝ เดชเดพเดเตเดเตเดเตเดเตเดฏเตโเดคเต เดเดฐเต เดฎเตเดทเตเดจเดฟเตฝ เดเดฐเตเดฎเดฟเดเตเดเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดเดพเดเตเดจเตเดจ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เดฆเตเดทเดเตเดเดณเตเดฎเตเดฃเตเดเต:
- เดฎเตเดถเด เดคเตเดฑเตเดฑเต เดธเดนเดฟเดทเตเดฃเตเดค - เดเดฒเตเดฒเดพเด เดเดเตเดเตพเดเตเดเดพเดฏเดฟ เดเดฐเต เดธเตเตผเดตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต
- เดฎเตเดถเด เดธเตเดเตเดฒเดฌเดฟเดณเดฟเดฑเตเดฑเดฟ - เดฒเตเดกเต เดตเตผเดฆเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดจเตเดธเดฐเดฟเดเตเดเต, เด เดงเดฟเด เดธเตเดตเดจ เดธเดจเตเดฆเตผเดญเดเตเดเตพ เดธเตเดตเดฏเดฎเตเดต เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดเดฏเตเด เด เดตเดฏเตเดเตเดเดฟเดเดฏเดฟเดฒเตเดณเตเดณ เดฒเตเดกเต เดฌเดพเดฒเตปเดธเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดจเดจเตเดจเดพเดฏเดฟเดฐเดฟเดเตเดเตเด
- เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเด เดธเดเตเดเตเตผเดฃเตเดฃเดค - เดเดฟเดฒ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพเดเตเดเต เดเตเดฑเดเตเดเดคเต 3 เดเดฎเดพเตปเดกเตเดเดณเตเดเตเดเดฟเดฒเตเด เดจเตฝเดเตเดฃเตเดเดคเตเดฃเตเดเต (เดเดคเต 2 เดธเตเดตเดจเดเตเดเตพเดเตเดเต เดฎเดพเดคเตเดฐเด)
เดฎเตเตฝเดชเตเดชเดฑเดเตเด เดชเตเดฐเดถเตเดจเดเตเดเตพ เดชเดฐเดฟเดนเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดกเตเดเตเดเตผ เดธเตเดตเดพเด, เดจเตเดฎเดพเดกเต, เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดเดจเตเดจเดฟเดเตเดเดจเต เดจเดฟเดฐเดตเดงเดฟ เดชเดฐเดฟเดนเดพเดฐเดเตเดเดณเตเดฃเตเดเต. เดฎเตเดดเตเดตเตป เดธเดฟเดธเตเดฑเตเดฑเดตเตเด เดเดพเดตเดฏเดฟเตฝ เดเดดเตเดคเดฟเดฏเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดธเตเดชเตเดฐเดฟเดเดเต เดเตเดฒเตเดกเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเดพเด (
ะ
เด เดตเดฒเดเดฌเด: www.habr.com