13.7.1.1 전 지구적 센서 데이터 이벤트 발생 시간(Event Time) 동기화 원리
분산 시스템 생태계 내에서 생성된 모든 데이터는 시공간의 법칙 아래 지배된다.
한국 땅에서 굴러가는 로봇 A의 전방 카메라가 보행자를 포착한 그 찰나의 순간과, 일본의 관제 서버 엔진이 그 데이터를 네트워크 너머로 수신(Processing Time)한 순간은 절대 일치할 수 없다.
광섬유 케이블의 패킷 지연(Latency Delay), 오퍼레이터 노드 앞단 큐(Queue)의 체증, 백그라운드 스레드의 스케줄링 간섭 등으로 인해 데이터 도달 순서는 무자비하게 어긋나 버린다.
본래의 시간표 축(Time-axis)이 망가진 데이터를 있는 그대로 연산망(Sink)에 집어넣는 행위(Processing Time 기반 처리)는 자율주행의 타이밍 제어를 박살 내는 사망 선고와 같다. 본 절에서는 Zenoh-Flow 스트림의 절대 진리, 즉 시스템 처리 시간(Processing Time)을 철저히 배격하고 오직 사건이 터진 물리적 순간인 사건 발생 시간(Event Time) 만을 척추로 삼아 인메모리 배관을 도열 시키는 동기화 통치 철학을 역설한다.
1. Processing Time의 기만과 시계열 폭동
초보적 통신 프레임워크는 메시지가 엔진 큐에 ’도착한 시간’을 기준으로 타임스탬프를 부여한다(Processing Time).
라이다(LiDAR) 센서가 09:00:01.000 에 장애물을 포착하여 뿌렸고, 카메라 센서가 09:00:01.100 에 브레이크등 불빛을 캡처해 쏘았다고 가정하자.
카메라 패킷은 가벼워서 10ms 만에 융합(Fusion) 연산 노드 큐에 도달했지만, 수십 MB에 달하는 라이다 패킷은 AWS 도쿄 리전을 거치며 라우팅 병목이 걸려 2초 지연된 09:00:03.000 에 큐에 들어왔다.
도착한 시간표(Processing Time)로 이 두 개를 해석하면 참사가 터진다.
관제 시스템은 “카메라가 불빛을 발견하고 난 뒤, 한참 지나서(2초 후) 갑자기 라이다 데이터 펄스가 등장했다“고 시계열 인과율을 거꾸로 역진시켜 해석해 버린다. 이는 과거에 일어난 사건(LiDAR 데이터)이 조만간 일어날 사건(Camera)보다 미래의 일로 결론 나버리는 시간의 역전 폭동이다.
2. Event Time 각인(Embdedding)과 페이로드 분리 불가성
Zenoh-Flow 아키텍처는 이를 방어하기 위해 와이어 위를 흘러가는 데이터 캡슐(zflow::Data)의 헤더(Header) 규격에, 도달 시간이 아닌 절대 창조의 찰나(Event Time) 를 무적의 족쇄처럼 각인(Timestamping)해버린다.
// [Event Time 각인 중심의 와이어 프로토콜 구조체]
pub struct ZFlowMessage {
// 1. 센서 드라이버가 하드웨어 클럭을 긁어 포착한, 오염되지 않은 '사건 발생 순간'
pub event_timestamp_ns: u64,
// 2. 이 데이터 자체가 어떤 논리 구조를 가졌나? (센서 ID 등)
pub source_id: UUID,
// 3. 실제 무거운 화상 바이트나 점군 덩어리
pub payload: Vec<u8>,
}
이 데이터가 C++ 소스 노드에서 잉태될 때(Creation Phase), 로봇의 내부 하드웨어 정밀 타이머(PTP: Precision Time Protocol)가 개입해 나노초 단위의 event_timestamp_ns 를 메시지 껍데기에 구워버린다.
이 캡슐이 대륙 횡단 케이블을 타느라 10분이나 늦게 큐에 처박힌다 해도, 융합(Fusion) 노드는 “수신된 큐의 줄 선 순서” 따위는 전면 백지화 시켜버리고, 오직 껍데기에 적혀있는 저 나노초 스탬프 딱지만을 째려보며 10분 전 과거의 사건 궤도(Timeline) 제자리에 텔레포트시켜 꿰맞춘다.
3. 타임 정렬 큐(Time-Aligned Queue)의 스케줄링 딜레마
각 컴포넌트 구멍(Port)에 도달한 데이터들이 Event Time 을 등에 업고 정렬되려 할 때, 프레임워크는 극심한 인내심과 조율의 고통을 겪어야 한다.
만일 융합 노드가 cam_in 포트에서 00:01.100의 카메라 데이터를 받았다. 하지만 lidar_in 구멍엔 아직 데이터가 안 왔다. 융합 연산을 당장 태워버려야 하는가? 절대 불가하다!
아키텍처의 엔진은 lidar_in 배관 저 멀리서 지연(Latency)되고 있을지도 모를 00:01.000 시절의 더 과거 데이터가 도착할 때까지 앞선 카메라 데이터를 메모리 창고(Time Alignment Buffer)에 가두고 멱살을 잡은 채 강제 대기(Hold & Wait) 시켜야만 한다.
도착한 순서대로 무지성 처리(FIFO Queue)를 하는 구시대 메시지 버스의 방식을 철저히 파괴하고, 시간을 재건축하여 조립하는 행위. Zenoh-Flow 시스템 공학자가 지연(Latency)의 고통을 감수하면서까지 인메모리 스레드를 멈춰 세우는 이유는, 분산 망이 이지러뜨린 시공간의 왜곡을 원본 세계의 수학적 인과율(Causality) 그대로 수복시키기 위한 숭고한 타임 스탬프(Timestamp) 독재 체제 덕분이다.