10 āļž.āļĒ. 2565·āļ­āđˆāļēāļ™ 2 āļ™āļēāļ—āļĩ

gRPC āļ„āļ·āļ­āļ­āļ°āđ„āļĢ

gRPC āđ€āļ›āđ‡āļ™āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ‚āļ­āļ‡āđāļ™āļ§āļ—āļēāļ‡ RPC āļ—āļąāđˆāļ§āđ„āļ›āđƒāļ™āļāļēāļĢāļ­āļ­āļāđāļšāļš API āļ­āđˆāļēāļ™āļ•āđˆāļ­āđ€āļžāļ·āđˆāļ­āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ—āļļāļāļ­āļĒāđˆāļēāļ‡āđ€āļāļĩāđˆāļĒāļ§āļāļąāļš gRPC āđāļĨāļ°āļ‚āđ‰āļ­āļ”āļĩāļ‚āđ‰āļ­āđ€āļŠāļĩāļĒ!

gRPC āļ„āļ·āļ­āļ­āļ°āđ„āļĢ

āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļŠāđˆāļ§āļ™āđƒāļŦāļāđˆāļ•āđ‰āļ­āļ‡āļŠāļēāļĄāļēāļĢāļ–āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļāļąāļšāļĢāļŦāļąāļŠāļ­āļ·āđˆāļ™āđ„āļ”āđ‰āļ”āđ‰āļ§āļĒāđ€āļŦāļ•āļļāļœāļĨāļŦāļĨāļēāļĒāļ›āļĢāļ°āļāļēāļĢ āļŠāļīāđˆāļ‡āļ™āļĩāđ‰āļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āđ‡āļ™āļ­āļ°āđ„āļĢāļāđ‡āđ„āļ”āđ‰āļ•āļąāđ‰āļ‡āđāļ•āđˆāļāļēāļĢāļœāļŠāļēāļ™āļĢāļ§āļĄāđ„āļ›āļˆāļ™āļ–āļķāļ‡āļāļēāļĢāđ€āļžāļīāđˆāļĄāļŸāļąāļ‡āļāđŒāļŠāļąāļ™āđƒāļŦāļĄāđˆ āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđāļ™āđˆāđƒāļˆāļ§āđˆāļēāļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļŠāļēāļĄāļēāļĢāļ–āđ€āļŠāļ·āđˆāļ­āļĄāđ‚āļĒāļ‡āļāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ­āļ·āđˆāļ™āđ† āđāļĨāļ°āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđāļ™āđˆāđƒāļˆāļ§āđˆāļēāļĄāļĩāļāļēāļĢāļĢāļ§āļĄāđ€āļ‚āđ‰āļēāļāļąāļšāđ‚āļ›āļĢāđāļāļĢāļĄāļ­āļ·āđˆāļ™āđ† āļ™āļąāļāļžāļąāļ’āļ™āļēāļˆāļķāļ‡āđƒāļŠāđ‰ API āļ”āđ‰āļ§āļĒāđ€āļŦāļ•āļļāļ™āļĩāđ‰ Application Programming Interface āļˆāļķāļ‡āļˆāļģāđ€āļ›āđ‡āļ™āļŠāļģāļŦāļĢāļąāļšāļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļŠāđˆāļ§āļ™āđƒāļŦāļāđˆ āļ”āđ‰āļ§āļĒāļšāļ—āļšāļēāļ—āļ‚āļ­āļ‡āļžāļ§āļāđ€āļ‚āļēāđƒāļ™āļāļēāļ™āļ°āļŠāļ°āļžāļēāļ™āļ‚āđ‰āļēāļĄāļĢāļ°āļšāļš API āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļšāļļāļ„āļ„āļĨāļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļšāļĢāļīāļāļēāļĢāđ€āļ§āđ‡āļšāļ—āļĩāđˆāļŦāļĨāļēāļāļŦāļĨāļēāļĒāđ„āļ”āđ‰ āļ”āļąāļ‡āļ™āļąāđ‰āļ™ āļŠāļīāđˆāļ‡āļŠāļģāļ„āļąāļāļ„āļ·āļ­āļ•āđ‰āļ­āļ‡āđ€āļĨāļ·āļ­āļāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāđ€āļžāļ·āđˆāļ­āđ€āļŠāļ™āļ­ API āđƒāļŦāđ‰āļāļąāļšāđ‚āļ„āļĢāļ‡āļāļēāļĢāļ‚āļ­āļ‡āļ„āļļāļ“

āļ­āļ‡āļ„āđŒāļāļĢāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāđāļŠāļĢāđŒāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļŦāļĢāļ·āļ­āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄāļāļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļˆāļģāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰ API āļĄāļĩāļŦāļĨāļēāļĒāļ§āļīāļ˜āļĩāđƒāļ™āļāļēāļĢāļžāļąāļ’āļ™āļēāđāļĨāļ°āļ›āļĢāļąāļšāđāļ•āđˆāļ‡ API āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļŠāļĄāļ—āļĩāđˆāļŠāļļāļ”āļŠāļģāļŦāļĢāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ‚āļ­āļ‡āļ„āļļāļ“ āļŦāļ™āļķāđˆāļ‡āđƒāļ™āļ§āļīāļ˜āļĩāļĨāđˆāļēāļŠāļļāļ”āļ—āļĩāđˆāđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļĄāļ­āļĢāđŒāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ­āļ­āļāđāļšāļš API āļ„āļ·āļ­ gRPC āļĄāļēāļ”āļđāļāļąāļ™āļ§āđˆāļē gRPC āļ„āļ·āļ­āļ­āļ°āđ„āļĢ āđāļĨāļ°āļ‚āđ‰āļ­āļ”āļĩāļ‚āđ‰āļ­āđ€āļŠāļĩāļĒāļ‚āļ­āļ‡āļĄāļąāļ™

gRPC āļ„āļ·āļ­āļ­āļ°āđ„āļĢ ?

gRPC āļĒāđˆāļ­āļĄāļēāļˆāļēāļ Google Remote Procedure CallgRPC āđ€āļ›āđ‡āļ™āđ€āļŸāļĢāļĄāđ€āļ§āļīāļĢāđŒāļ RPC āđāļšāļšāđ‚āļ­āđ€āļžāđˆāļ™āļ‹āļ­āļĢāđŒāļŠāļ—āļĩāđˆāđƒāļŠāđ‰āļŠāļĢāđ‰āļēāļ‡ API āļ—āļĩāđˆāļĢāļ§āļ”āđ€āļĢāđ‡āļ§āđāļĨāļ°āļ›āļĢāļąāļšāļ‚āļ™āļēāļ”āđ„āļ”āđ‰ āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļžāļąāļ’āļ™āļēāļĢāļ°āļšāļšāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒāđāļĨāļ°āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāđāļšāļšāđ€āļ›āļīāļ”āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒ gRPC āđāļĨāļ°āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ gRPC āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļĒāļ­āļĄāļĢāļąāļšāļˆāļēāļāļšāļĢāļīāļĐāļąāļ—āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļąāđ‰āļ™āļ™āļģāļŦāļĨāļēāļĒāđāļŦāđˆāļ‡ āļĢāļ§āļĄāļ–āļķāļ‡ Google, IBM, Netflix āđāļĨāļ°āļ­āļ·āđˆāļ™āđ† āđ€āļŸāļĢāļĄāđ€āļ§āļī gRPC āļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļšāļāļ­āļ‡āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļ—āļĩāđˆāļ—āļąāļ™āļŠāļĄāļąāļĒ āđ€āļŠāđˆāļ™ HTTP/2, āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāđ‚āļ›āļĢāđ‚āļ•āļ„āļ­āļĨ āđāļĨāļ°āļ­āļ·āđˆāļ™āđ† āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āđ‰āļ­āļ‡āļāļąāļ™ API āļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄ, āļāļēāļĢāđ€āļĢāļĩāļĒāļāļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļĢāļ°āļĒāļ°āđ„āļāļĨāļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡ āđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāļ›āļĢāļąāļšāļ‚āļ™āļēāļ”

RPC āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

