多くの人がErlangを「Erlang / OTP」と呼んでいます。 OTPはOpen Telecommunication Platformを意味し、Erlangに付属するライブラリセットではありません。 これらは、サーバー、ステートマシン、イベントマネージャー(またはディスパッチャー)を記述するときに必要なErlangインターフェイス(または動作、動作英語)で構成されています。 しかし、それだけではありません。OTPには、プログラマがコードを1つの「アプリケーション」にまとめることができるアプリケーションインターフェイスも含まれています。 また、スーパーバイザーインターフェイスを使用すると、プログラマはプロセスの階層ツリーを作成できます。プロセスが停止すると、プロセスが再起動されます。
OTPは複雑すぎるため、1つの記事で説明することはできません。そのため、数週間以内に一連の記事を執筆します。
Erlang / OTPについて学ぶ必要があるのはなぜですか?
Erlangに付属するプラットフォームは、コードをホットスワップする機能を備えた高負荷で耐障害性のあるシステムを簡単に作成できる、豊富で非常に一般化されたライブラリとインターフェイスのセットを提供します。 以下は、「理由もなく」得られるもののリストです。
- インターフェース:サーバー、ステートマシン、イベントマネージャー
- 標準化されたアプリケーション構造
- ホットスワップコード
- 制御プロセスツリー(プロセスは常に機能します)
これらの「無料」機能に加えて、OTPはErlangでアプリケーションを構築するための標準化されたアプローチを提供します。 ejabberd 、 CouchDB 、 MochiWebなど、よく知られているすべてのオープンソースアプリケーションはOTPを使用します。
したがって、OTPを勉強することで、強力なErlangシステムを作成する知識と能力を得るだけでなく、オープンソースプロジェクトにすぐに参加して、同じ一般的な構造に従うため、そこで知識と経験を得ることができます。
一般的なErlang構文を知っていれば、Erlang / OTPの学習を開始する準備ができています。
インターフェイスgen_ *:
- gen_server-クライアントサーバーアーキテクチャでアプリケーションを作成するために使用されるインターフェイス。
- gen_fsm-状態マシンを作成するためのインターフェース。 gen_fsmを使用してSOCKS5プロキシサーバーを作成しました。これは、wait_for_init、wait_for_auth、ready、およびさまざまな種類の認証のいくつかの中間状態を持つ状態マシンでした。 gen_fsmを使用する必要がある場合、さらに多くの異なるケースがあります。 そして、このインターフェースは私のお気に入りの一つです。
- gen_event-イベントハンドラーとイベントディスパッチャーの作成に使用されます。 最も一般的な使用例は、エラーロギング(ディスパッチャ)と多くのハンドラ(端末、ファイルなど)です。
スーパーバイザインターフェイス
プロセスは、管理する子プロセスを記述するスーパーバイザーインターフェイスを実装します。 多くのスーパーバイザー(制御プロセス)は、スーパーバイザーの階層ツリーに結合されます。 子プロセスが停止した場合、スーパーバイザーはそれをどうするか、いつどのように再起動するかなどを知っています。 したがって、プロセスは常に浮いています。
スーパーバイザインターフェイスの理解を深めるには、Erlangのドキュメントのこのページをお読みください 。
アプリケーションインターフェース
アプリケーションインターフェイスは、多くのスーパーバイザと他のプロセスを1つのユニットとして起動および停止するために必要です。 たとえば、SOCKS5サーバーを作成した後、これをすべてApplicationにパックしました。これは
application:start(socks5_server)
で開始しました。
アプリケーションインターフェースの詳細については、Erlangのドキュメントの概要をご覧ください 。
今後何を期待しますか?
この投稿は、OTPの簡単な紹介を目的としています。 また、「なぜこれを勉強する必要があるのか?」などの質問に答えるため。 そして最後に、どこからどのように始めることができるかを知っています。 近日中に、OTPアプリケーションを徐々に作成する一連の記事を公開します。
明日お見せする次の記事には、gen_serverの紹介が含まれています。gen_serverでは、理論上の銀行口座マネージャーを作成します。 2週間の終わりには、独自のErlang / OTPアプリケーションをゼロから作成する方法がわかります。
続き: gen_serverの概要:Erlybank