JSON-RPC? เบžเบฑเบเบœเปˆเบญเบ™เบ—เบตเปˆเบซเบเบธเป‰เบ‡เบเบฒเบ

JSON-RPC? เบžเบฑเบเบœเปˆเบญเบ™เบ—เบตเปˆเบซเบเบธเป‰เบ‡เบเบฒเบ

เบ‚เป‰เบญเบเปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบซเบปเบงเบ‚เปเป‰เบ‚เปˆเบฒเบงเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ›เบฐเบ•เบดเบเบดเบฅเบดเบเบฒเบ—เบตเปˆเบกเบตเบชเบธเบ‚เบฐเบžเบฒเบšเบ”เบต - "เบ”เบต, เบกเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡ ... " เปเบ•เปˆเปƒเบซเป‰เบ‚เป‰เบญเบเบˆเบฑเบšเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเป€เบ›เบฑเบ™เป€เบงเบฅเบฒ 5-10 เบ™เบฒเบ—เบต, เปเบฅเบฐเบ‚เป‰เบญเบเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบšเปเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบ„เบฒเบ”เบซเบงเบฑเบ‡เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบœเบดเบ”เบซเบงเบฑเบ‡.

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเบˆเบฐเป€เบ›เบฑเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆ stereotypical เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐ "เบ—เปเบฒเบกเบฐเบŠเบฒเบ”" เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡ stereotype เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เป€เบœเบตเบ. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบซเบงเบฑเบ‡เบงเปˆเบฒเบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบˆเบฒเบเบกเบธเบกเปƒเบซเบกเปˆ.

เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบตเบ„เบงเบฒเบกเบŠเบฑเบ”เป€เบˆเบ™เบเปˆเบฝเบงเบเบฑเบš RPC เปเบกเปˆเบ™เบซเบเบฑเบ‡, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ JSON-RPC 2.0. เบเบฑเบš REST เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบŠเบฑเบ”เป€เบˆเบ™. เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™. เบ—เบธเบโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบธเบโ€‹เบขเปˆเบฒเบ‡โ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบฎเบนเป‰โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบš REST - เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เปเบเบโ€‹เบญเบญเบโ€‹เบˆเบฒเบโ€‹ HTTP.

เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป RPC เปเบกเปˆเบ™เป„เบงเปเบฅเบฐเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป batch.

เบˆเบธเบ”เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™ RPC เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป‚เบ—เบซเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เปƒเบ™เบซเบ™เบถเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเป‰เบฒเบ‡เบœเบนเป‰เปƒเบŠเป‰, เป€เบžเบตเปˆเบก avatar เบเบฑเบšเบฅเบฒเบงเปเบฅเบฐ, เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบฝเบงเบเบฑเบ™, เบˆเบญเบ‡เบฅเบฒเบงเปƒเบ™เบšเบฒเบ‡เบซเบปเบงเบ‚เปเป‰. เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹, เปเบฅเบฐโ€‹เบœเบปเบ™โ€‹เบ›เบฐโ€‹เป‚เบซเบเบ”โ€‹เบซเบผเบฒเบโ€‹เบ›เบฒเบ™โ€‹เปƒเบ”โ€‹!

เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบต backend node เบ”เบฝเบง, เบกเบฑเบ™เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป„เบงเบ‚เบถเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป batch. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบชเบฒเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป REST เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบชเบฒเบกเป€เบ—เบปเปˆเบฒเบˆเบฒเบเบซเบ™เบถเปˆเบ‡ node เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

JSON-RPC? เบžเบฑเบเบœเปˆเบญเบ™เบ—เบตเปˆเบซเบเบธเป‰เบ‡เบเบฒเบ

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เปเบฒเบญเบดเบ”เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ REST เบˆเบฐเบ•เป‰เบญเบ‡เบชเบปเปˆเบ‡เบ„เบทเบ™ ID เบœเบนเป‰เปƒเบŠเป‰เป€เบžเบทเปˆเบญเปƒเบซเป‰เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเป„เบ›. เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบฒเบ‡เบฅเบปเบšเบ•เปเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบเบฅเบงเบก.

เปเบ•เปˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบžเบฒเบเปƒเบ™เปเบฅเบฐเบงเบดเบชเบฒเบซเบฐเบเบดเบ”เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบธเบ”เบ—เป‰เบฒเบ, เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ WEB เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ. เปเบ•เปˆเบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ WEB เป€เบ•เบฑเบกเบฎเบนเบšเปเบšเบš, เปเบฅเบฐเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ HighLoad, เบเปเปˆเบšเปเปˆเบ„เบธเป‰เบกเบ„เปˆเบฒ. เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ‚เบญเบ‡เบ„เบงเบฒเบกเบžเป‰เบญเบกเปเบฅเบฐเบเบฒเบ™เป‚เบซเบผเบ”เบชเบนเบ‡. เปเบฅเบฐเบฎเบนเบšเปเบกเปˆเบ™เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡.

JSON-RPC? เบžเบฑเบเบœเปˆเบญเบ™เบ—เบตเปˆเบซเบเบธเป‰เบ‡เบเบฒเบ

เบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบเบดเบ”เบˆเบฐเบเปเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ„เบ‡เบฅเปˆเบฒเบ‡เบžเบฒเบเปƒเบ•เป‰เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เบ–เบทเบเบซเบกเบฒเบเป€เบ›เบฑเบ™เบชเบตเบ‚เบฝเบง. เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒ RPC เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบ™เบงเปƒเบ”เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ™เปเบฒเปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบ‚เบฒเบˆเบฒเบ balancer เบเบฑเบš backend เป„เบ”เป‰. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ REST เบเบฑเบ‡เบชเบนเบ™เป€เบชเบเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เปเบฒเบญเบดเบ”, เบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบงเบฅเบฒเบ—เบตเปˆเบชเบนเบ™เป€เบชเบเป„เบ›เป‚เบ”เบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบ„เบดเบšเบšเปเปˆเปเบกเปˆเบ™เบชเบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบชเบตเบกเบชเป‰เบฒเบ‡, เปเบ•เปˆ, เป€เบงเบปเป‰เบฒเบงเปˆเบฒ, เบซเป‰เบฒเบซเบผเบทเบชเบดเบš ... เปเบฅเบฐเบ„เปเบฒเบ•เบญเบšเบ‚เบญเบ‡เบ„เปเบฒเบ–เบฒเบก "เปƒเบœเบŠเบฐเบ™เบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™?" เบเบฒเบเป€เบ›เบฑเบ™เบšเปเปˆเบˆเบฐเปเบˆเป‰เบ‡.

เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบชเบฐโ€‹เป€เบซเบ™เบตโ€‹เปƒเบซเป‰โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบเบงเป‰เบฒเบ‡โ€‹เบ‚เบงเบฒเบ‡โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹. เปเบœเบ™เบงเบฒเบ”เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเปˆเบญเบ‡เบ—เบฒเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™, เปเบ•เปˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบšเปเปˆเบˆเปเบฒเบเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเบŠเปˆเบญเบ‡เบ—เบฒเบ‡. เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เป‚เบซเบผเบ”เบชเบนเบ‡เปเบกเปˆเบ™เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ. เบ•เบญเบ™เบ™เบตเป‰เบ‚เปเป€เบญเบปเบฒเบชเบดเปˆเบ‡เบ›เบญเบกเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”. เบŠเป‰เบณเป†. เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒ 32 เป€เบ—เบทเปˆเบญ.

JSON-RPC? เบžเบฑเบเบœเปˆเบญเบ™เบ—เบตเปˆเบซเบเบธเป‰เบ‡เบเบฒเบ

เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡ RPC เป„เบ”เป‰เบ›เบฑเบšเบ›เบธเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบชเบนเบ‡. เบชเบดเปˆเบ‡เบ—เบตเปˆเปเบกเปˆเบ™เบงเปˆเบฒ REST เปƒเบŠเป‰เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™ HTTP, เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบš RPC. เปƒเบ™เปเบœเบ™เบงเบฒเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบญเปเบฒเบ™เบฒเบ”เบ™เบตเป‰เบ–เบทเบเบฎเบฑเบšเบฎเบนเป‰เป‚เบ”เบเบœเปˆเบฒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป - GET.