RPC āđāļĨāļ° REST - Representational State Transfer - āđƒāļ™āļ­āļ”āļĩāļ•āļĄāļĩāđāļ™āļ§āļ—āļēāļ‡āļ—āļĩāđˆāđāļĒāļāļˆāļēāļāļāļąāļ™āļŠāļ­āļ‡āļ§āļīāļ˜āļĩāđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ API āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰āļĒāļąāļ‡āđƒāļŠāđ‰āđ‚āļ›āļĢāđ‚āļ•āļ„āļ­āļĨāļ­āļĒāđˆāļēāļ‡ SOAP āđāļĨāļ° GraphQL āđ€āļžāļ·āđˆāļ­āļˆāļļāļ”āļ›āļĢāļ°āļŠāļ‡āļ„āđŒāļ™āļĩāđ‰āļ”āđ‰āļ§āļĒ āļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļĢāļ°āļĒāļ°āđ„āļāļĨāļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļ„āļļāļ“āđ€āļ‚āļĩāļĒāļ™āļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāđ„āļ”āđ‰āđ€āļŦāļĄāļ·āļ­āļ™āļāļąāļšāļ§āđˆāļēāļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļˆāļ°āļ—āļģāļ‡āļēāļ™āđƒāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡ āđāļĄāđ‰āļ§āđˆāļēāļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļ™āļąāđ‰āļ™āļ­āļēāļˆāļ—āļģāļ‡āļēāļ™āļšāļ™āļ­āļļāļ›āļāļĢāļ“āđŒāļ­āļ·āđˆāļ™āļāđ‡āļ•āļēāļĄ

āđ€āļ›āđ‡āļ™āđ€āļŸāļĢāļĄāđ€āļ§āļīāļĢāđŒāļāļ—āļĩāđˆāđƒāļŠāđ‰āļāļąāļ™āļ—āļąāđˆāļ§āđ„āļ›āđƒāļ™āļāļēāļĢāļ­āļ­āļāđāļšāļš API āļ•āļĢāļ‡āļāļąāļ™āļ‚āđ‰āļēāļĄāļāļąāļšāļāļēāļĢāđ€āļĢāļĩāļĒāļāđ‚āļ›āļĢāđ‚āļ•āļ„āļ­āļĨ HTTP āļ—āļąāđˆāļ§āđ„āļ› RPC āđƒāļŠāđ‰āļāļēāļĢāđ€āļĢāļĩāļĒāļāļŸāļąāļ‡āļāđŒāļŠāļąāļ™āđ€āļ›āđ‡āļ™āļ§āļīāļ˜āļĩāļāļēāļĢāļŦāļĨāļąāļāđƒāļ™āļāļēāļĢāđ‚āļ•āđ‰āļ•āļ­āļšāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒāđāļĨāļ°āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ RPC āđ€āļ›āđ‡āļ™āđ€āļ—āļ„āļ™āļīāļ„āļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļœāļĨāđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ API āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļāļēāļĢāđāļĨāļāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ—āļģāđ„āļ”āđ‰āļ‡āđˆāļēāļĒāđāļĨāļ°āđ€āļ™āļ·āđ‰āļ­āļŦāļēāđ„āļĄāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™ āļšāļĢāļīāļāļēāļĢ gRPC āļĒāļąāļ‡āđ€āļĨāļĩāļĒāļ™āđāļšāļšāļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāļ™āļĩāđ‰ RPC āđƒāļŠāđ‰ IDL - Interface Definition Language āđ€āļžāļ·āđˆāļ­āļ—āļģāļŠāļąāļāļāļēāļ›āļĢāļ°āđ€āļ āļ—āļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āļ§āļīāļ˜āļĩāļāļēāļĢāļ—āļĩāđˆāļˆāļ°āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ āļšāļĢāļīāļāļēāļĢ gRPC āļ™āļģāļĄāļēāđƒāļŠāđ‰āļˆāļēāļ RPC āđ„āļ”āđ‰āļĢāļąāļšāļ„āļ§āļēāļĄāļ™āļīāļĒāļĄāļ­āļĒāđˆāļēāļ‡āļĄāļēāļāđƒāļ™āļŠāđˆāļ§āļ‡āđ„āļĄāđˆāļāļĩāđˆāļ›āļĩāļ—āļĩāđˆāļœāđˆāļēāļ™āļĄāļē

āđ€āļŦāļ•āļļāđƒāļ”āļˆāļķāļ‡āļĄāļĩāļāļēāļĢāļžāļąāļ’āļ™āļēāļšāļĢāļīāļāļēāļĢ gRPC

āđ€āļĄāļ·āđˆāļ­āļ­āļ‡āļ„āđŒāļāļĢāļ•āđˆāļēāļ‡āđ† āđ€āļ›āļīāļ”āļŠāđˆāļ­āļ‡āļ—āļēāļ‡āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļœāļŠāļēāļ™āļĢāļ§āļĄāļĄāļēāļāļ‚āļķāđ‰āļ™ āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāđ‚āļĒāļ‡āļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļ”āļąāļ‡āļāļĨāđˆāļēāļ§āļˆāļķāļ‡āļ—āļģāđ„āļ”āđ‰āļĒāļēāļāļ‚āļķāđ‰āļ™ RPC API āļ™āļąāđ‰āļ™āļ—āđ‰āļēāļ—āļēāļĒāđƒāļ™āļāļēāļĢāļœāļŠāļēāļ™āļĢāļ§āļĄāđāļĨāļ°āļĄāļĩāļ„āļ§āļēāļĄāđ€āļŠāļĩāđˆāļĒāļ‡āļ—āļĩāđˆāļˆāļ°āđ€āļœāļĒāđāļžāļĢāđˆ āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļ­āļēāļˆāđ€āļ›āļīāļ”āđ€āļœāļĒāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ‰āļžāļēāļ°āļ āļēāļĒāđƒāļ™ āļžāļ§āļāđ€āļ‚āļēāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļžāļąāļ’āļ™āļēāđƒāļ™āļ āļēāļĐāļēāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļģāļ™āļ§āļ™āļĄāļēāļāđāļĨāļ°āđ€āļŠāļ·āđˆāļ­āļĄāđ‚āļĒāļ‡āļ­āļĒāđˆāļēāļ‡āđƒāļāļĨāđ‰āļŠāļīāļ”āļāļąāļšāđ€āļŸāļĢāļĄāđ€āļ§āļīāļĢāđŒāļāļžāļ·āđ‰āļ™āļāļēāļ™

āļ›āļąāļāļŦāļēāļ™āļĩāđ‰āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāđāļāđ‰āđ„āļ‚āđāļĨāđ‰āļ§ āđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡ API āđ€āļžāļīāđˆāļĄāļ‚āļķāđ‰āļ™āđ€āļĄāļ·āđˆāļ­ REST API āđ€āļ›āļīāļ”āļ•āļąāļ§āđƒāļ™āļ›āļĩ 2000 āđ‚āļ”āļĒāđ€āļ‰āļžāļēāļ°āļ­āļĒāđˆāļēāļ‡āļĒāļīāđˆāļ‡ āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļœāļđāđ‰āđƒāļŠāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļēāļ‡āļ­āđ‰āļ­āļĄāļœāđˆāļēāļ™āļŠāļīāļ™āļ—āļĢāļąāļžāļĒāđŒāđ‚āļ”āļĒāđƒāļŠāđ‰āđ€āļ—āļ„āļ™āļīāļ„ HTTP āļĄāļēāļ•āļĢāļāļēāļ™ āđ€āļŠāđˆāļ™ GET, PUT, POST āđāļĨāļ°āļ­āļ·āđˆāļ™āđ† āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļŦāļĨāļąāļāđ† āļ‚āļ­āļ‡ RPC āļˆāļēāļ REST API āļ„āļ·āļ­ āđ€āļĄāļ·āđˆāļ­āđƒāļŠāđ‰ RPC āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ•āđˆāļēāļ‡āđ† āļˆāļ°āļ–āļđāļāļˆāļąāļ”āļāļēāļĢ āđāļ•āđˆāļĄāļąāļ™āđ„āļĄāđˆāļ‡āđˆāļēāļĒāđ€āļĨāļĒāļ—āļĩāđˆāļˆāļ°āļ„āļēāļ”āļāļēāļĢāļ“āđŒāļ§āđˆāļēāļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāđƒāļ™āļĢāļ°āļšāļšāļ•āđˆāļēāļ‡āđ† āļˆāļ°āđ€āļ›āđ‡āļ™āđ€āļŠāđˆāļ™āđ„āļĢ

REST API āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđāļ—āļ™āļ—āļĩāđˆ RPC āļ—āļĩāđˆāļ•āļĢāļ‡āđ„āļ›āļ•āļĢāļ‡āļĄāļēāđāļĨāļ°āļĄāļĩāļ™āđ‰āļģāļŦāļ™āļąāļāđ€āļšāļēāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļŠāļĄāļšāļđāļĢāļ“āđŒ āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļĄāļ•āļēāļˆāļģāļ™āļ§āļ™āļĄāļēāļ āđāļĄāđ‰āļ§āđˆāļēāļˆāļ°āļĄāļĩāļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļˆāļģāļ™āļ§āļ™āļĄāļēāļ āļŠāđˆāļ‡āļœāļĨāđƒāļŦāđ‰āļšāļĢāļīāļāļēāļĢ GraphQL āļ‚āļ­āļ‡ Facebook āđāļĨāļ°āļšāļĢāļīāļāļēāļĢ gRPC āļ‚āļ­āļ‡ Google āđ€āļāļīāļ”āļ‚āļķāđ‰āļ™āđƒāļ™āļ—āļĩāđˆāļŠāļļāļ”

Google āļŠāļĢāđ‰āļēāļ‡ gRPC āđƒāļ™āļ›āļĩ 2558 āđ‚āļ”āļĒāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āđ€āļŠāļĢāļīāļĄāļ‚āļ­āļ‡āđ€āļŸāļĢāļĄāđ€āļ§āļīāļĢāđŒāļ RPC āđ€āļžāļ·āđˆāļ­āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāđ„āļĄāđ‚āļ„āļĢāđ€āļ‹āļ­āļĢāđŒāļ§āļīāļŠāļˆāļģāļ™āļ§āļ™āļĄāļēāļāļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļ”āđ‰āļ§āļĒāđ€āļ—āļ„āļ™āļīāļ„āļ•āđˆāļēāļ‡āđ† gRPC āđ€āļ”āļīāļĄāļĄāļĩāļ„āļ§āļēāļĄāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļ­āļĒāđˆāļēāļ‡āđƒāļāļĨāđ‰āļŠāļīāļ”āļāļąāļšāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļŦāļĨāļąāļāļ‚āļ­āļ‡ Google āđāļ•āđˆāđƒāļ™āļ—āļĩāđˆāļŠāļļāļ”āļāđ‡āļāļĨāļēāļĒāđ€āļ›āđ‡āļ™āđ‚āļ­āđ€āļžāđˆāļ™āļ‹āļ­āļĢāđŒāļŠāđāļĨāļ°āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđ‚āļ”āļĒāļŠāļēāļ˜āļēāļĢāļ“āļŠāļ™āļ—āļąāđˆāļ§āđ„āļ›

āļ āļēāļžāļĢāļ§āļĄāļ‚āļ­āļ‡āđāļ™āļ§āļ„āļīāļ” gRPC

āļāļēāļĢāđƒāļŠāđ‰āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļĨāđ‰āļģāļŠāļĄāļąāļĒāļ‹āļķāđˆāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡āļāļ§āđˆāļē JSON āđāļĨāļ° XML āđāļĨāļ°āļĄāļ­āļšāļ„āļ§āļēāļĄāļŠāļĄāļšāļđāļĢāļ“āđŒāļ‚āļ­āļ‡ API āļ—āļĩāđˆāļŠāļđāļ‡āļāļ§āđˆāļē āļĄāļĩāļŠāđˆāļ§āļ™āļĢāļąāļšāļœāļīāļ”āļŠāļ­āļšāļ•āđˆāļ­āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđāļĨāļ°āļ„āļ§āļēāļĄāļ™āļīāļĒāļĄāļ‚āļ­āļ‡ gRPC āđāļ™āļ§āļ„āļīāļ” gRPC āļšāļēāļ‡āļŠāđˆāļ§āļ™āļ—āļĩāđˆāļ„āļļāļ“āļ„āļ§āļĢāļ—āļĢāļēāļšāļ„āļ·āļ­:

āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāđ‚āļ›āļĢāđ‚āļ•āļ„āļ­āļĨ

āđ‚āļ›āļĢāđ‚āļ•āļ„āļ­āļĨāļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāļŦāļĢāļ·āļ­āļ—āļĩāđˆāđ€āļĢāļĩāļĒāļāļ§āđˆāļē Protobuf āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™āļāļēāļĢāļ—āļģāđƒāļŦāđ‰āđ€āļ›āđ‡āļ™āļ‹āļĩāđ€āļĢāļĩāļĒāļĨāđ„āļĨāđ€āļ‹āļŠāļąāļ™āļŦāļĢāļ·āļ­āļ”āļĩāļ‹āļĩāđ€āļĢāļĩāļĒāļĨāđ„āļĨāđ€āļ‹āļŠāļąāļ™āļ—āļĩāđˆāļ—āļģāđƒāļŦāđ‰āļ‡āđˆāļēāļĒāļ•āđˆāļ­āļāļēāļĢāļāļģāļŦāļ™āļ”āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđāļĨāļ°āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĢāļŦāļąāļŠāļ‚āļ­āļ‡āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒāđ„āļĨāļšāļĢāļēāļĢāļĩāđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļĨāđˆāļēāļŠāļļāļ” proto3 āđƒāļŠāđ‰āļ‡āļēāļ™āļ‡āđˆāļēāļĒāļāļ§āđˆāļēāđāļĨāļ°āļĄāļĩāļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļŦāļĄāđˆāļĨāđˆāļēāļŠāļļāļ”āļŠāļģāļŦāļĢāļąāļš gRPC

āđ„āļŸāļĨāđŒ .Proto āđ€āļ›āļīāļ”āđƒāļŠāđ‰ gRPC.Proto āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒ gRPC āđāļĨāļ°āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ āđ„āļŸāļĨāđŒ .proto āļ–āļđāļāđ‚āļŦāļĨāļ”āļĨāļ‡āđƒāļ™āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļ‚āļ“āļ°āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāđ‚āļ”āļĒāļ„āļ­āļĄāđ„āļžāđ€āļĨāļ­āļĢāđŒ Protobuf - protoc āļ„āļ­āļĄāđ„āļžāđ€āļĨāļ­āļĢāđŒāļ™āļĩāđ‰āļŠāļĢāđ‰āļēāļ‡āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒ gRPC āđāļĨāļ°āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ gRPC āļ—āļĩāđˆāđƒāļŠāđ‰āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āđƒāļ™āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāđ€āļžāļ·āđˆāļ­āļ‹āļĩāđ€āļĢāļĩāļĒāļĨāđ„āļĨāļ‹āđŒāđāļĨāļ°āļ”āļĩāļ‹āļĩāđ€āļĢāļĩāļĒāļĨāđ„āļĨāļ‹āđŒāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļšāļ™āļēāļĢāļĩ āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāđāļ•āđˆāļĨāļ°āļ„āļĢāļąāđ‰āļ‡āļˆāļ°āļ–āļđāļāļŠāđˆāļ‡āđāļĨāļ°āļĢāļąāļšāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļœāļđāđ‰āđƒāļŠāđ‰āđāļĨāļ°āļšāļĢāļīāļāļēāļĢāļĢāļ°āļĒāļ°āđ„āļāļĨāļ•āļēāļĄāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĢāļŦāļąāļŠāđƒāļ™ gRPC

āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļ‚āđ‰āļ­āļĄāļđāļĨāļ–āļđāļāđāļ›āļĨāđ€āļ›āđ‡āļ™āļĢāļđāļ›āđāļšāļšāđ„āļšāļ™āļēāļĢāļĩāđāļĨāļ°āļŠāļąāļāļāļēāļ“āļ—āļĩāđˆāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠāļĄāļĩāļ‚āļ™āļēāļ”āđ€āļĨāđ‡āļāļĨāļ‡ āļāļēāļĢāđāļĒāļāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļ”āđ‰āļ§āļĒ Protobuf āļˆāļķāļ‡āđƒāļŠāđ‰āļžāļĨāļąāļ‡āļ‡āļēāļ™ CPU āļ™āđ‰āļ­āļĒāļĨāļ‡āļŠāļģāļŦāļĢāļąāļš gRPC āļ”āļąāļ‡āļ™āļąāđ‰āļ™ āđāļĄāđ‰āđƒāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāļ—āļĩāđˆāļĄāļĩ CPU āļ­āđˆāļ­āļ™āļāļ§āđˆāļē āđ€āļŠāđˆāļ™ āđ‚āļ—āļĢāļĻāļąāļžāļ—āđŒāļĄāļ·āļ­āļ–āļ·āļ­ āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļāđ‡āļŠāđˆāļ‡āđ„āļ”āđ‰āđ€āļĢāđ‡āļ§āļāļ§āđˆāļēāļ”āđ‰āļ§āļĒ gRPC

