{"id":20656683,"url":"https://github.com/platformlab/grpc_homa","last_synced_at":"2025-04-19T12:24:03.365Z","repository":{"id":50381863,"uuid":"312426792","full_name":"PlatformLab/grpc_homa","owner":"PlatformLab","description":"Allows Homa to be used as a transport with gRPC.","archived":false,"fork":false,"pushed_at":"2023-10-18T21:04:19.000Z","size":335,"stargazers_count":21,"open_issues_count":3,"forks_count":4,"subscribers_count":4,"default_branch":"main","last_synced_at":"2023-10-18T22:24:51.669Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PlatformLab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-11-13T00:07:16.000Z","updated_at":"2023-10-18T22:25:28.490Z","dependencies_parsed_at":"2023-10-12T14:19:39.315Z","dependency_job_id":null,"html_url":"https://github.com/PlatformLab/grpc_homa","commit_stats":null,"previous_names":[],"tags_count":2,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlatformLab%2Fgrpc_homa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlatformLab%2Fgrpc_homa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlatformLab%2Fgrpc_homa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PlatformLab%2Fgrpc_homa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PlatformLab","download_url":"https://codeload.github.com/PlatformLab/grpc_homa/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224951593,"owners_count":17397425,"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":[],"created_at":"2024-11-16T18:16:56.867Z","updated_at":"2024-11-16T18:16:57.500Z","avatar_url":"https://github.com/PlatformLab.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"This project adds Homa support to gRPC, so that gRPC applications can use\nHoma instead of TCP for transport.\n\n- This project is still in a relatively early stage of development, but C++\n  support is functional as of November 2021. Next up is Java support.\n\n- Please contact me if you have any problems; I'm happy to provide\n  advice and support.\n\n- The head is currently based on gRPC v. 1.57.0 (and there is a branch\n  named grpc-1.57.0 that will track this version of gRPC). There are\n  also branches grpc-1.43.0 and grpc-1.41.0, which represent the\n  most recent code to work on those branches. Older branches are not\n  actively maintained.\n\n- Known limitations:\n  - grpc_homa currently supports only insecure channels.\n\n- Initial performance measurements show that short RPCs complete about\n  40% faster with Homa than with TCP (about 55 us round trip for Homa,\n  vs. 90 us for TCP).\n\n### How to use grpc_homa\n- You will need to download the\n  [Linux kernel driver for Homa](https://github.com/PlatformLab/HomaModule).\n  Compile it as described in that repo and install it on all the machines\n  where you plan to use gRPC.\n\n- Configure the Makefile as described in the comments at the top (sorry...\n  I know this shouldn't need to be done manually).\n\n- Type `make`. This will build `libhoma.a`, which you should link with\n  your applications.\n\n- When compiling your applications, use `-I` to specify this directory,\n  then `#include homa_client.h` as needed for clients and\n  `#include homa_listener.h` as needed for servers.\n\n- On clients, pass `HomaClient::insecureChannelCredentials()` to\n  `grpc::CreateChannel` instead of `grpc::InsecureChannelCredentials()`\n  to create a channel that uses Homa.\n  For an example of a simple but complete client, see `test_client.cc`.\n\n- On servers, pass `HomaListener::insecureCredentials()` to\n  `grpc::AddListeningPort` instead of `grpc::InsecureServerCredentials()`.\n  For an example of a simple but complete server, see `test_server.cc`.\n\n- Once you have done this, all your existing gRPC-based code should\n  work just fine.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplatformlab%2Fgrpc_homa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplatformlab%2Fgrpc_homa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplatformlab%2Fgrpc_homa/lists"}