Automatic Service Discovery: EPICS vs OTHER

Automatic Service Discovery


EPICS way:
1. server:
    - creates beacon at port N
    - subscribes to notifications
    - gets request for channels XYZ
    - replies with "<subsystem>:<host>:<port>"

2. client :
    - creates beacon at port N
    - presorts channels to get individual subsystem list [tpc, bemc, xxxx]
    - publishes "who has <variable>?" message for each channel
    - waits for reply from IOC

note: creates UDP storm when clients with many channels reconnect to servers

NORMAL/RECOMMENDED way:
1. server:
    - creates beacon at port N
    - broadcasts "I control <subsystem>, here is my contact info <host>:<port>" messages
    - processes channel queries on <host>:<port> announced

2. client:
    - sorts channel list, extract subsystem(s) ids
    - listens to server beacons, receives beacons for desired subsystem(s)
    - checks whether channels from its list exist at server(s)
    - asks server(s) to "get" channels

note: reliable, does not create UDP storm = constant network load