HTTP/2

āļšāļĢāļīāļāļēāļĢ gRPC āļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™āļšāļ™ HTTP/2 āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ‚āļ­āļ‡ HTTP/1.1 āļ—āļĩāđˆāļĄāļĩāļ‚āđ‰āļ­āļˆāļģāļāļąāļ”āļ™āđ‰āļ­āļĒāļāļ§āđˆāļē āđāļĄāđ‰āļ§āđˆāļēāļˆāļ°āļ—āļģāļ‡āļēāļ™āļĢāđˆāļ§āļĄāļāļąāļšāđ‚āļ›āļĢāđ‚āļ•āļ„āļ­āļĨ HTTP āļĢāļļāđˆāļ™āđ€āļāđˆāļē āđāļ•āđˆ HTTP/2 āļāđ‡āļĄāļĩāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļŦāļĨāļēāļĒāļ­āļĒāđˆāļēāļ‡āļŠāļģāļŦāļĢāļąāļš gRPC āļ‹āļķāđˆāļ‡āļĢāļ§āļĄāļ–āļķāļ‡āđ€āļĨāđ€āļĒāļ­āļĢāđŒāļāļēāļĢāļˆāļąāļ”āđ€āļŸāļĢāļĄāđāļšāļšāđ„āļšāļ™āļēāļĢāļĩ āļ‹āļķāđˆāļ‡āđāļšāđˆāļ‡āļāļēāļĢāļŠāļ·āļšāļ„āđ‰āļ™ HTTP/2 āđāļ•āđˆāļĨāļ°āļĢāļēāļĒāļāļēāļĢāđāļĨāļ°āļāļēāļĢāļ•āļ­āļšāļāļĨāļąāļšāđ€āļ›āđ‡āļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ‚āļ™āļēāļ”āđ€āļĨāđ‡āļāļĨāļ‡ āđāļĨāļ°āļˆāļąāļ”āđ€āļŸāļĢāļĄāđƒāļ™āļĢāļđāļ›āđāļšāļšāđ„āļšāļ™āļēāļĢāļĩāđ€āļžāļ·āđˆāļ­āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļāļēāļĢāļŠāđˆāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰ gRPC āļĢāļ­āļ‡āļĢāļąāļšāļ„āļģāļ‚āļ­āđāļĨāļ°āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļŦāļĨāļēāļĒāļĢāļēāļĒāļāļēāļĢāļˆāļēāļāđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒāđāļĨāļ°āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ gRPC āđƒāļ™āļāļēāļĢāļŠāļ•āļĢāļĩāļĄāđāļšāļšāļŸāļđāļĨāļ”āļđāđ€āļžāļĨāđ‡āļāļ‹āđŒāđāļšāļšāļŠāļ­āļ‡āļ—āļīāļĻāļ—āļēāļ‡

HTTP/2 āļĄāļĩāļ§āļīāļ˜āļĩāļāļēāļĢāļ„āļ§āļšāļ„āļļāļĄāđ‚āļŸāļĨāļ§āđŒāļ—āļĩāđˆāļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ„āļ§āļšāļ„āļļāļĄ RAM āļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™āđƒāļ™āļāļēāļĢāļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāđāļžāđ‡āļāđ€āļāđ‡āļ•āļšāļ™āđ€āļ—āļĩāđˆāļĒāļ§āļšāļīāļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđāļĄāđˆāļ™āļĒāļģ āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰āļĒāļąāļ‡āļĄāļĩāļāļēāļĢāļšāļĩāļšāļ­āļąāļ”āļŠāđˆāļ§āļ™āļŦāļąāļ§āļŠāļģāļŦāļĢāļąāļšāļšāļĢāļīāļāļēāļĢ gRPC āļ—āļļāļāļ­āļĒāđˆāļēāļ‡āđƒāļ™ HTTP/2 āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠāļāđˆāļ­āļ™āļāļēāļĢāļŠāđˆāļ‡ āđāļĄāđ‰āļāļĢāļ°āļ—āļąāđˆāļ‡āļŠāđˆāļ§āļ™āļŦāļąāļ§ āļ‹āļķāđˆāļ‡āļĄāļĩāļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āđ‚āļžāļĢāļ‹āļĩāđ€āļ”āļ­āļĢāđŒāļĢāļ°āļĒāļ°āđ„āļāļĨāļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡ gRPC āđƒāļŦāđ‰āļ—āļąāđ‰āļ‡āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđāļšāļšāļ­āļ°āļ‹āļīāļ‡āđ‚āļ„āļĢāļ™āļąāļŠāđāļĨāļ°āđāļšāļšāļ‹āļīāļ‡āđ‚āļ„āļĢāļ™āļąāļŠāļ”āđ‰āļ§āļĒ HTTP/2 āļ—āļģāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ RPC āđāļšāļšāđ‚āļ•āđ‰āļ•āļ­āļšāđāļĨāļ°āđāļšāļšāļŠāļ•āļĢāļĩāļĄāđ„āļ”āđ‰āļŦāļĨāļēāļāļŦāļĨāļēāļĒāļ›āļĢāļ°āđ€āļ āļ—

āļ”āđ‰āļ§āļĒāļ„āļ§āļēāļĄāļŠāđˆāļ§āļĒāđ€āļŦāļĨāļ·āļ­āļˆāļēāļāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ‚āļ­āļ‡ HTTP/2 āļšāļĢāļīāļāļēāļĢ gRPC āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļ—āļĢāļąāļžāļĒāļēāļāļĢāļ™āđ‰āļ­āļĒāļĨāļ‡ āļ‹āļķāđˆāļ‡āļ™āļģāđ„āļ›āļŠāļđāđˆāđ€āļ§āļĨāļēāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ—āļĩāđˆāđ€āļĢāđ‡āļ§āļ‚āļķāđ‰āļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļšāļ™āļ„āļĨāļēāļ§āļ”āđŒāđāļĨāļ°āļšāļĢāļīāļāļēāļĢ gRPC āđāļĨāļ°āļ­āļēāļĒāļļāđāļšāļ•āđ€āļ•āļ­āļĢāļĩāđˆāļ—āļĩāđˆāļĒāļēāļ§āļ™āļēāļ™āļ‚āļķāđ‰āļ™āļŠāļģāļŦāļĢāļąāļšāđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒ gRPC āļ—āļĩāđˆāļ—āļģāļ‡āļēāļ™āļšāļ™āļ­āļļāļ›āļāļĢāļ“āđŒāļžāļāļžāļē

āļŠāļ•āļĢāļĩāļĄāļĄāļīāđˆāļ‡

āđāļ™āļ§āļ„āļīāļ”āļŠāļģāļ„āļąāļāļ—āļĩāđˆ gRPC āļĢāļ­āļ‡āļĢāļąāļšāļ„āļ·āļ­āļāļēāļĢāļŠāļ•āļĢāļĩāļĄ āļ‹āļķāđˆāļ‡āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļŦāļĨāļēāļĒāļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ āļēāļĒāđƒāļ™āļ„āļģāļ‚āļ­āđ€āļ”āļĩāļĒāļ§ gRPC āļ—āļģāđƒāļŦāđ‰āļŠāļīāđˆāļ‡āļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āđ„āļ›āđ„āļ”āđ‰āļœāđˆāļēāļ™āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļĄāļąāļĨāļ•āļīāđ€āļžāļĨāđ‡āļāļ‹āđŒāļ‚āļ­āļ‡ HTTP/2 āļ‹āļķāđˆāļ‡āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļŠāđˆāļ‡āļŦāļĢāļ·āļ­āļĢāļąāļšāļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļŦāļĢāļ·āļ­āļ„āļģāļ‚āļ­āļŦāļĨāļēāļĒāļĢāļēāļĒāļāļēāļĢāļžāļĢāđ‰āļ­āļĄāļāļąāļ™āļœāđˆāļēāļ™āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­ TCP - Transmission Control Protocol - āļŦāļ™āļķāđˆāļ‡āļĢāļēāļĒāļāļēāļĢ āļĢāļđāļ›āđāļšāļšāļāļēāļĢāļŠāļ•āļĢāļĩāļĄāļŦāļĨāļąāļāļ„āļ·āļ­ RPC āļŠāļ•āļĢāļĩāļĄāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ, RPC āļŠāļ•āļĢāļĩāļĄāđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒ āđāļĨāļ° RPC āļŠāļ•āļĢāļĩāļĄāļŠāļ­āļ‡āļ—āļīāļĻāļ—āļēāļ‡

