{"id":21113453,"url":"https://github.com/thoainguyen/grpc-java-course","last_synced_at":"2025-03-14T10:14:03.403Z","repository":{"id":144377882,"uuid":"184587305","full_name":"thoainguyen/grpc-java-course","owner":"thoainguyen","description":"Learn gRPC : Unary, Server Streaming, Client Streaming, Bidirectional Streaming ","archived":false,"fork":false,"pushed_at":"2019-06-15T03:21:50.000Z","size":199,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-21T04:28:01.719Z","etag":null,"topics":["grpc-java","microservices","rpc-framework"],"latest_commit_sha":null,"homepage":"https://learning.oreilly.com/videos/grpc-java-master/9781838558048","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thoainguyen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-02T13:37:02.000Z","updated_at":"2019-06-15T03:21:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"e44175be-08e7-4a06-bdeb-45b8a7476197","html_url":"https://github.com/thoainguyen/grpc-java-course","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoainguyen%2Fgrpc-java-course","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoainguyen%2Fgrpc-java-course/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoainguyen%2Fgrpc-java-course/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoainguyen%2Fgrpc-java-course/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoainguyen","download_url":"https://codeload.github.com/thoainguyen/grpc-java-course/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243558484,"owners_count":20310574,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grpc-java","microservices","rpc-framework"],"created_at":"2024-11-20T01:43:56.393Z","updated_at":"2025-03-14T10:14:03.394Z","avatar_url":"https://github.com/thoainguyen.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# grpc-java-course\nLearn gRPC by follow [here](https://learning.oreilly.com/videos/grpc-java-master/9781838558048/)\n\n# gRPC feature\n\n* Compare to Rest/JSON base API\n  * Cros\n    * Use binary data format -\u003e easy serialize and deserialize by machine\n    * Smaller -\u003e faster\n    * ...\n  * Cons\n    * Few tools support for testing\n\n* Backward of HTTP/1\n  * Create new connection for new request\n  * Modal request/response -\u003e server can response only they received a request from client before\n  * Data isn't compressed\n\n* gRPC using HTTP/2 as transport layer\n  * Mutiflexing : mutiple message in a connection\n  * Server push : Server can response stream of message with a request from client before\n  * Bidirectional : Server and client can asynchronous communicate each other\n  * Header compression: header can be compressed so that that's size is smaller -\u003e faster\n  * Secure : Base on SSL/TSL protocol, gRPC is secure by default \n\n# gRPC basic\n\n* Unary\n* Server Streaming\n* Client Streaming\n* Bidirectional streaming\n\n# gRPC advanced\n\n* Handling Errors, for more infomation read here https://grpc.io/docs/guides/error/\n* Deadline call, https://grpc.io/blog/deadlines/\n* SSL Security\n  * Note : on production : use SSL instead .usePlaintext() to ensure security\n  * on developement: use .usePlaintext() for simple and fast\n* gRPC Language Interoperability : you can create client and server with isn't same languague\n* gRPC Reflection and Evans CLI : useful tools support gRPC client command line is [evans](https://github.com/ktr0731/evans) \n    * Follow https://github.com/grpc/grpc-java/blob/master/documentation/server-reflection-tutorial.md\n    * Install evans for gRPC client https://github.com/ktr0731/evans\n    * On linux download file evans-package.tar.gz\n  \n    ```$xslt\n    \n    $ tar xvzf evans-package.tar.gz // untar\n    $ sudo mv evans /usr/local/bin  // for access everywhere from terminal\n    $ evans --cli -r -p 50052       // open grpc-cli\n    ```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoainguyen%2Fgrpc-java-course","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthoainguyen%2Fgrpc-java-course","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoainguyen%2Fgrpc-java-course/lists"}