SDV 원격 분석은 여러 유형의 데이터 소스를 지원합니다. 이 페이지에서는 이러한 유형과 데이터 소스 유형별로 원격 분석에서 지원하는 기능을 간략하게 설명합니다.
데이터 소스 구현을 위한 샘플 코드는 system/software_defined_vehicle/samples/telemetry 디렉터리에서 확인할 수 있습니다.
측정항목 구성의 데이터 소스 정의
측정항목 구성은 측정항목을 수집할 하나 이상의 데이터 소스를 정의합니다. 각 데이터 소스는 source_identifier로 식별됩니다. source_identifier 형식은 데이터 소스에 따라 다릅니다.
| 데이터 소스 | 형식 | 설명 | 예 |
|---|---|---|---|
| SDV 서비스 | Protobuf 메시지 이름 |
정규화된 protobuf 메시지 이름입니다. 서비스에 인스턴스가 여러 개 있는 경우 파이프 (|)로 구분된 서비스 단위 이름을 추가합니다.
|
"com.sdv.google.example.TellTale|com-sdv-google-example-tell-tale-status-hibeam"
|
| 서비스 단위 이름이 포함된 정규화된 인스턴스 이름 (FQIN) |
FQIN과 서비스 단위 이름이 파이프 (|)로 구분됩니다.
|
"vm-cdc:com.google.android.sdv.pubsub.SomeService/instance1|tire-pressure"
|
|
| 구성 가능한 게시자 레지스트리 기반 게시자 | 게시자 이름 | 구성 가능한 게시자 레지스트리에 게시자를 등록하는 데 사용된 정확한 serviceName입니다. |
모든 문자열이 유효합니다. |
각 데이터 소스에 대해 다음 옵션을 사용하여 메시지 가져오기를 매개변수화할 수 있습니다. 동일한 측정항목 구성에서 다른 옵션을 사용하여 동일한 데이터 소스를 여러 번 정의할 수 있습니다. 예를 들어 에지 처리의 일부에서 에지 처리의 다른 부분과 다른 하위 샘플링 간격을 사용할 수 있습니다.
| 옵션 | 유형 | 설명 |
|---|---|---|
connection_type |
SUBSCRIPTION 또는 ON_DEMAND |
SUBSCRIPTION로 설정하면 원격 분석 서비스가 데이터 소스를 구독합니다. ON_DEMAND로 설정하면 원격 분석 서비스는 요청 시에만 데이터 소스에서 메시지를 가져옵니다. |
configuration |
google.protobuf.Any |
설정된 경우 원격 분석 서비스는 데이터 소스와 통신할 때 구성 객체를 데이터 소스에 전달합니다. |
sub_sampling_interval |
google.protobuf.Duration |
설정된 경우 메시지가 하위 샘플링되므로 원격 분석 서비스는 최대 sub_sampling_interval 기간마다 메시지를 처리합니다. |
fetch_last_message |
bool |
설정된 경우 원격 분석 서비스는 메시지가 과거에 게시되었더라도 데이터 소스를 구독할 때 마지막으로 게시된 메시지를 가져옵니다. |
데이터 소스 유형 (다음 섹션 참고)에 따라 원격 분석 서비스에서 지원되는 매개변수는 일부에 불과합니다. 다음 표는 개요를 보여줍니다.
| 옵션 | RPC SDV 서비스 | 게시-수신 (pub/sub) SDV 서비스 | 구성 가능한 게시자 레지스트리 기반 게시자 |
|---|---|---|---|
connection_type: SUBSCRIPTION |
지원됨 1 | 지원됨 | 지원됨 |
connection_type: ON_DEMAND |
지원됨2 | 지원됨 | 지원됨3 |
configuration |
지원됨 | 해당 사항 없음 | 지원됨 |
sub_sampling_interval |
지원되지 않음 | 지원됨4 | 지원되지 않음 |
fetch_last_message |
지원되지 않음 | 지원됨5 | 지원되지 않음 |
CreateSubscription 메서드를 구현하는 경우 지원됩니다.
GetLatestMessage 메서드를 구현하는 경우 지원됩니다.
PublisherInfo.supportsGet가 true인 경우 지원됩니다.
connection_type: SUBSCRIPTION에 지원되며 connection_type: ON_DEMAND에는 적용되지 않습니다.
connection_type: SUBSCRIPTION에 지원되며 connection_type: ON_DEMAND에는 적용되지 않습니다.
SDV 서비스 (SDV 통신 스택을 통해)
원격 분석 서비스는 다른 SDV 서비스에서 데이터를 수집할 수 있습니다. RPC 및 게시/구독 SDV 서비스가 모두 지원됩니다. 원격 분석 서비스는 빌드 시간에 구독할 서비스 목록을 알지 못하므로 Protobuf 리플렉션을 사용하여 SDV 서비스에서 수신한 메시지를 디코딩합니다.
SDV 서비스는 기본적으로 리플렉션 메타데이터를 제공하지 않습니다. SDV 서비스를 원격 분석 데이터 소스로 사용할 수 있도록 하려면 서비스의 VSIDL 카탈로그의 런타임 구성 생성을 사용 설정해야 합니다. 자세한 내용은 서비스 번들 개발자를 위한 VSIDL 제공업체 가이드를 참고하세요.
테스트 및 평가 목적으로만 서비스 번들 정의에서 register_reflection_metadata 옵션을 true로 설정할 수 있습니다. 자세한 내용은 서비스 번들을 참고하세요.
RPC SDV 서비스
원격 분석은 RPC SDV 서비스를 제한적으로 지원합니다. 자세한 내용은 RPC 서비스 정의를 참고하세요. RPC SDV 서비스에서 데이터를 수집하려면 서비스가 다음 RPC 메서드 중 하나 또는 둘 다를 노출해야 합니다.
CreateSubscription는 사용자 정의 응답 스트림을 반환합니다.rpc CreateSubscription(<configuration>) returns (stream <response>)GetLatestMessage는 사용자 정의 응답을 반환합니다.rpc GetLatestMessage(<configuration>) returns (<response>)
구성 인수를 사용하여 데이터 소스의 동작을 매개변수화할 수 있습니다. 예를 들어 다른 게시 빈도를 요청하거나 구독할 항목을 선택할 수 있습니다 (예: 타이어 압력을 읽을 타이어).
측정항목 구성에서 RPC SDV 서비스를 데이터 소스로 정의할 때 데이터 소스 정의에 configuration 값을 지정할 수 있으며, 이 값은 이 RPC의 인수로 사용됩니다. 원격 분석 서비스는 구성 객체를 투명하게 처리하고 사용자가 정의한 내용을 전달합니다.
두 메서드의 구성 인수 유형은 google.protobuf.Any 또는 사용자 정의 유형일 수 있습니다. 두 메서드를 모두 제공하는 경우 인수 유형이 동일해야 합니다. 이러한 RPC 메서드에 구성 인수가 필요하지 않으면 google.protobuf.Empty를 사용하세요.
측정항목 구성의 데이터 소스 정의에 지정된 connection_type에 따라 원격 분석 서비스는 CreateSubscription (connection_type: SUBSCRIPTION의 경우) 또는 GetLatestMessage(connection_type: ON_DEMAND의 경우)를 호출합니다.
게시/구독 SDV 서비스
원격 분석은 추가 구성 없이 SDV 서비스에서 노출된 VSIDL에 정의된 게시/구독 채널 모니터링을 완전히 지원합니다. 자세한 내용은 서비스 번들에 게시자 추가를 참고하세요.
Pub/Sub 채널 구독 외에도 원격 분석은 채널에 게시된 최신 메시지의 주문형 검색을 지원합니다.
구성 가능한 게시자 레지스트리
텔레메트리는 SDV 통신 스택을 사용하여 SDV 서비스에서 데이터를 수집하는 것 외에도 텔레메트리 서비스의 구성 가능한 게시자 레지스트리에 게시자를 등록하는 애플리케이션과 서비스에서 데이터를 수집하는 것을 지원합니다. 이 기능은 SDV 통신 스택을 사용할 수 없는 IVI에서 가장 유용합니다.
구성 가능한 게시자 레지스트리는 SDV 서비스 번들을 작성하지 않고 디버깅하고 프로토타입을 만드는 데도 유용합니다. 자세한 내용은 구성 가능한 게시자 레지스트리를 참고하세요.