āļŠāđˆāļ­āļ‡

āļ•āļĢāļ‡āļāļąāļ™āļ‚āđ‰āļēāļĄāļāļąāļšāļŠāļ•āļĢāļĩāļĄ HTTP/2 āļ‹āļķāđˆāļ‡āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āļŠāļ•āļĢāļĩāļĄāļžāļĢāđ‰āļ­āļĄāļāļąāļ™āļˆāļģāļ™āļ§āļ™āļĄāļēāļāđƒāļ™āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļ„āļģāļ‚āļ­āđ€āļ”āļĩāļĒāļ§ āļŠāđˆāļ­āļ‡āļ—āļĩāđˆāļĄāļĩ gRPC āļĢāļ­āļ‡āļĢāļąāļšāļŠāļ•āļĢāļĩāļĄāļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡āļŦāļĨāļēāļĒāļĢāļēāļĒāļāļēāļĢāđƒāļ™āļ„āļģāļ‚āļ­āļŦāļĨāļēāļĒāļĢāļēāļĒāļāļēāļĢ āļžāļ§āļāđ€āļ‚āļēāđƒāļŠāđ‰āđ€āļžāļ·āđˆāļ­āļŠāļĢāđ‰āļēāļ‡āđ‚āļ„āļĢāļ‡āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒāđāļĨāļ°āđƒāļŦāđ‰āļāļĨāđ„āļāđ€āļžāļ·āđˆāļ­āđ€āļŠāļ·āđˆāļ­āļĄāđ‚āļĒāļ‡āļāļąāļšāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ gRPC āļšāļ™ IP āđāļĨāļ°āļžāļ­āļĢāđŒāļ•āđ€āļ‰āļžāļēāļ°

āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ gRPC

āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ gRPC āļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒāđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒ gRPC āđāļĨāļ°āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ gRPC āļšāļĢāļīāļāļēāļĢāđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒ gRPC āļ—āļļāļāļšāļĢāļīāļāļēāļĢāļĄāļĩ stub āļŦāļĢāļ·āļ­āđ„āļŸāļĨāđŒāļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āļ‹āļķāđˆāļ‡āļ„āļĨāđ‰āļēāļĒāļāļąāļšāļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāđ€āļŸāļ‹āļ—āļĩāđˆāļĄāļĩāļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ—āļēāļ‡āđ„āļāļĨāļ—āļĩāđˆāđƒāļŠāđ‰āļ‡āļēāļ™āļ­āļĒāļđāđˆ āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒ gRPC āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļāļēāļĢāđ€āļĢāļĩāļĒāļāļ‚āļąāđ‰āļ™āļ•āļ­āļ™āđƒāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āđ„āļ›āļĒāļąāļ‡āļ•āđ‰āļ™āļ‚āļąāđ‰āļ§āļ—āļĩāđˆāļĄāļĩāļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒāđ€āļžāļ·āđˆāļ­āļŠāđˆāļ‡āļ•āđˆāļ­āđ„āļ›āļĒāļąāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ gRPC āļˆāļēāļāļ™āļąāđ‰āļ™ stub āđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒ gRPC āļˆāļ°āļŠāđˆāļ‡āđ€āļ„āļĩāļĒāļ§āļĢāļĩāđ„āļ›āļĒāļąāļ‡āļŦāļ™āđˆāļ§āļĒāđ€āļ§āļĨāļēāđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒāđ‚āļĨāļ„āļąāļĨāļšāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđ‚āļĨāļ„āļąāļĨāļŦāļĨāļąāļ‡āļˆāļēāļāļ—āļģāđƒāļŦāđ‰āļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒāđ€āļ›āđ‡āļ™āļ­āļ™āļļāļāļĢāļĄāđ‚āļ”āļĒāđƒāļŠāđ‰āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢāļˆāļąāļ”āđ€āļĢāļĩāļĒāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āļ­āļ‡ Protobuf

āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāđƒāļŠāđ‰āđ‚āļ›āļĢāđ‚āļ•āļ„āļ­āļĨ HTTP/2 āđ€āļžāļ·āđˆāļ­āļŠāļ·āđˆāļ­āļŠāļēāļĢāļāļąāļšāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļ—āļĩāđˆāļ­āļĒāļđāđˆāļŦāđˆāļēāļ‡āđ„āļāļĨ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļ‚āļ­āļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļĒāļ­āļĄāļĢāļąāļšāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđāļĨāļ°āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢ stub āļ‚āļ­āļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ āļ‹āļķāđˆāļ‡āđƒāļŠāđ‰ Protobuf āđ€āļžāļ·āđˆāļ­āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāļŦāļĨāļąāļ‡āļˆāļēāļāļ–āļ­āļ”āļĢāļŦāļąāļŠāļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒāļ‚āļēāđ€āļ‚āđ‰āļē āļˆāļēāļāļ™āļąāđ‰āļ™āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒāļ—āļĢāļēāļ™āļŠāļ›āļ­āļĢāđŒāļ•āđ€āļĨāđ€āļĒāļ­āļĢāđŒāļˆāļ°āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ—āļĩāđˆāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠāļˆāļēāļāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļ•āđ‰āļ™āļ‚āļąāđ‰āļ§ āļāļēāļĢāļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļˆāļ°āļŠāđˆāļ‡āļāļĨāļąāļšāđ„āļ›āļĒāļąāļ‡āļœāļđāđ‰āđ€āļĢāļĩāļĒāļāļŦāļĨāļąāļ‡āļˆāļēāļāļ—āļĩāđˆāđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒ gRPC āđ„āļ”āđ‰āļĢāļąāļšāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ•āļ­āļšāļāļĨāļąāļšāđāļĨāļ°āļ„āļĨāļēāļĒāļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒāļ—āļĩāđˆāļĄāļĩāđƒāļŦāđ‰

āļ‚āđ‰āļ­āļ”āļĩāļ‚āļ­āļ‡ gRPC

gRPC āļĄāļĩāļ‚āđ‰āļ­āļ”āļĩāļŦāļĨāļēāļĒāļ›āļĢāļ°āļāļēāļĢāđ€āļŦāļ™āļ·āļ­āļāļĨāđ„āļāļāļēāļĢāļ­āļ­āļāđāļšāļš API āļ­āļ·āđˆāļ™āđ† gRPC āļĒāļąāļ‡āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļ•āļēāļĄāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡ RPC āļ™āļĩāđˆāļ„āļ·āļ­āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ—āļĩāđˆāđ‚āļ”āļ”āđ€āļ”āđˆāļ™āļ—āļĩāđˆāļŠāļļāļ”āļ‚āļ­āļ‡āļšāļĢāļīāļāļēāļĢ gRPC:

  • āļāļēāļĢāđ€āļĢāļĩāļĒāļāļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļĢāļ°āļĒāļ°āđ„āļāļĨāļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡

