同期と非同期
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/08/16 07:02 UTC 版)
多くの通信プロトコルは、同期型である。World Wide WebやWebサービスで使われている HTTP などは明らかに同期型である。同期モデルでは、あるシステムが別のシステムとのコネクションを形成し、要求を送って、応答を待つ。多くの場合、これで全く問題ない。例えば、ユーザーが Web ページに要求を送り、応答を待つというような場合である。 しかし、このようなシナリオではうまくいかない場合がある。例えば、AJAX (Asynchronous Javascript and XML) は非同期にテキストやXMLを送って、ウェブページの一部をより適切な情報で更新する。Googleはオートコンプリート機能でこの方式を採用しており、検索ボックスにキーワードの一部を入力した際に考えられるキーワード全体の一覧を提供する。この一覧はユーザーの入力に従って非同期に更新される。 他の非同期な例として、イベント通知システムや出版-購読型システムがある。 あるアプリケーションが別のアプリケーションにイベント発生を知らせたいが、その応答を待つ必要がない(あるいは待てない)場合 出版-購読型モデルのシステムでは、アプリケーションは情報を任意の(不明な個数の)受信者に対して「出版」する。 これらの場合、例えば情報の受け手がクラッシュしてしまっている可能性もあり、送信側が応答を待つのは適切ではない。 アプリケーションは同期または非同期のどちらか一方だけで実装する必要はない。対話型アプリケーションは特定の要求に対して即座に応答する必要があるだろう(顧客に対して、在庫を確認したうえで購入要求が受理されたことを知らせる場合など)。しかし一方で、キューを使って処理を遅延させることが可能な部分もある(請求金額の計算を完了させ、そのデータを中央のデータベースに登録し、関連する他のサービスを実行する)。このような場合に、非同期型のメッセージキューを使えば、システム全体の性能(特に顧客から見た応答性能)を向上させることができる。
※この「同期と非同期」の解説は、「メッセージキュー」の解説の一部です。
「同期と非同期」を含む「メッセージキュー」の記事については、「メッセージキュー」の概要を参照ください。
- 同期と非同期のページへのリンク