Overview¶
Admin API¶
An HTTP service for viewing Samaritan's runtime information, include config, stats.
Config¶
Store service configuration, process services and configuration updates, and notify the Controller.
-
Static
Read and parse service configuration from bootstrap file. Work only when init config.
-
Dynamic
The gRPC delivers service and service configuration information.
Controller¶
Control proc creation, destruction, and runtime behavior.
Proc¶
The smallest processing unit used to proxy a real service, different protocols can have their own implementation.
Hot Reloader¶
Responsible for smooth upgrades to Samaritan without downtime, use SO_REUSEPORT.
The new Samaritan instance use UNIX socket to communicate with the old samaritan instance.
sequenceDiagram
participant new as New Samaritan
participant old as Old Samaritan
new ->> old: Dail to UNIX socket
new ->> new: Start controller
new ->> old: Shutdown admin request
old ->> old: Shutdown admin
new ->> new: Start admin
new ->> new: Start listeners
new ->> old: Drain listeners request
old ->> old: Drain listeners
new ->> old: Terminate parent request
old ->> old: Terminate
Workflow¶
sequenceDiagram
participant cfg as Config
participant ctl as Controller
participant proc as Proc
cfg ->> ctl: New service event
ctl ->> +proc: Create new proc
cfg ->> ctl: Endpoints add event
ctl ->> proc: Call OnSvcHostAdd()
cfg ->> ctl: Endpoints remove event
ctl ->> proc: Call OnSvcHostRemove()
cfg ->> ctl: Config update event
ctl ->> proc: Call OnSvcConfigUpdate()
cfg ->> ctl: Del service event
ctl ->> -proc: Call Stop()