āļāļēāļĢāđƒāļŠāđ‰ Protobuf āđāļĨāļ° HTTP/2 āļ—āļģāđƒāļŦāđ‰āļšāļĢāļīāļāļēāļĢ gRPC āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡āļ‚āļķāđ‰āļ™āļ–āļķāļ‡ 10 āđ€āļ—āđˆāļēāđāļĨāļ°āļāļēāļĢāļ›āđ‰āļ­āļ‡āļāļąāļ™ API āļ‚āļ­āļ‡āļāļēāļĢāđ‚āļ•āđ‰āļ•āļ­āļš REST+JSON āļ”āđ‰āļ§āļĒāļāļēāļĢāđƒāļŠāđ‰āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļžāļļāļŠ āļāļēāļĢāļĄāļąāļĨāļ•āļīāđ€āļžāļĨāđ‡āļāļ‹āđŒ āđāļĨāļ°āļāļēāļĢāļšāļĩāļšāļ­āļąāļ”āļŠāđˆāļ§āļ™āļŦāļąāļ§ HTTP/2 āļˆāļķāļ‡āļˆāļąāļ”āļĨāļģāļ”āļąāļšāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡āļŠāļģāļŦāļĢāļąāļšāļšāļĢāļīāļāļēāļĢ gRPC āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāļāļēāļĢāļĄāļąāļĨāļ•āļīāđ€āļžāļĨāđ‡āļāļ‹āđŒāļŠāđˆāļ§āļĒāļ‚āļˆāļąāļ”āļ„āļ§āļēāļĄāļĨāđˆāļēāļŠāđ‰āļēāļ‚āļ­āļ‡ head-of-line āđāļ•āđˆāļāļēāļĢāļžāļļāļŠāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļ—āļģāđƒāļŦāđ‰ HTTP/2 āļŠāļēāļĄāļēāļĢāļ–āļžāļļāļŠāđ€āļ™āļ·āđ‰āļ­āļŦāļēāļˆāļēāļāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđ„āļ›āļĒāļąāļ‡āđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒāļāđˆāļ­āļ™āļ—āļĩāđˆāļˆāļ°āļˆāļģāđ€āļ›āđ‡āļ™ āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļšāļĩāļšāļ­āļąāļ”āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļĄāļēāļāļ‚āļķāđ‰āļ™āđ‚āļ”āļĒāđƒāļŠāđ‰ HTTP/2 āļŠāđˆāļ‡āļœāļĨāđƒāļŦāđ‰āđ‚āļŦāļĨāļ”āđ€āļĢāđ‡āļ§āļ‚āļķāđ‰āļ™āļ”āđ‰āļ§āļĒāļšāļĢāļīāļāļēāļĢ gRPC

  • āļŠāļ•āļĢāļĩāļĄāļĄāļīāđˆāļ‡

āļ„āļģāļ­āļ˜āļīāļšāļēāļĒāļšāļĢāļīāļāļēāļĢāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļ•āļĢāļĩāļĄāļšāļĢāļīāļāļēāļĢ gRPC āļĄāļĩāļŦāļĨāļąāļāļāļēāļĢāļŠāļ•āļĢāļĩāļĄāđāļšāļšāđ„āļ„āļĨāđ€āļ­āđ‡āļ™āļ•āđŒāļŦāļĢāļ·āļ­āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļŠāļīāđ‰āļ™āļŠāļļāļ”āļ­āļĒāļđāđˆāđāļĨāđ‰āļ§ āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒ gRPC āđāļĨāļ°āļšāļĢāļīāļāļēāļĢāļŠāļ•āļĢāļĩāļĄāļĄāļīāđˆāļ‡āļ—āļģāđ„āļ”āđ‰āļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™āļ­āļĒāđˆāļēāļ‡āļĄāļēāļ

  • āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĢāļŦāļąāļŠ

āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļ„āđ‰āļ”āļŠāļģāļŦāļĢāļąāļšāđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒ gRPC āđāļĨāļ°āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ gRPC āđ€āļ›āđ‡āļ™āļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļšāļŦāļĨāļąāļāļ‚āļ­āļ‡āđāļ™āļ§āļ—āļēāļ‡āđ€āļ§āđ‡āļš gRPC āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļ„āđ‰āļ”āļˆāļēāļāđ„āļŸāļĨāđŒ . gRPC.proto āđƒāļŠāđ‰āļ„āļ­āļĄāđ„āļžāđ€āļĨāļ­āļĢāđŒ . .protoc āļĢāļđāļ›āđāļšāļš Protobuf āļ–āļđāļāļ„āļ§āļšāļ„āļļāļĄāļœāđˆāļēāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĢāļŦāļąāļŠāđƒāļ™ gRPC āļ‹āļķāđˆāļ‡āđƒāļŠāđ‰āđ€āļžāļ·āđˆāļ­āļāļģāļŦāļ™āļ”āļ—āļąāđ‰āļ‡āļĢāļđāļ›āđāļšāļšāļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āļˆāļļāļ”āļŠāļīāđ‰āļ™āļŠāļļāļ”āļ‚āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ āļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡ stubs āđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒāļāļąāđˆāļ‡āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒāđāļĨāļ°āđ‚āļ„āļĢāļ‡āļāļĢāļ°āļ”āļđāļāļāļąāđˆāļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ āļ‹āļķāđˆāļ‡āļŠāđˆāļ§āļĒāļĨāļ”āļĢāļ°āļĒāļ°āđ€āļ§āļĨāļēāļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™āđƒāļ™āļāļēāļĢāļ­āļ­āļāđāļšāļšāđ‚āļ›āļĢāđāļāļĢāļĄāļ”āđ‰āļ§āļĒāļšāļĢāļīāļāļēāļĢāļ—āļĩāđˆāļŦāļĨāļēāļāļŦāļĨāļēāļĒāđƒāļ™āļšāļĢāļīāļāļēāļĢ gRPC

  • āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļĢāđˆāļ§āļĄāļāļąāļ™

āļĢāļ°āļšāļšāđāļĨāļ°āļ āļēāļĐāļēāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļģāļ™āļ§āļ™āļĄāļēāļ āđ€āļŠāđˆāļ™ Java, Ruby, Go, C# āđāļĨāļ°āļ­āļ·āđˆāļ™āđ† āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āđ‚āļ”āļĒāļ—āļĢāļąāļžāļĒāļēāļāļĢāđāļĨāļ°āđ„āļĨāļšāļĢāļēāļĢāļĩ gRPC āļ”āđ‰āļ§āļĒāļ āļēāļĐāļēāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰ āļ™āļąāļāļžāļąāļ’āļ™āļēāļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āđāļ­āļ›āļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāđƒāļŠāđ‰āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāļāļąāļ™āđ„āļ”āđ‰āļ‚āđ‰āļēāļĄāđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄāļāļąāļš gRPC āļ•āđ‰āļ­āļ‡āļ‚āļ­āļšāļ„āļļāļ“āļĢāļđāļ›āđāļšāļšāļāļēāļĢāđ€āļ”āļīāļ™āļŠāļēāļĒāđ„āļšāļ™āļēāļĢāļĩāļ‚āļ­āļ‡ Protobuf āđāļĨāļ°āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļ„āđ‰āļ”āļ—āļĩāđˆāļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļģāļŦāļĢāļąāļšāļĢāļ°āļšāļšāđ€āļāļ·āļ­āļšāļ—āļąāđ‰āļ‡āļŦāļĄāļ”

  • āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ

āļĄāļąāđˆāļ™āđƒāļˆāđƒāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļ‚āļ­āļ‡ API āđƒāļ™ gRPC āđ‚āļ”āļĒāđƒāļŠāđ‰ HTTP/2 āļœāđˆāļēāļ™āđ€āļ‹āļŠāļŠāļąāļ™āļ—āļĩāđˆāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠ TLS āļˆāļēāļāļ•āđ‰āļ™āļ—āļēāļ‡āļ–āļķāļ‡āļ›āļĨāļēāļĒāļ—āļēāļ‡ gRPC āļŠāđˆāļ‡āđ€āļŠāļĢāļīāļĄāļāļēāļĢāđƒāļŠāđ‰ SSL/TLS āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđ€āļ‚āđ‰āļēāļĢāļŦāļąāļŠāļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āļāļēāļĢāļĢāļąāļšāļĢāļ­āļ‡āļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđāļĨāļ°āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒ gRPC

  • āļœāļĨāļœāļĨāļīāļ•āđāļĨāļ°āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™

āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļ gRPC āđ€āļ›āđ‡āļ™āļ—āļēāļ‡āđ€āļĨāļ·āļ­āļ RPC āļ—āļĩāđˆāļŠāļĄāļšāļđāļĢāļ“āđŒ āļˆāļķāļ‡āļ—āļģāļ‡āļēāļ™āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āļīāļ”āļ‚āļąāļ”āļāļąāļšāļĢāļ°āļšāļšāđāļĨāļ°āļ āļēāļĐāļēāļ—āļĩāđˆāļŦāļĨāļēāļāļŦāļĨāļēāļĒ āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰ gRPC āļĒāļąāļ‡āļĄāļĩāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ—āļĩāđˆāļĒāļ­āļ”āđ€āļĒāļĩāđˆāļĒāļĄ āđ‚āļ”āļĒāļĄāļĩāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĢāļŦāļąāļŠāļŠāļģāđ€āļĢāđ‡āļˆāļĢāļđāļ›āļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™āļˆāļģāļ™āļ§āļ™āļĄāļēāļāļ”āđ‰āļ§āļĒāļ•āļ™āđ€āļ­āļ‡ āļ‚āļ“āļ°āļ™āļĩāđ‰āļ§āļīāļĻāļ§āļāļĢāļŠāļēāļĄāļēāļĢāļ–āļĄāļĩāļŠāļĄāļēāļ˜āļīāļāļąāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļŦāļĨāļąāļāđ„āļ”āđ‰āļĄāļēāļāļ‚āļķāđ‰āļ™ āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļ gRPC āļ›āļĢāļ°āļŦāļĒāļąāļ”āđ€āļ§āļĨāļēāđ„āļ”āđ‰āļĄāļēāļ

