Erlang Behaviour 행동 모델 중 하나: Supervisor의 설명

2001 단어 erlang
구체적인 문서는 여기 Supervisor(즉 주관 프로세스, 약칭 주관자)가 주관 하위 프로세스를 시작, 정지, 감시하는 것을 책임진다.주요 생각은 필요할 때 하위 프로세스를 재개하여 그들의 생존을 유지하는 것이다.하위 사양명세 목록을 통해 하위 프로세스를 시작하고 모니터링하며 사양명세 목록의 순서에 따라 프로세스를 시작하고 반대 순서로 프로세스를 종료합니다.일반 서버 Behaviour에서 서버를 시작하는 리셋 모듈은 대개 다음과 같습니다.
-module(ch_sup).
-behaviour(supervisor).

-export([start_link/0]).
-export([init/1]).

start_link() ->
    supervisor:start_link(ch_sup, []).

init(_Args) ->
    SupFlags = #{strategy => one_for_one, intensity => 1, period => 5},
    ChildSpecs = [#{id => ch3,
                    start => {ch3, start_link, []},
                    restart => permanent,
                    shutdown => brutal_kill,
                    type => worker,
                    modules => [cg3]}],
    {ok, {SupFlags, ChildSpecs}}.
  • 전략(strategy)①one_for_one: 하위 프로세스가 종료되면 하위 프로세스만 다시 시작합니다 ② all_for_one: 하위 프로세스가 종료되면 다른 모든 프로세스도 종료하고 모두list 순서대로 다시 시작합니다 ③rest_for_one: 하위 프로세스가 종료되면 프로세스가 종료되고 순서대로 다시 시작합니다 ④simple_one_for_one: and one_for_one 유사, 동적 추가 실례를 통해 프로세스를 시작합니다. 즉, 이 정책 아래의 주관자는 바로 시작하지 않고 Supervisor:start_를 호출합니다.child(Sup, List) 함수가 시작되었습니다. 그 결과는 apply(ch3, start_link, []++ List)에서 호출된 프로세스입니다
  • 최대 리셋 횟수 (intensity): 횟수를 초과하면 다시 리셋하지 않습니다
  • 최대 재부팅 시간 (period): 시간 초과하면 정지합니다
  • 주관자 id(id): id는 주관자의 하위 프로세스를 식별하는 데 사용됩니다
  • 시작 함수(start): apply(M, F, A)를 통해 시작합니다
  • 리셋 정책(restart): ①permanent는 프로세스를 계속 리셋하기로 결정합니다.②temporary가 종료되면 다시 시작하지 않습니다.③transient 만약 하위 프로세스가 normal, shutdown 또는 {shutdown,Term} 등을 이유로 하는 이상이 발생하면 다시 시작합니다..
  • 닫기(shutdown)는 하위 프로세스가 어떻게 종료되는지 결정합니다: ① brutal_kill은 하위 프로세스가 exit/2를 통해 무조건 종료됨을 의미합니다.② 정수형 수치는 프로세스가 종료 신호를 받은 후 N개 단위 시간 후에 프로세스를 종료하는 것을 의미한다.③ infinity는 하위 프로세스가 다른 주관 프로세스라면 infinity 식별자를 설정하면 주관자가 종료할 수 있는 충분한 시간을 남길 수 있음을 의미합니다.shutdown 옵션은 선택할 수 있습니다. 프로세스가worker 프로세스라면 기본값은 5000밀리초입니다.프로세스가 주관자라면 기본 infinity..
  • 유형(type)은 프로세스의 유형을 결정한다. ①worker 작업 프로세스 ②supervisor 주관 프로세스
  • 좋은 웹페이지 즐겨찾기