เบงเบดเบ—เบตเบเบฒเบ™ HTTP, เปƒเบ™เบšเบฑเบ™เบ”เบฒเบชเบดเปˆเบ‡เบญเบทเปˆเบ™เป†, เบกเบตเบเบปเบ™เบฅเบฐเบเบธเบ”เบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบขเบนเปˆเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆ HTTP. เบชเปเบฒเบฅเบฑเบš RPC, เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป POST เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ idempotent, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบŠเป‰เปเบฒเบ„เบทเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป POST เบ”เบฝเบงเบเบฑเบ™เบญเบฒเบ”เบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเปเบ•เปˆเบฅเบฐเบ„เปเบฒเป€เบซเบฑเบ™เบ–เบทเบเบชเบปเปˆเบ‡, เบชเปเบฒเป€เบ™เบปเบฒเบญเบทเปˆเบ™เบ‚เบญเบ‡เบ„เปเบฒเป€เบซเบฑเบ™เบ™เบตเป‰เบˆเบฐเบ›เบฒเบเบปเบ”) (.เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™).

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, RPC เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ„เบ‡เบฅเปˆเบฒเบ‡เบขเปˆเบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐ "เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ" เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡เบŠเบญเบšเปเบง. เปเบœเบ™เบงเบฒเบ”เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™ Redis เปƒเบ™เบšเบปเบ”เบšเบฒเบ”เบ™เบตเป‰. เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, cache เบ‚เบญเบ‡เบŠเบญเบšเปเบง, เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบžเบตเปˆเบกเบŠเบฑเป‰เบ™เบฅเบฐเบซเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เปƒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ.

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เบ™เบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป REST เปเบฅเบฐ RPC "เปƒเบซเป‰เป€เบเบตเบ”" เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบเปเบฒเบฅเบฑเบ‡เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ?

เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป
เบเปˆเบญเบ‡เบˆเบปเบ” เปเบฒเบ
เบเบฑเบš backend
เบเบฑเบš DBMS
เบเบฑเบšโ€‹เบ–เบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹เบญเปˆเบญเบ™ (Redisโ€‹)
TOTAL

REST
1 / 32 *
1
1
0
3 / 35

CPR
32
32
1
31
96

[*] เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ” (เบ–เป‰เบฒเปเบ„เบ”เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰) 1 เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป (เบซเบ™เบถเปˆเบ‡!), เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เบ—เบตเปˆเบชเบธเบ” 32 เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒ.

เป€เบกเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เปเบฒเบญเบดเบ”, เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปเบกเปˆเบ™เป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡ REST เบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™. เปเบ•เปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบšเปเปˆเบขเบธเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบงเบกเบกเบต CDN. เป€เบฅเบทเป‰เบญเบเป†เบกเบฑเบ™เบเบฑเบ‡เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบ•เป‰เบฒเบ™เบเบฒเบ™เป‚เบˆเบกเบ•เบต DDoS เปเบฅเบฐ DoS. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš:

JSON-RPC? เบžเบฑเบเบœเปˆเบญเบ™เบ—เบตเปˆเบซเบเบธเป‰เบ‡เบเบฒเบ

เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบ”เบตเบชเปเบฒเบฅเบฑเบš RPC. RPC เบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบกเบญเบšเบงเบฝเบเปƒเบซเป‰ CDN เป„เบ”เป‰. เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เบญเบตเบ‡เปƒเบชเปˆเบฅเบฐเบšเบปเบšเป€เบžเบทเปˆเบญเบ•เป‰เบฒเบ™เบเบฒเบ™เป‚เบˆเบกเบ•เบต.

เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบ—เบตเปˆเบ™เบตเป‰? เปเบฅเบฐเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบšเปเปˆ. เบงเบดเบ—เบตเบเบฒเบ™ HTTP, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบกเบต " magic" เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เปเบฅเบฐเบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบšเปเปˆเบกเบตเป€เบซเบ”เบœเบปเบ™เบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™ GET เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปƒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡เป€เบ™เบทเป‰เบญเบซเบฒ, เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเบญเบปเบ‡เบ›เบฐเบเบญเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบเปˆเบญเบ™เบ—เบตเปˆเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบˆเบฐเบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™, เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบ—เป‰เป†. เปเบ•เปˆเปƒเบ™ RPC เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰ ... เปเบกเปˆเบ™เบ–เบทเบเบฅเบฐเป€เบฅเบตเบ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™เบซเบเบฑเบ‡ myth เบงเปˆเบฒเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป batch (RPC) เปเบกเปˆเบ™เป„เบงเบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡? เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™, เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ‚เป‰เบญเบเบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆ REST เบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เบ‚เบญเบ‡เบกเบฑเบ™. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบฅเบฒเบงเป€เบ•เบฑเบกเปƒเบˆเบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เบˆเบธเบ”เบญเปˆเบญเบ™เบ‚เบญเบ‡เบฅเบฒเบง.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡ REST เบซเบผเบท RPC เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เป€เบฅเบทเบญเบ volitional เบ‚เบญเบ‡เบšเบธเบเบ„เบปเบ™เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบ•เป‰เบญเบ‡เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™. เบ–เป‰เบฒเป‚เบ„เบ‡เบเบฒเบ™เบชเบฒเบกเบฒเบ”เบšเบตเบšเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบญเบญเบเบˆเบฒเบ REST, เปเบฅเบฐเบกเบฑเบ™เบเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบกเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ REST เบˆเบฐเป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ”เบตเป€เบฅเบตเบ”.

เปเบ•เปˆเบ–เป‰เบฒ, เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ REST, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเป‰เบฒเบ‡เบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™ devops เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเบ‚เบฐเบซเบเบฒเบเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ, เบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™เปƒเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™, เบชเบฐเบ–เบฒเบ›เบฐเบ™เบดเบเปƒเบ™เบเบฒเบ™เบญเบญเบเปเบšเบšเบ—เบธเบเบŠเบฑเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ WEB ... เปเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™. , เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบ‚เบฒเบเบชเบฒเบกเบŠเบญเบ‡เบ‚เบญเบ‡ margarine เบ•เปเปˆเบกเบทเป‰ ... เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบ•เบดเบ”เบเบฑเบš RPC, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ ... เบญเบฐเบ™เบธเบชเบฑเบ™เบเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบ. เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบขเปˆเบฒเบ‡เป€เบฅเบดเบเป€เบŠเบดเปˆเบ‡เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเปเบฅเบฐเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™, เปเบ•เปˆเบˆเบฐเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบเบฒเบ™เป‚เบ—เบซเบฒเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบฅเบฒเบงเบ•เป‰เบญเบ‡เบเบฒเบ™. เบ—เบธเบฅเบฐเบเบดเบ”เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบชเบธเบ.

เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป RPC เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบซเบผเบฒเบเป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป batch เบžเบฒเบเปƒเบ™เบ—เบธเบฅเบฐเบเปเบฒเบ”เบฝเบง

เบŠเบฑเบšเบชเบดเบ™เบ‚เบญเบ‡ RPC เบ™เบตเป‰เปเบกเปˆเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒ เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบฎเบฑเบเบชเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡. เปเบ•เปˆเบเบฑเบš REST เบกเบฑเบ™เบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเบ‚เบทเป‰เบ™. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบญเบฒเบ”เบˆเบฐเบกเบฒเบฎเบญเบ” nodes backend เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบ™.

เบ™เบตเป‰ "เบ‚เปเป‰เป€เบชเบ" เบ‚เบญเบ‡ REST เปเบกเปˆเบ™เบ”เป‰เบฒเบ™ flip เบ‚เบญเบ‡เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡ - เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบขเปˆเบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบ–เป‰เบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ–เบทเบเบญเบญเบเปเบšเบšเบšเปเปˆเบ”เบต, เปเบฅเบฐเบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ–เบทเบเบญเบญเบเปเบšเบšเบšเปเปˆเบ”เบต, เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเป€เบˆเบฑเบšเบ›เบงเบ”เปƒเบซเบเปˆเปเบ—เป‰เป†.