āļ‚āđ‰āļ­āđ€āļŠāļĩāļĒāļ‚āļ­āļ‡ gRPC

āļžāļąāļ’āļ™āļēāļ‹āđ‰āļģāđ„āļ”āđ‰āđ‚āļ”āļĒāđ„āļĄāđˆāļĄāļĩāļŦāļ™āļĩāđ‰āļ—āļēāļ‡āđ€āļ—āļ„āļ™āļīāļ„
āļˆāļģāļĨāļ­āļ‡āļšāļĢāļīāļāļēāļĢ āļ›āļĢāļąāļšāļ‚āđ‰āļ­āļāļģāļŦāļ™āļ” āđāļĨāļ°āļŠāļĢāđ‰āļēāļ‡āđ‚āļ„āđ‰āļ”āļŠāļ°āļ­āļēāļ”āļ‚āļķāđ‰āļ™āđƒāļŦāļĄāđˆāđ€āļĄāļ·āđˆāļ­āļĢāļ°āļšāļšāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡
āļŠāļĢāđ‰āļēāļ‡āđ‚āļ›āļĢāđ€āļˆāļāļ•āđŒ

āđāļĄāđ‰āļ§āđˆāļēāđ€āļĢāļēāļˆāļ°āļŦāļ§āļąāļ‡āļ§āđˆāļēāļ‚āđ‰āļ­āļšāļāļžāļĢāđˆāļ­āļ‡ gRPC āļˆāļ°āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāđāļāđ‰āđ„āļ‚āđƒāļ™āļ—āļĩāđˆāļŠāļļāļ” āđāļ•āđˆāļāđ‡āļāđˆāļ­āđƒāļŦāđ‰āđ€āļāļīāļ”āļ›āļąāļāļŦāļēāļāļąāļšāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļ™āļ‚āļ“āļ°āļ™āļĩāđ‰ āļ‚āđ‰āļ­āđ€āļŠāļĩāļĒāļšāļēāļ‡āļ›āļĢāļ°āļāļēāļĢāļ‚āļ­āļ‡ gRPC āļ„āļļāļ“āļ„āļ§āļĢāļ—āļĢāļēāļšāļ„āļ·āļ­:

  • āļ‚āļēāļ”āļ§āļļāļ’āļīāļ āļēāļ§āļ°

āļāļēāļĢāļžāļąāļ’āļ™āļēāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļ­āļēāļˆāđ€āļ›āđ‡āļ™āļ­āļļāļ›āļŠāļĢāļĢāļ„āļŠāļģāļ„āļąāļāđƒāļ™āļāļēāļĢāļ™āļģāđ„āļ›āđƒāļŠāđ‰ āļ—āļĩāđˆāļŠāļąāļ”āđ€āļˆāļ™āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāđƒāļŠāđ‰ gRPCGraphQL āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļŦāļ™āļķāđˆāļ‡āđƒāļ™āđ€āļžāļ·āđˆāļ­āļ™āļĢāđˆāļ§āļĄāļ‡āļēāļ™āļ‚āļ­āļ‡ gRPC āļĄāļĩāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ„āđ‰āļ™āļŦāļēāļĄāļēāļāļāļ§āđˆāļē 14k āļšāļ™ StackOverflow āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ gRPC āļĄāļĩāđ€āļžāļĩāļĒāļ‡āļ•āđˆāļģāļāļ§āđˆāļē 4k āđ€āļĨāđ‡āļāļ™āđ‰āļ­āļĒāđƒāļ™āļ‚āļ“āļ°āļ™āļĩāđ‰ āļŠāļļāļĄāļŠāļ™ gRPC āļ‚āļēāļ”āļ„āļ§āļēāļĄāļĢāļđāđ‰āđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ” āļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚ āđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļģāđ€āļĢāđ‡āļˆāđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāđ„āļĄāđˆāļĄāļĩāļ„āļ§āļēāļĄāļŠāđˆāļ§āļĒāđ€āļŦāļĨāļ·āļ­āļˆāļēāļāđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļĄāļ­āļĢāđŒāļĄāļēāļāļ™āļąāļāļŠāļģāļŦāļĢāļąāļš HTTP/2 āļ•āļĨāļ­āļ”āļˆāļ™āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāđ‚āļ›āļĢāđ‚āļ•āļ„āļ­āļĨāļ āļēāļĒāļ™āļ­āļ Google āļ­āļĒāđˆāļēāļ‡āđ„āļĢāļāđ‡āļ•āļēāļĄ āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāļŠāļļāļĄāļŠāļ™ gRPC āļ‚āļĒāļēāļĒāļ•āļąāļ§āđāļĨāļ°āļ”āļķāļ‡āļ”āļđāļ”āļ™āļąāļāļžāļąāļ’āļ™āļēāđƒāļŦāļĄāđˆāđ† āļŠāļļāļĄāļŠāļ™āļ™āļĩāđ‰āļāđ‡āļˆāļ°āļžāļąāļ’āļ™āļēāđ„āļ›āđƒāļ™āļ—āļĩāđˆāļŠāļļāļ”

  • āļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒāļˆāļģāļāļąāļ”

āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļ›āļąāļˆāļˆāļļāļšāļąāļ™āđ„āļĄāđˆāļĄāļĩāđ€āļ§āđ‡āļšāđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒ gRPC āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļāļēāļĢāđ€āļŸāļĢāļĄ HTTP/2 āđ„āļ”āđ‰ āļ„āļļāļ“āļˆāļķāļ‡āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļāļšāļĢāļīāļāļēāļĢ gRPC āļˆāļēāļāđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāđ€āļ§āđ‡āļš gRPC āļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļš HTTP/2 āđ€āļ›āđ‡āļ™āļŦāļĨāļąāļ āļ”āļąāļ‡āļ™āļąāđ‰āļ™ āļ„āļļāļ“āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āļžāļĢāđ‡āļ­āļāļ‹āļĩāļāļąāļš gRPC āļ‹āļķāđˆāļ‡āļĄāļĩāļ‚āđ‰āļ­āđ€āļŠāļĩāļĒāļŦāļĨāļēāļĒāļ›āļĢāļ°āļāļēāļĢ

  • āļĄāļ™āļļāļĐāļĒāđŒāđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļ­āđˆāļēāļ™āđ„āļ”āđ‰

āđ„āļŸāļĨāđŒ Protobuf āđ„āļĄāđˆāđ€āļŦāļĄāļ·āļ­āļ™āļāļąāļš XML āđāļĨāļ° JSON āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļ‚āđ‰āļ­āļĄāļđāļĨāļ–āļđāļāļšāļĩāļšāļ­āļąāļ”āđ€āļ›āđ‡āļ™āļĢāļđāļ›āđāļšāļšāđ„āļšāļ™āļēāļĢāļĩ āļ™āļąāļāļžāļąāļ’āļ™āļēāļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄ āđ€āļŠāđˆāļ™ āđ‚āļ›āļĢāđ‚āļ•āļ„āļ­āļĨāļāļēāļĢāļŠāļ°āļ—āđ‰āļ­āļ™āļ‚āļ­āļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđāļĨāļ°āļžāļĢāļ­āļĄāļ•āđŒāļ„āļģāļŠāļąāđˆāļ‡ gRPC āđ€āļžāļ·āđˆāļ­āļ›āļĢāļ°āđ€āļĄāļīāļ™āđ€āļžāļĒāđŒāđ‚āļŦāļĨāļ” āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāđāļāđ‰āđ„āļ‚āļ›āļąāļāļŦāļē āđāļĨāļ°āļŠāļĢāđ‰āļēāļ‡āđāļšāļšāļŠāļ­āļšāļ–āļēāļĄāļ”āđ‰āļ§āļĒāļ•āļ™āđ€āļ­āļ‡

  • āđ€āļŠāđ‰āļ™āđ‚āļ„āđ‰āļ‡āļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ—āļĩāđˆāļŠāļđāļ‡āļŠāļąāļ™

