Skip to content

Add idea: Dapr-aware GoRouter - #32

Open
rkoster wants to merge 1 commit into
mainfrom
ideas/dapr-aware-gorouter
Open

Add idea: Dapr-aware GoRouter#32
rkoster wants to merge 1 commit into
mainfrom
ideas/dapr-aware-gorouter

Conversation

@rkoster

@rkoster rkoster commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Explores what it would look like for GoRouter to route based on where a unit of durable work lives rather than which instance is free \u2014 i.e. resolving a Dapr actor/workflow ID to the specific app instance that owns it.

Core observation: Dapr's placement table and GoRouter's route table are the same kind of object (logical identity \u2192 backend instances, NATS-disseminated, churn-reactive), and CF already has instance-addressed routing via X-CF-APP-INSTANCE and __VCAP_ID__.

Presents three depths as a progression:

  1. Shallow \u2014 daprd resolves placement, sets X-CF-APP-INSTANCE; zero GoRouter changes.
  2. Medium \u2014 GoRouter learns placement over NATS and resolves actor IDs from the standard Dapr invocation path; per-route opt-in via RFC-0027 route options. Actor invocation stops requiring a sidecar on the calling side.
  3. Deep \u2014 GoRouter's route table becomes the placement table, potentially removing the need for dapr-placement-server on CF.

Includes an honest risk section on the consistency problem (actors are single-threaded and stateful; Dapr uses Raft to prevent double-activation, while GoRouter's route table is eventually consistent), with 'keep the sidecar authoritative' as the safe mitigation.

Builds on RFC-0055 (identity-aware routing) and RFC-0027 (per-route features). Sibling to the dapr-durable-execution-on-cf idea, which leaves actor placement as its one genuinely open question.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant