Files
multi-agent-paper/gRPC_Based_Interface/figures/fig3_rpc_modes.svg
T
2026-06-25 12:19:20 +09:00

87 lines
6.8 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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>