āļˆāļ°āđƒāļŠāđ‰āđ€āļ§āļĨāļēāļŠāļąāļāļ„āļĢāļđāđˆāđ€āļžāļ·āđˆāļ­āļ—āļģāļ„āļ§āļēāļĄāļ„āļļāđ‰āļ™āđ€āļ„āļĒāļāļąāļšāđ‚āļ›āļĢāđ‚āļ•āļ„āļ­āļĨāļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāđāļĨāļ°āļ„āđ‰āļ™āļžāļšāļ§āļīāļ˜āļĩāļāļēāļĢāļĢāļąāļšāļĄāļ·āļ­āļāļąāļšāđāļĢāļ‡āđ€āļŠāļĩāļĒāļ”āļ—āļēāļ™ HTTP/2 āļ‹āļķāđˆāļ‡āļ•āļĢāļ‡āļāļąāļ™āļ‚āđ‰āļēāļĄāļāļąāļš REST āđāļĨāļ° GraphQL āļ‹āļķāđˆāļ‡āļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļ§āļīāļ˜āļĩāļ™āļĩāđ‰āđƒāļŠāđ‰ JSON āđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āđƒāļŦāļāđˆ

AppMaster āļŠāđˆāļ§āļĒāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ?

āđ€āļĢāļīāđˆāļĄāļˆāļēāļāđ‚āļĄāđ€āļ”āļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āļ­āļ‡āļ„āļļāļ“
āđƒāļŠāđ‰ Data Designer āļ­āļ­āļāđāļšāļšāđ‚āļĄāđ€āļ”āļĨ PostgreSQL āđāļĨāļ°āļŠāļĢāđ‰āļēāļ‡āđāļšāđ‡āļāđ€āļ­āļ™āļ”āđŒāļĢāļ­āļšāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ
āļŠāļĢāđ‰āļēāļ‡āđāļšāđ‡āļāđ€āļ­āļ™āļ”āđŒ

No-code āļāļģāļĨāļąāļ‡āđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ§āļīāļ˜āļĩāļ—āļĩāđˆāļœāļđāđ‰āļ„āļ™āļ”āļđāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄ No-code āļ—āļģāđƒāļŦāđ‰āļœāļđāđ‰āļ„āļ™āļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āđāļĨāļ°āļŠāļĢāđ‰āļēāļ‡āļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāđ„āļ”āđ‰āđ€āļĢāđ‡āļ§āļ‚āļķāđ‰āļ™āļ”āđ‰āļ§āļĒ āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĢāļŦāļąāļŠ āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļ„āđ‰āļ”āļŠāļģāļŦāļĢāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ‚āļ­āļ‡āļ„āļļāļ“āļ™āļąāđ‰āļ™āļ‡āđˆāļēāļĒāļāļ§āđˆāļēāđ‚āļ”āļĒāđƒāļŠāđ‰āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄ no-code āđ€āļŠāđˆāļ™ AppMaster āđ„āļĄāđˆāļĄāļĩāļ›āļąāļāļŦāļēāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āđ€āļˆāđ‰āļēāļ‚āļ­āļ‡ āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĢāļŦāļąāļŠāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ„āļļāđ‰āļĄāļ„āļĢāļ­āļ‡ āđāļĨāļ°āļĢāļŦāļąāļŠāļ—āļĩāđˆāļ„āļļāļ“āļŠāļĢāđ‰āļēāļ‡āļˆāļ°āđ€āļ›āđ‡āļ™āļ‚āļ­āļ‡āļ„āļļāļ“āđāļ•āđˆāđ€āļžāļĩāļĒāļ‡āļœāļđāđ‰āđ€āļ”āļĩāļĒāļ§ āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđ„āļ„āļĨāđ€āļ­āļ™āļ•āđŒāđāļĨāļ°āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđ„āļ”āđ‰āđ€āļĢāđ‡āļ§āđāļĨāļ°āļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™āļ”āđ‰āļ§āļĒ AppMaster

āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđāļšāļš no-code āļ‚āļ­āļ‡ AppMaster āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļ™āļąāļāļžāļąāļ’āļ™āļēāđƒāļŠāđ‰āđ‚āļ›āļĢāđ‚āļ•āļ„āļ­āļĨ gRPC āđ€āļžāļ·āđˆāļ­āļŠāļĢāđ‰āļēāļ‡āļ„āļģāļ‚āļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄāđ„āļĄāđ‚āļ„āļĢāđ€āļ‹āļ­āļĢāđŒāļ§āļīāļŠāļŠāđˆāļ§āļ™āļŦāļĨāļąāļ‡ āđƒāļ™āļ›āļĩāļŦāļ™āđ‰āļē āđ€āļĢāļēāļˆāļ°āļ‚āļĒāļēāļĒāļāļēāļĢāļĢāļ­āļ‡āļĢāļąāļš gRPC āđ‚āļ”āļĒāļĢāļ§āļĄ API āđ€āļ‚āđ‰āļēāļāļąāļšāļ—āļąāđ‰āļ‡ gRPC Web āđāļĨāļ° gRPC Mobile applications

āļšāļ—āļŠāļĢāļļāļ›

āđāļĄāđ‰āļ§āđˆāļēāļšāļĢāļīāļāļēāļĢ gRPC āļˆāļ°āļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļŦāļĨāļēāļĒāļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆāļ—āļģāđƒāļŦāđ‰āļ”āļķāļ‡āļ”āļđāļ”āđƒāļˆāļŠāļģāļŦāļĢāļąāļšāļ˜āļļāļĢāļāļīāļˆāđāļĨāļ°āļ™āļąāļāļžāļąāļ’āļ™āļē āđāļ•āđˆāļ—āđ‰āļēāļĒāļ—āļĩāđˆāļŠāļļāļ”āđāļĨāđ‰āļ§ āļāļēāļĢāļ•āļąāļ”āļŠāļīāļ™āđƒāļˆāđƒāļŠāđ‰āļšāļĢāļīāļāļēāļĢ gRPC āđ€āļŦāļ™āļ·āļ­āļšāļĢāļīāļāļēāļĢāļ­āļ·āđˆāļ™āđ† āđ€āļŠāđˆāļ™ REST āļŦāļĢāļ·āļ­ SOAP āļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ‚āļ­āļ‡āļ„āļļāļ“ āđāļĄāđ‰āļ§āđˆāļēāļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļšāļēāļ‡āļ•āļąāļ§āļˆāļ°āļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ”āđ‰āļēāļ™āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡āļāļąāļš gRPC āđāļ•āđˆāļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļ­āļ·āđˆāļ™āđ† āļ­āļēāļˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāļāļąāļšāļ—āļēāļ‡āđ€āļĨāļ·āļ­āļāļ­āļ·āđˆāļ™āļĄāļēāļāļāļ§āđˆāļē āļ„āļļāļ“āļ„āļ§āļĢāđ€āļ‚āđ‰āļēāđƒāļˆāļ‚āđ‰āļ­āđ€āļŠāļĩāļĒāđāļĨāļ°āļ‚āđ‰āļ­āļ”āļĩāļ‚āļ­āļ‡āļšāļĢāļīāļāļēāļĢ gRPC āđāļĨāļ°āļ•āļąāļ”āļŠāļīāļ™āđƒāļˆāļ§āđˆāļēāļˆāļ°āđ€āļŦāļĄāļēāļ°āļāļąāļšāļ„āļļāļ“āļŦāļĢāļ·āļ­āđ„āļĄāđˆ

āļ‡āđˆāļēāļĒāļ•āđˆāļ­āļāļēāļĢāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™
āļŠāļĢāđ‰āļēāļ‡āļšāļēāļ‡āļŠāļīāđˆāļ‡āļ—āļĩāđˆ āļ™āđˆāļēāļ—āļķāđˆāļ‡

āļ—āļ”āļĨāļ­āļ‡āļāļąāļš AppMaster āļ”āđ‰āļ§āļĒāđāļœāļ™āļŸāļĢāļĩ
āđ€āļĄāļ·āđˆāļ­āļ„āļļāļ“āļžāļĢāđ‰āļ­āļĄ āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āđ€āļĨāļ·āļ­āļāļāļēāļĢāļŠāļĄāļąāļ„āļĢāļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāđ„āļ”āđ‰

āđ€āļĢāļīāđˆāļĄ
gRPC āļ„āļ·āļ­āļ­āļ°āđ„āļĢ | AppMaster