เปเบ•เปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป batch เป€เบ›เบฑเบ™เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ? เปƒเบซเป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบเปเบฅเบฐเบ™เบต: เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบœเบนเป‰เปƒเบŠเป‰, เป€เบชเบตเบกเบชเป‰เบฒเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒเบ‚เบญเบ‡เบฅเบฒเบงเบ”เป‰เบงเบเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบšเบฒเบ‡เบขเปˆเบฒเบ‡เปเบฅเบฐเบชเบปเปˆเบ‡ SMS เปƒเบซเป‰เบเบฑเบšเบฅเบฒเบงเบ”เป‰เบงเบเบ„เบงเบฒเบกเบฅเบฑเบšเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™. เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เบชเบฒเบกเบเบฒเบ™เป‚เบ—เปƒเบ™เบซเบ™เบถเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป batch.

JSON-RPC? เบžเบฑเบเบœเปˆเบญเบ™เบ—เบตเปˆเบซเบเบธเป‰เบ‡เบเบฒเบ

เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™เปเบœเบ™เบงเบฒเบ”. เบกเบฑเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบžเป‰เบญเบกเบชเบนเบ‡. เบกเบตเบชเบญเบ‡เบŠเปˆเบญเบ‡เบ—เบฒเบ‡เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบ—เบตเปˆเบกเบต SMS gateways. เปเบ•เปˆ ... เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบซเบเบฑเบ‡? เป€เบกเบทเปˆเบญเบชเบปเปˆเบ‡ SMS, เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” 503 เป€เบเบตเบ”เบ‚เบทเป‰เบ™ - เบšเปเบฅเบดเบเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบŠเบปเปˆเบงเบ„เบฒเบง. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ เบเบฒเบ™โ€‹เบชเบปเปˆเบ‡ SMS เบ–เบทเบโ€‹เบซเบธเป‰เบกโ€‹เบซเปเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เบเบฒเบ™โ€‹เบฎเป‰เบญเบ‡โ€‹เบ‚เป batch, เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบˆเบฐโ€‹เบ•เป‰เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™ rolled เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เป„เบ›โ€‹เบšเปˆเบญเบ™. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™ DBMS เบ–เบทเบเบเบปเบเป€เบฅเบตเบ. เบฅเบนเบเบ„เป‰เบฒเป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.

เบžเบฐเบเบฒเบเบฒเบกเบ•เปเปˆเป„เบ›เปเบกเปˆเบ™ lottery เป„เบ”เป‰. เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบˆเบฐเบ•เบต node เบ”เบฝเบงเบเบฑเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบเบฑเบšเบ„เบทเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เบซเบผเบทเบ—เปˆเบฒเบ™เบˆเบฐเป‚เบŠเบเบ”เบตเปเบฅเบฐเบกเบฑเบ™เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”. เปเบ•เปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ„เบ‡เบฅเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเปเบฅเป‰เบงเปƒเบ™ vain. เบกเบตเบเบฒเบ™เป‚เบซเบผเบ”, เปเบ•เปˆเบšเปเปˆเบกเบตเบเปเบฒเป„เบฅ.

เป‚เบญเป€เบ„, เปƒเบซเป‰เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบกเบทเปˆเบญเบเบ•เบปเบงเป€เบญเบ‡ (!) เปเบฅเบฐเบ„เบดเบ”เป‚เบ”เบเบœเปˆเบฒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบชเบฒเบกเบฒเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบšเบฒเบ‡เบชเปˆเบงเบ™เบขเปˆเบฒเบ‡เบชเปเบฒเป€เบฅเบฑเบ”เบœเบปเบ™. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบชเปเบฒเป€เบฅเบฑเบ”เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเป„เบฅเบเบฐเบซเปˆเบฒเบ‡เป€เบงเบฅเบฒเปƒเบ”เบซเบ™เบถเปˆเบ‡ (เบญเบฑเบ™เปƒเบ”? เบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบšเป?). เปเบ•เปˆเบซเบงเบเบเบฑเบ‡เบ„เบทเป€เบเบปเปˆเบฒ. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบชเบปเปˆเบ‡ SMS เบกเบตเป‚เบญเบเบฒเบ” 50/50 เบ—เบตเปˆเบˆเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบงเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡.

