#author("2020-07-02T14:15:43+00:00","default:admin","admin") #author("2020-07-02T14:17:14+00:00","default:admin","admin") -[[Elixir初心者がOTPって結局なんなのか調べてみた:https://qiita.com/kaonash/items/d3678d5635e9d1e57ccf]] -[[Elixir/OTPを使った分散アプリケーション:https://dev.classmethod.jp/articles/classmethod-with-elixir-and-otp/]] -Erlangのライブラリ集 -それらを用いた並行プログラミングをしていくためのフレームワーク/デザインパターン -OTPではOTP内のモジュールを使った便利な定番パターンのことを「Behavior」という名前で定義していて、これらを使うことでElixir(本来はその派生元であるErlang)の並行処理や堅牢なプロセス監視を簡単に実現することができる *GenServer [#i4e8ba71] -[[[翻訳] ElixirにおけるOTPの紹介:https://qiita.com/HirofumiTamori/items/b72ad232dc3b26e87a03]] -[[Elixir の OTP (GenServer 編):https://qiita.com/naoya@github/items/ae17a8166e52fc463012]] -[[はじめてなElixir(15) もっとラクに並行プログラミングする(あるいは はじめてな GenServer):https://qiita.com/kikuyuta/items/2c41082305d5ec6809da]] -[[はじめてなElixir(16) もうすこしGenServerであそぶ:https://qiita.com/kikuyuta/items/68704e2170764ade81a0]] -[[はじめてな Elixir(19) GenServer で定期的なお仕事をする(まだ終わってない編):https://qiita.com/kikuyuta/items/245513914eb68bd338b5]] -[[はじめてな Elixir(20) GenServer で定期的なお仕事をする(いい加減つぎに行こうぜ編):https://qiita.com/kikuyuta/items/5776b98a1bf99962ae3a]] -Elixirの軽量プロセス内で状態(state)を扱うためのBehavior -メッセージパッシングで軽量プロセスに保持しておきたい状態を送って、必要な時に(同じくメッセージパッシングで)取り出すことができる -状態が不要になったらGenServerのプロセスごと破棄すればGCの対象になって勝手にお掃除してくれる *Supervisor [#nb90941b] -プロセスの監視と再起動の全てを執り行うBehavior -Elixirではプロセス上でエラーが発生したら、プロセス内でエラーハンドリングをするのではなく、もうプロセスごとクラッシュさせてしまって、それを監視するSupervisorでプロセスを再起動するなり、なにかしらエラーメッセージを吐くなりさせることが推奨されている -Supervisorというのはシステム上にただ一つだけ存在する、というものではなく、Supervisorを監視するSupervisorを作成するなど、Tree上に監視体制を構築することが可能 *ホットスワップ [#q66b2c3c] -[[はじめてな Elixir(30) プロセスのホットスワップをする:https://qiita.com/kikuyuta/items/94033d1da061109ea7e3]]