87 lines
6.8 KiB
XML
87 lines
6.8 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1100 600" font-family="Helvetica, Arial, sans-serif">
|
||
<defs>
|
||
<marker id="arr" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto">
|
||
<path d="M0,0 L10,5 L0,10 z" fill="#37474f"/>
|
||
</marker>
|
||
</defs>
|
||
|
||
<text x="550" y="32" text-anchor="middle" font-size="20" font-weight="700" fill="#102a43">gRPC 4대 RPC 모드 ↔ 엣지 AIoT 시나리오 매핑</text>
|
||
<text x="550" y="55" text-anchor="middle" font-size="13" fill="#486581">통신 계층의 1급 시민인 4가지 모드를 MAS 상호작용에 1:1 매핑</text>
|
||
|
||
<!-- Unary -->
|
||
<g>
|
||
<rect x="60" y="80" width="500" height="220" rx="10" fill="#f1f8ff" stroke="#1976d2" stroke-width="2"/>
|
||
<text x="80" y="110" font-size="15" font-weight="700" fill="#0d47a1">① Unary RPC</text>
|
||
<text x="80" y="132" font-size="12" font-style="italic" fill="#486581">단일 요청 — 단일 응답</text>
|
||
<!-- diagram -->
|
||
<circle cx="140" cy="200" r="22" fill="#bbdefb" stroke="#1976d2" stroke-width="2"/>
|
||
<text x="140" y="204" text-anchor="middle" font-size="10" fill="#0d47a1">T1</text>
|
||
<circle cx="450" cy="200" r="22" fill="#ffe0b2" stroke="#e65100" stroke-width="2"/>
|
||
<text x="450" y="204" text-anchor="middle" font-size="10" fill="#bf360c">T3</text>
|
||
<line x1="165" y1="200" x2="425" y2="200" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<line x1="425" y1="215" x2="165" y2="215" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<text x="295" y="194" text-anchor="middle" font-size="10" fill="#0d47a1">① Req</text>
|
||
<text x="295" y="234" text-anchor="middle" font-size="10" fill="#bf360c">① Resp</text>
|
||
<text x="80" y="260" font-size="11" fill="#102a43"><tspan font-weight="600">사례:</tspan> OTA 명령, 상태 조회, 설정 변경</text>
|
||
<text x="80" y="280" font-size="11" fill="#486581">gRPC Service Config의 지수 백오프 Retry Policy 내장</text>
|
||
</g>
|
||
|
||
<!-- Server Streaming -->
|
||
<g>
|
||
<rect x="580" y="80" width="500" height="220" rx="10" fill="#f1f8ff" stroke="#1976d2" stroke-width="2"/>
|
||
<text x="600" y="110" font-size="15" font-weight="700" fill="#0d47a1">② Server Streaming RPC</text>
|
||
<text x="600" y="132" font-size="12" font-style="italic" fill="#486581">단일 요청 — 지속 응답</text>
|
||
<circle cx="640" cy="200" r="22" fill="#e0f7fa" stroke="#00838f" stroke-width="2"/>
|
||
<text x="640" y="204" text-anchor="middle" font-size="10" fill="#006064">T1</text>
|
||
<circle cx="1000" cy="200" r="22" fill="#e0f7fa" stroke="#00838f" stroke-width="2"/>
|
||
<text x="1000" y="204" text-anchor="middle" font-size="10" fill="#006064">T2</text>
|
||
<line x1="665" y1="200" x2="975" y2="200" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<text x="820" y="194" text-anchor="middle" font-size="10" fill="#006064">① Req</text>
|
||
<line x1="975" y1="220" x2="665" y2="220" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<line x1="975" y1="240" x2="665" y2="240" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<line x1="975" y1="260" x2="665" y2="260" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<text x="820" y="276" text-anchor="middle" font-size="10" fill="#006064">② Stream (LLM token · telemetry)</text>
|
||
<text x="600" y="290" font-size="11" fill="#102a43"><tspan font-weight="600">사례:</tspan> T1→T2 LLM 토큰 스트리밍, 모델 업데이트</text>
|
||
</g>
|
||
|
||
<!-- Client Streaming -->
|
||
<g>
|
||
<rect x="60" y="320" width="500" height="220" rx="10" fill="#fff3e0" stroke="#e65100" stroke-width="2"/>
|
||
<text x="80" y="350" font-size="15" font-weight="700" fill="#bf360c">③ Client Streaming RPC</text>
|
||
<text x="80" y="372" font-size="12" font-style="italic" fill="#486581">지속 요청 — 단일 응답</text>
|
||
<circle cx="140" cy="440" r="22" fill="#e0f7fa" stroke="#00838f" stroke-width="2"/>
|
||
<text x="140" y="444" text-anchor="middle" font-size="10" fill="#006064">T2</text>
|
||
<circle cx="450" cy="440" r="22" fill="#ffe0b2" stroke="#e65100" stroke-width="2"/>
|
||
<text x="450" y="444" text-anchor="middle" font-size="10" fill="#bf360c">T3 (×N)</text>
|
||
<line x1="165" y1="430" x2="425" y2="430" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<line x1="165" y1="445" x2="425" y2="445" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<line x1="165" y1="460" x2="425" y2="460" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<line x1="165" y1="475" x2="425" y2="475" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<text x="295" y="422" text-anchor="middle" font-size="10" fill="#bf360c">① Telemetry chunks</text>
|
||
<line x1="425" y1="500" x2="165" y2="500" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<text x="295" y="518" text-anchor="middle" font-size="10" fill="#006064">② Summarized Resp</text>
|
||
<text x="80" y="540" font-size="11" fill="#102a43"><tspan font-weight="600">사례:</tspan> T3 다수 센서 배치 업로드, OTA 펌웨어 청크</text>
|
||
</g>
|
||
|
||
<!-- Bidi -->
|
||
<g>
|
||
<rect x="580" y="320" width="500" height="220" rx="10" fill="#fff3e0" stroke="#e65100" stroke-width="2"/>
|
||
<text x="600" y="350" font-size="15" font-weight="700" fill="#bf360c">④ Bidirectional Streaming RPC</text>
|
||
<text x="600" y="372" font-size="12" font-style="italic" fill="#486581">지속 요청 — 지속 응답</text>
|
||
<circle cx="640" cy="440" r="22" fill="#ffe0b2" stroke="#e65100" stroke-width="2"/>
|
||
<text x="640" y="444" text-anchor="middle" font-size="10" fill="#bf360c">T2</text>
|
||
<circle cx="1000" cy="440" r="22" fill="#ffe0b2" stroke="#e65100" stroke-width="2"/>
|
||
<text x="1000" y="444" text-anchor="middle" font-size="10" fill="#bf360c">T3</text>
|
||
<line x1="665" y1="430" x2="975" y2="430" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<line x1="975" y1="445" x2="665" y2="445" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<line x1="665" y1="460" x2="975" y2="460" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<line x1="975" y1="475" x2="665" y2="475" stroke="#37474f" stroke-width="2" marker-end="url(#arr)"/>
|
||
<text x="820" y="416" text-anchor="middle" font-size="10" fill="#bf360c">① Negotiation · State</text>
|
||
<text x="820" y="500" text-anchor="middle" font-size="10" fill="#bf360c">② Continues…</text>
|
||
<text x="600" y="520" font-size="11" fill="#102a43"><tspan font-weight="600">사례:</tspan> T2↔T2 엣지 합의, T3↔T2 AGV/차량 V2X 실시간 협업</text>
|
||
</g>
|
||
|
||
<text x="550" y="575" text-anchor="middle" font-size="11" font-style="italic" fill="#486581">HTTP/2 Flow Control(백프레셔) + Deadline + Resume Token이 모든 모드의 단절·핸드오버 내성을 보장</text>
|
||
</svg>
|