เบ•เบปเบเบฅเบปเบ‡, เบˆเบฒเบเบเปˆเบฒเบเบฅเบนเบเบ„เป‰เบฒ, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบ•เบฒเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ ... เปเบกเปˆเบ™เบซเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบš REST?

JSON-RPC? เบžเบฑเบเบœเปˆเบญเบ™เบ—เบตเปˆเบซเบเบธเป‰เบ‡เบเบฒเบ

REST เปƒเบŠเป‰ magic เบ‚เบญเบ‡ HTTP เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เปเบ•เปˆเบ•เบญเบ™เบ™เบตเป‰เบกเบตเบฅเบฐเบซเบฑเบ”เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡. เป€เบกเบทเปˆเบญเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” 503 เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบขเบนเปˆเปƒเบ™เบ›เบฐเบ•เบน SMS, backend เบเบฐเบˆเบฒเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ™เบตเป‰เป„เบ›เบซเบฒเบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡. เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ™เบตเป‰เปเบฅเบฐเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒ, เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบซเบฒ node เบญเบทเปˆเบ™, เป€เบŠเบดเปˆเบ‡เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป. เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เบฅเบนเบเบ„เป‰เบฒเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰, เปเบฅเบฐเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบขเบทเบ™เบขเบฑเบ™เบซเบปเบงเบ‚เปเป‰เบชเบนเบ‡เบ‚เบญเบ‡ "เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เบชเบนเบ‡". เบœเบนเป‰เปƒเบŠเป‰เบกเบตเบ„เบงเบฒเบกเบชเบธเบ.

เปเบฅเบฐเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เบ™เบฑเป‰เบ™เบšเปเปˆเปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเป„เบ”เป‰เบฎเบฑเบšเบฅเบฐเบซเบฑเบ”เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ‚เบญเบ‡ 503. เป€เบกเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡, เบ•เบฒเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบ„เบงเบ™เปเบ™เบฐเบ™เปเบฒเบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เบ”เป‰เบงเบเบซเบปเบงเบ‚เปเป‰ "Retry-After". header เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบŠเบฑเบ”เป€เบˆเบ™เบเบฑเบšเบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบ„เบธเป‰เบกเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบฅเบปเบšเบเบงเบ™ node เปƒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ™เบตเป‰เปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰. เปเบฅเบฐเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเป„เบ›เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡ SMS เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป‚เบ”เบเบเบปเบ‡เป„เบ›เบซเบฒ node เบ—เบตเปˆเบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒเบเบฑเบš SMS gateway.

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบ‚เบญเบ‡ JSON-RPC เปเบกเปˆเบ™ overrated. เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบกเบฑเบ™เบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เปเบ•เปˆเบเบฒเบ™เป€เบชเบเบชเบฐเบฅเบฐ, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบˆเบฐเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ—เบฑเบ‡เบซเบกเบปเบ”.

เบเบฒเบ™เบชเบฐเบซเบฅเบธเบšเปเบกเปˆเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบญเบฑเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เป€เบกเบทเปˆเบญเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เบ„เบงเบฒเบกเบŠเบฑเบ”เป€เบˆเบ™เบ‚เบญเบ‡ JSON-RPC เปเบกเปˆเบ™เปเบ™เปˆเบ™เบญเบ™เบšเบงเบ. เบ–เป‰เบฒเป‚เบ„เบ‡เบเบฒเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ„เบงเบฒเบกเบžเป‰เบญเบกเบ—เบตเปˆเบกเบตเบเบฒเบ™เป‚เบซเบผเบ”เบชเบนเบ‡, REST เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เบซเบผเบฒเบ.

