arpc

module
v0.0.0-...-64bc6a5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 7, 2026 License: Apache-2.0

README

AppNet RPC (aRPC)

Go Report Card Apache 2.0 License

AppNet RPC (arpc) is a minimal, fast, and pluggable Remote Procedure Call framework built on top of UDP, with support for customizable serialization formats.

Prerequisites

  • Go 1.20 or later

Quick Start

See examples/README.md

Note: If you're running aRPC on Kubernetes and want to connect using a DNS name (e.g., server.default.svc.cluster.local), you must:

  1. Define your service as a headless service by setting:
    spec:
      clusterIP: None
    
  2. Explicitly specify the UDP protocol for your service port:
    ports:
      - port: 9000
        targetPort: 9000
        protocol: UDP
    
  3. Use the fully qualified domain name (FQDN) when specifying the server address, such as server.default.svc.cluster.local:9000.

Without these settings, Kubernetes will assign a default TCP-based ClusterIP, which does not work properly for aRPC(UDP) communication.

Learn more

Contact

If you have any questions or comments, please get in touch with Xiangfeng Zhu (xfzhu@cs.washington.edu).

Directories

Path Synopsis
benchmark
serialization module
cmd
protoc-gen-arpc command
symphony-gen-arpc/protoc-gen-symphony-hybrid/test/money
Code generated by protoc-gen-symphony-hybrid.
Code generated by protoc-gen-symphony-hybrid.
symphony-gen-arpc/test
Code generated by protoc-gen-symphony.
Code generated by protoc-gen-symphony.
proxy module
examples
echo_capnp module
echo_proto module
echo_symphony module
pkg
custom/congestion/cubic/monotime
Package monotime provides a monotonic time representation that is useful for measuring elapsed time.
Package monotime provides a monotonic time representation that is useful for measuring elapsed time.
custom/flowcontrol/quic-flowcontrol/monotime
Package monotime provides a monotonic time representation that is useful for measuring elapsed time.
Package monotime provides a monotonic time representation that is useful for measuring elapsed time.
packet
This file defines the builtin packets (Request, Response, Error) and their corresponding serialization/deserialization codecs.
This file defines the builtin packets (Request, Response, Error) and their corresponding serialization/deserialization codecs.
rpc
pkg/rpc/client.go
pkg/rpc/client.go
transport
Package transport provides timer management functionality for aRPC transport layer operations.
Package transport provides timer management functionality for aRPC transport layer operations.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL