# 配信ワーカー機能

> **注意**
>
> この機能を利用する場合は事前にサポートまでご連絡ください

> **警告**
>
> この機能は [実験的機能](EXPERIMENTAL.html) のため、正式版では仕様が変更される可能性があります

## 概要

配信ワーカー機能は Sora の内部で音声や映像を配信するワーカーを複数用意することで、
1 チャネルで高ビットレートの映像をより多くのクライアントに配信することをできるようにする機能です。

## この機能を検討する基準

1 チャネルで複数クライアントへ配信する際、1 チャネルで 100 Mbps 以上の帯域を利用する際に検討してください。

## 注意

この設定は基本的にチューニングの部類に入ります。そのため、サポートまでお気軽にご相談ください。

### 音声と映像のみ

現時点で配信ワーカーは音声と映像のみに対応しており、メッセージングには対応していません。

将来的に対応する予定です。

### マルチストリームとサイマルキャストのみ

現時点で配信ワーカーはマルチストリームとサイマルキャストのみに対応しており、
スポットライトには対応しておりません。

将来的に対応する予定です。

## 設定

### rtp_publish_worker_number

`sora.conf` に音声や映像の 1 配信に利用する配信ワーカー数を指定する [rtp_publish_worker_number](SORA_CONF.html#512b8c) を追加しました

- デフォルトの配信ワーカー数は 1 です
- 同時に 100 クライアント以上へ配信する場合はまず 10 を設定することを推奨します
- ワーカー数が 10 であれば 1 チャネル 1000 クライアント以上の配信がができるようになります
- 最小は 1 で、最大は 500 です

ワーカー数の設定を 10 以上で検討している場合はまずサポートにご相談ください。

## 仕組み

> **注釈**
>
> Sora の内部的な話のため、基本的に利用者は意識する必要はありません。

Sora では 1 クライアントが他のクライアントに音声や映像を配信する際、
1 つのワーカーが担当しています。この部分を複数ワーカーにすることで、
他のクライアントに配信する際の負荷を分散することができます。

たとえば 1 チャネルで 1000 クライアントに配信する場合、1 つのワーカーが 1000 クライアントに配信するのではなく、
10 個のワーカーが 100 クライアントずつに配信するようになります。

## シーケンス図

### 配信ワーカー 1

視聴者側への配信が直列。

```mermaid
sequenceDiagram
   participant Pub as 配信者
   participant S as Sora
   participant Sub1 as 視聴者1
   participant Sub2 as 視聴者2
   Pub-)S: 音声と映像
   S-)Sub1: 音声と映像
   S-)Sub2: 音声と映像
```

### 配信ワーカー複数

視聴者側への配信が並列化される。

```mermaid
sequenceDiagram
   participant Pub as 配信者
   participant S as Sora
   participant Sub1 as 視聴者1
   participant Sub2 as 視聴者2
   Pub-)S: 音声と映像
   note right of S: 並列で配信
   par
      S-)Sub1: 音声と映像
   and
      S-)Sub2: 音声と映像
   end
```