เป€เบเบ™เป€เบ‚เบปเป‰เบฒ REST เปเบกเปˆเบ™เบ•เปเปˆเบฒเบเบงเปˆเบฒ

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, debunking stereotypes เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เบเปˆเบฝเบงเบเบฑเบš RPC, เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบ‚เบญเบšเป€เบ‚เบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ REST เปเบกเปˆเบ™เบšเปเปˆเบ•เป‰เบญเบ‡เบชเบปเบ‡เปƒเบชเบชเบนเบ‡เบเปˆเบงเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ RPC. เบ™เบตเป‰เปเบกเปˆเบ™เบเป‰เบญเบ™เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบขเปˆเบฒเบ‡เป€เบฅเบดเบเป€เบŠเบดเปˆเบ‡เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบต HTTP เป€เบฎเบฑเบ”เบงเบฝเบ, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เปเบฅเบฐเบ„เบงเบ™เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ WEB.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบซเบผเบฒเบเบ„เบปเบ™เบ„เบดเบ”เบงเปˆเบฒ REST เบˆเบฐเบ‡เปˆเบฒเบเบ”เบฒเบเบเบงเปˆเบฒ? เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบชเปˆเบงเบ™เบ•เบปเบงเบ‚เบญเบ‡เบ‚เป‰เบญเบเปเบกเปˆเบ™เบงเปˆเบฒเบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบ›เบฒเบเบปเบ”เบ‚เบทเป‰เบ™เบ™เบตเป‰เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบ REST เบชเบฐเปเบ”เบ‡เบญเบญเบเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡. เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. REST เบšเปเปˆเปเบกเปˆเบ™เป‚เบ›เบฃเป‚เบ•เบ„เป เปเบ•เปˆเป€เบ›เบฑเบ™เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”... REST เบšเปเปˆเบกเบตเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบกเบตเบšเบฒเบ‡เบ‚เปเป‰เปเบ™เบฐเบ™เบณ... REST เบšเปเปˆเบชเบฑเบšเบชเบปเบ™เบเบงเปˆเบฒ HTTP. เป€เบชเบฅเบตเบžเบฒเบšเบ—เบตเปˆเบ›เบฒเบเบปเบ”เบ‚เบทเป‰เบ™เปเบฅเบฐเบ„เบงเบฒเบกเบšเปเปˆเบชเบฐเบซเบ‡เบปเบšเบ”เบถเบ‡เบ”เบนเบ” "เบ™เบฑเบเบชเบดเบฅเบฐเบ›เบดเบ™เบŸเบฃเบต".

เปเบ™เปˆเบ™เบญเบ™, REST เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเบเปˆเบงเบฒ HTTP. เปเบ•เปˆ HTTP เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เป€เบ›เบฑเบ™เป‚เบ›เป‚เบ•เบ„เบญเบ™เบ—เบตเปˆเบ–เบทเบเบญเบญเบเปเบšเบšเบ”เบตเบ—เบตเปˆเป„เบ”เป‰เบžเบดเบชเบนเบ”เบงเปˆเบฒเบกเบตเบกเบนเบ™เบ„เปˆเบฒเบซเบฅเบฒเบเบชเบดเบšเบ›เบต. เบ–เป‰เบฒเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเป€เบฅเบดเบเป€เบŠเบดเปˆเบ‡เบเปˆเบฝเบงเบเบฑเบš HTTP เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ REST เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ•เบฑเบ”เบชเบดเบ™เป„เบ”เป‰.

เปเบ•เปˆเบเปˆเบฝเบงเบเบฑเบš RPC - เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰. เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบกเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ JSON-RPC เป‚เบ‡เปˆ? เบซเบผเบทเบงเปˆเบฒ REST เบเบฑเบ‡เบซเบเบธเป‰เบ‡เบเบฒเบเบขเบนเปˆเบšเป? เป€เบˆเบปเป‰เบฒโ€‹เบ•เบฑเบ”โ€‹เบชเบดเบ™โ€‹เปƒเบˆ.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบซเบงเบฑเบ‡เบขเปˆเบฒเบ‡เบˆเบดเบ‡เปƒเบˆเบงเปˆเบฒเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเป„เบ”เป‰เป€เบชเบเป€เบงเบฅเบฒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™