āĻ•ā§āϞ⧋āĻ¸ā§āϟāĻžāϰ → āϏāĻšāϜ āĻ“āϟāĻŋāĻĒāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻž

āĻĒā§āϰāĻžāϝāĻŧ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏāĻĢāϞ āĻŦā§āϝāĻŦāϏāĻžāϝāĻŧāĻŋāĻ• āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻļā§€āĻ˜ā§āϰ āĻŦāĻž āĻĒāϰ⧇ āĻāĻ•āϟāĻŋ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻ…āύ⧁āĻ­ā§‚āĻŽāĻŋāĻ• āĻ¸ā§āϕ⧇āϞāĻŋāĻ‚ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤ āĻ…āύ⧇āĻ• āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āφāĻĒāύāĻŋ āϏāĻšāϜāĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āωāĻĻāĻžāĻšāϰāĻŖ āĻļ⧁āϰ⧁ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āϞ⧋āĻĄ āĻ—āĻĄāĻŧ āĻ•āĻŽāĻžāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āϤāĻŦ⧇ āĻāĻŽāύ āĻ•āĻŋāϛ⧁ āϤ⧁āĻšā§āĻ› āϘāϟāύāĻžāĻ“ āϰāϝāĻŧ⧇āϛ⧇ āϝ⧇āĻ–āĻžāύ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āύ⧋āĻĄ āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϜāĻžāύ⧇ āĻāĻŦāĻ‚ āϏāĻžāĻŦāϧāĻžāύ⧇ āĻ•āĻžāĻœā§‡āϰ āϚāĻžāĻĒ āĻŦāĻŋāϤāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻ•ā§āϞ⧋āĻ¸ā§āϟāĻžāϰ → āϏāĻšāϜ āĻ“āϟāĻŋāĻĒāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻž

āĻāϟāĻž āĻāϤ āĻ­āĻžāĻ—ā§āϝāĻŦāĻžāύ āϝ⧇ āĻĒāϰāĻŋāĻŖāϤ erlang, āϝāĻž āφāĻŽāϰāĻž āĻāϰ āĻŽāύ⧋āϰāĻŽ āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āĻāĻŦāĻ‚ āĻāϰ āϚāĻžāϰāĻĒāĻžāĻļ⧇ āĻšāĻžāχāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻŦ⧇āϛ⧇ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋ, āĻāϰ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻĨāĻŽ-āĻļā§āϰ⧇āĻŖā§€ āϰāϝāĻŧ⧇āϛ⧇ āĻŦāĻŋāϤāϰāĻŖ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ. āϤāĻžāĻ¤ā§āĻ¤ā§āĻŦāĻŋāĻ•āĻ­āĻžāĻŦ⧇, āĻāϟāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āϤ⧁āĻšā§āĻ› āĻļā§‹āύāĻžāĻšā§āϛ⧇:

āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āύ⧋āĻĄā§‡āϰ āĻĒā§āϰāϏ⧇āϏ⧇āϰ āĻŽāĻ§ā§āϝ⧇, āϏ⧇āχāϏāĻžāĻĨ⧇ āϞāĻŋāĻ™ā§āĻ• āĻāĻŦāĻ‚ āĻŽāύāĻŋāϟāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻŦāĻžāĻ°ā§āϤāĻž āĻĒāĻžāϏ āĻšāĻšā§āϛ⧇, āĻ¸ā§āĻŦāĻšā§āĻ› [â€Ļ]

āĻ…āύ⧁āĻļā§€āϞāύ⧇, āϏāĻŦāĻ•āĻŋāϛ⧁ āĻāĻ•āϟ⧁ āĻŦ⧇āĻļāĻŋ āϜāϟāĻŋāϞāĨ¤ āĻŦāĻŋāϤāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ erlang āĻŦāĻŋāĻ•āĻļāĻŋāϤ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āϝāĻ–āύ "āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ" āĻŽāĻžāύ⧇ āĻļāĻŋāĻĒāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻŦāĻĄāĻŧ āϞ⧋āĻšāĻžāϰ āĻŦāĻžāĻ•ā§āϏ, āĻāĻŦāĻ‚ "āĻĄāĻ•āĻžāϰ" āĻ›āĻŋāϞ āϞāĻ‚āĻļā§‹āϰāĻŽā§āϝāĻžāύ⧇āϰ āĻĒā§āϰāϤāĻŋāĻļāĻŦā§āĻĻāĨ¤ āĻ­āĻŋāϤāϰ⧇ IP4 āĻ…āύ⧇āĻ•āϗ⧁āϞāĻŋ āĻ…āĻŦā§āϝāĻ•ā§āϤ āĻ āĻŋāĻ•āĻžāύāĻž āĻ›āĻŋāϞ, āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻŦā§āϰ⧇āĻ•āϗ⧁āϞāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āχāρāĻĻ⧁āϰ⧇āϰ āϤāĻžāϰ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϚāĻŋāĻŦāĻžāύ⧋āϰ āĻ•āĻžāϰāϪ⧇ āϘāĻŸā§‡āĻ›āĻŋāϞ āĻāĻŦāĻ‚ āωāĻ¤ā§āĻĒāĻžāĻĻāύ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāϰ āĻ—āĻĄāĻŧ āφāĻĒāϟāĻžāχāĻŽ āĻ•āϝāĻŧ⧇āĻ• āĻĻāĻļāϕ⧇ āĻĒāϰāĻŋāĻŽāĻžāĻĒ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤

āĻāĻ–āύ āφāĻŽāϰāĻž āϏāĻ•āϞ⧇āχ āĻ…āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ā§āϝāĻ­āĻžāĻŦ⧇ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ, āĻĒā§āϝāĻžāϕ⧇āϜāĻĄ āĻāĻŦāĻ‚ āϚāϞāĻŽāĻžāύ āĻŦāĻŋāϤāϰāĻŖ erlang āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻ—āϤāĻŋāĻļā§€āϞ āφāχāĻĒāĻŋ āĻ āĻŋāĻ•āĻžāύāĻžāϗ⧁āϞāĻŋ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ āĻ°ā§āϝāĻžāĻ¨ā§āĻĄāĻŽāύ⧇āϏ⧇āϰ āύ⧀āϤāĻŋāϤ⧇ āĻšāĻ¸ā§āϤāĻžāĻ¨ā§āϤāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āύ⧋āĻĄāϗ⧁āϞāĻŋ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āĻļāĻŋāĻĄāĻŋāωāϞāĻžāϰ⧇āϰ āĻŦāĻžāĻŽ āĻ—ā§‹āĻĄāĻŧāĻžāϞāĻŋāϤ⧇ āĻ…āĻĻ⧃āĻļā§āϝ āĻšāϝāĻŧ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻŦāϝāĻŧāϞāĻžāϰāĻĒā§āϞ⧇āϟ āϕ⧋āĻĄā§‡āϰ āĻ—āĻžāĻĻāĻž āĻāĻĄāĻŧāĻžāϤ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āϚāϞāĻŽāĻžāύ āĻāĻ•āϟāĻŋ āĻŦāĻŋāϤāϰāĻŖ erlang, āĻĒā§āϰāϤāĻŋāϕ⧂āϞ āĻĒāϰāĻŋāĻŦ⧇āĻļ āĻŽā§‹āĻ•āĻžāĻŦ⧇āϞāĻž āĻ•āϰāϤ⧇, āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ.

āĻŽāĻ¨ā§āϤāĻŦā§āϝ: āφāĻŽāĻŋ āϏāĻšā§‡āϤāύ āϝ⧇ āφāϛ⧇ libcluster. āĻāϟāĻŋ āϏāĻ¤ā§āϝāĻŋāχ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ, āĻāϟāĻŋāϤ⧇ āĻāĻ• āĻšāĻžāϜāĻžāϰ⧇āϰāĻ“ āĻŦ⧇āĻļāĻŋ āϤāĻžāϰāĻž āϰāϝāĻŧ⧇āϛ⧇, āϞ⧇āĻ–āĻ• āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻŦāĻŋāĻ–ā§āϝāĻžāϤ āĻāĻŦāĻ‚ āĻāχ āϏāĻŽāĻ¸ā§āϤ āĻ•āĻŋāϛ⧁⧎ āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āϤ⧈āϰāĻŋ āĻāĻŦāĻ‚ āĻŦāϜāĻžāϝāĻŧ āϰāĻžāĻ–āĻžāϰ āϜāĻ¨ā§āϝ āĻāχ āĻĒā§āϝāĻžāϕ⧇āĻœā§‡āϰ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āϜāĻ¨ā§āϝ āϝāĻĨ⧇āĻˇā§āϟ āĻšāϝāĻŧ, āφāĻŽāĻŋ āφāĻĒāύāĻžāϰ āϜāĻ¨ā§āϝ āϖ⧁āĻļāĻŋāĨ¤ āĻĻ⧁āĻ°ā§āĻ­āĻžāĻ—ā§āϝāĻ•ā§āϰāĻŽā§‡, āφāĻŽāĻžāϰ āφāϰāĻ“ āĻ…āύ⧇āĻ• āĻ•āĻŋāϛ⧁ āĻĻāϰāĻ•āĻžāϰāĨ¤ āφāĻŽāĻŋ āϏ⧇āϟāφāĻĒāϟāĻŋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤāĻ­āĻžāĻŦ⧇ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāϤ⧇ āϚāĻžāχ āĻāĻŦāĻ‚ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻĒ⧁āύāĻ°ā§āĻ—āĻ āύ⧇āϰ āĻĨāĻŋāϝāĻŧ⧇āϟāĻžāϰ⧇ āĻŦāĻžāχāϰ⧇āϰ āĻĻāĻ°ā§āĻļāĻ• āĻšāϤ⧇ āϚāĻžāχ āύāĻžāĨ¤

āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž

āφāĻŽāĻžāϰ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤāĻ­āĻžāĻŦ⧇ āϝāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ›āĻŋāϞ āϤāĻž āĻšāϞ āĻāĻ•āϟāĻŋ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āϝāĻž āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āĻĒāϰāĻŋāϚāĻžāϞāύāĻžāϰ āĻĻāĻžāϝāĻŧāĻŋāĻ¤ā§āĻŦ āύ⧇āĻŦ⧇ āĻāĻŦāĻ‚ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋ āĻĨāĻžāĻ•āĻŦ⧇:

  • āύ⧋āĻĄā§‡āϰ āĻāĻ•āϟāĻŋ āĻšāĻžāĻ°ā§āĻĄ-āϕ⧋āĻĄā§‡āĻĄ āϤāĻžāϞāĻŋāĻ•āĻž āĻāĻŦāĻ‚ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ—āϤāĻŋāĻļā§€āϞ āφāĻŦāĻŋāĻˇā§āĻ•āĻžāϰ āωāĻ­āϝāĻŧ⧇āϰ āϏāĻžāĻĨ⧇ āĻ¸ā§āĻŦāĻšā§āĻ› āĻ•āĻžāϜ erlang;
  • āĻĒā§āϰāϤāĻŋāϟāĻŋ āϟāĻĒā§‹āϞāϜāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āĻ•āϞāĻŦā§āϝāĻžāĻ• (āϏ⧇āĻ–āĻžāύ⧇ āύ⧋āĻĄ, āĻāĻ–āĻžāύ⧇ āύ⧋āĻĄ, āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻ…āĻ¸ā§āĻĨāĻŋāϰāϤāĻž, āĻŦāĻŋāĻ­āĻžāϜāύ);
  • āĻĻā§€āĻ°ā§āϘ āĻāĻŦāĻ‚ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āύāĻžāĻŽ āϏāĻš āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āϚāĻžāϞ⧁ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻŦāĻšā§āĻ› āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ :nonode@nohost;
  • āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹ āϕ⧋āĻĄ āϞāĻŋāĻ–āϤ⧇ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻĄāĻ•āĻžāϰ āϏāĻŽāĻ°ā§āĻĨāύ āĻŦāĻžāĻ•ā§āϏ⧇āϰ āĻŦāĻžāχāϰ⧇āĨ¤

āĻĒāϰ⧇āϰāϟāĻŋāϰ āĻŽāĻžāύ⧇ āĻšāϞ āϝ⧇ āφāĻŽāĻŋ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻžāϰ āĻĒāϰ⧇ :nonode@nohost, āĻ…āĻĨāĻŦāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻ•ā§ƒāĻ¤ā§āϰāĻŋāĻŽāĻ­āĻžāĻŦ⧇ āĻŦāĻŋāϤāϰāĻŖ āĻ•āϰāĻž āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ test_cluster_task, āφāĻŽāĻŋ āĻļ⧁āϧ⧁ āĻĻ⧌āĻĄāĻŧāĻžāϤ⧇ āϚāĻžāχ docker-compose up --scale my_app=3 āĻāĻŦāĻ‚ āĻĻ⧇āϖ⧁āύ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāϟāĻŋ āϕ⧋āύ āϕ⧋āĻĄ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻĄāĻ•āĻžāϰ⧇ āϤāĻŋāύāϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰ⧇āĨ¤ āφāĻŽāĻŋ āϝ⧇āĻŽāύ āύāĻŋāĻ°ā§āĻ­āϰāĻļā§€āϞ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϚāĻžāχ mnesia - āϝāĻ–āύ āϟāĻĒā§‹āϞāϜāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ, āĻĒāĻ°ā§āĻĻāĻžāϰ āφāĻĄāĻŧāĻžāϞ⧇ āϤāĻžāϰāĻž āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĨ⧇āϕ⧇ āϕ⧋āύ⧋ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻ•āĻŋāĻ• āĻ›āĻžāĻĄāĻŧāĻžāχ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āϞāĻžāχāĻ­ āĻĒ⧁āύāĻ°ā§āύāĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ•āϰ⧇āĨ¤

āĻŽāĻ  āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āϏāĻŽāĻ°ā§āĻĨāύ āĻĨ⧇āϕ⧇ āĻ•āĻĢāĻŋ āϤ⧈āϰāĻŋ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻāĻ•āϟāĻŋ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻšāϤ⧇ āωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻ›āĻŋāϞ āύāĻž. āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϰ⧂āĻĒāĻžāϞ⧀ āĻŦ⧁āϞ⧇āϟ āύāϝāĻŧ āϝāĻžāϰ āϞāĻ•ā§āĻˇā§āϝ āϏāĻŽāĻ¸ā§āϤ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āϕ⧇āϏ āĻ•āĻ­āĻžāϰ āĻ•āϰāĻž āĻŦāĻž āĻāĻ•āĻžāĻĄā§‡āĻŽāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āϏāĻŽāĻžāϧāĻžāύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āϝ⧇ āĻ…āĻ°ā§āĻĨ⧇ āϤāĻžāĻ¤ā§āĻ¤ā§āĻŦāĻŋāĻ•āϰāĻž CS āĻāχ āĻĒāĻĻ⧇ āϰāĻžāϖ⧁āύāĨ¤ āĻāχ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϟāĻŋ āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āĻ¸ā§āĻĒāĻˇā§āϟ āωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻĒāϰāĻŋāĻŦ⧇āĻļāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϤāĻŦ⧇ āĻāϟāĻŋāϰ āĻ•āĻžāϜāϟāĻŋ āϖ⧁āĻŦ āĻŦāĻĄāĻŧ āύāϝāĻŧāĨ¤ āĻāχ āϞāĻ•ā§āĻˇā§āϝ āĻšāĻŦ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āωāĻ¨ā§āύāϝāĻŧāύ āĻĒāϰāĻŋāĻŦ⧇āĻļ āĻāĻŦāĻ‚ āĻĒā§āϰāϤāĻŋāϕ⧂āϞ āĻĒāĻžāĻ¤ā§āϰ⧇ āĻĒā§‚āĻ°ā§āĻŖ āĻŦāĻŋāϤāϰāĻŖāĻ•ā§ƒāϤ āχāϞāĻžāĻ¸ā§āϟāĻŋāĻ• āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¸ā§āĻŦāĻšā§āĻ›āϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻžāĨ¤

āĻŦ⧇āϛ⧇ āύ⧇āĻ“āϝāĻŧāĻž āĻĒāĻĻā§āϧāϤāĻŋ

āĻŽāĻ  āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻšāĻŋāϏāĻžāĻŦ⧇ āϚāĻžāϞāĻžāύ⧋āϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝ⧇ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻĻāĻŋāĻ“ āωāĻ¨ā§āύāϤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰāĻž āϏāϰāĻžāϏāϰāĻŋ āϚāĻžāϞāĻžāύ⧋āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āϏāĻŽāĻžāĻŦ⧇āĻļ āĻāĻŦāĻ‚ āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāϪ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ Cloister.Manager āϞāĻ•ā§āĻˇā§āϝ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āϏ⧁āĻĒāĻžāϰāĻ­āĻžāχāϜāĻžāϰ āĻ—āĻžāϛ⧇āĨ¤

āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻšāĻŋāϏāĻžāĻŦ⧇ āϚāĻžāϞāĻžāύ⧋ āĻšāϞ⧇, āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ config, āϝāĻž āĻĨ⧇āϕ⧇ āĻāϟāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŽā§ŒāϞāĻŋāĻ• āĻŽāĻžāύāϗ⧁āϞāĻŋ āĻĒāĻĄāĻŧ⧇:

config :cloister,
  otp_app: :my_app,
  sentry: :"cloister.local", # or ~w|n1@foo n2@bar|a
  consensus: 3,              # number of nodes to consider
                             #    the cluster is up
  listener: MyApp.Listener   # listener to be called when
                             #    the ring has changed

āωāĻĒāϰ⧇āϰ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϗ⧁āϞāĻŋ āφāĻ•ā§āώāϰāĻŋāĻ• āĻ…āĻ°ā§āĻĨ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤāϗ⧁āϞāĻŋ āĻŦā§‹āĻāĻžāϝāĻŧ: āĻŽāĻ  OTP āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ :my_app, āĻŦā§āϝāĻŦāĻšāĻžāϰāϏāĻŽā§‚āĻš erlang āĻĒāϰāĻŋāώ⧇āĻŦāĻž āφāĻŦāĻŋāĻˇā§āĻ•āĻžāϰ āύ⧋āĻĄ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāϤ⧇, āĻ…āĻ¨ā§āϤāϤ āϤāĻŋāύāϟāĻŋ, āĻāĻŦāĻ‚ MyApp.Listener āĻŽāĻĄāĻŋāωāϞ (āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ @behaviour Cloister.Listener) āϟāĻĒā§‹āϞāϜāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋ āĻĒ⧇āϤ⧇ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇āϰ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāĻŖ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ.

āĻāχ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ, āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏāĻ™ā§āϗ⧇ āĻŽāĻ  āĻšāϤ⧇ āĻšāĻŦ⧇ āĻĒāĻ°ā§āϝāĻžāϝāĻŧāĻ•ā§āϰāĻŽā§‡ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύ, āϐāĻ•ā§āϝāĻŽāϤ āύāĻž āĻĒ⧌āρāĻ›āĻžāύ⧋ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻŽā§‚āϞ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϟāĻŋāϕ⧇ āĻŦāĻŋāϞāĻŽā§āĻŦāĻŋāϤ āĻ•āϰāĻž (āωāĻĒāϰ⧇āϰ āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āĻŽāϤ⧋ āϤāĻŋāύāϟāĻŋ āύ⧋āĻĄ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻāĻŦāĻ‚ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āϰāϝāĻŧ⧇āϛ⧇āĨ¤) āĻāϟāĻŋ āĻŽā§‚āϞ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋāϕ⧇ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāĻžāϰ āϏ⧁āϝ⧋āĻ— āĻĻ⧇āϝāĻŧ āϝ⧇ āϝāĻ–āύ āĻāϟāĻŋ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ, āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰāϟāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āωāĻĒāϞāĻŦā§āϧāĨ¤ āϝāĻ–āύāχ āϟāĻĒā§‹āϞāϜāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ (āĻāϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āĻ…āύ⧇āĻ•āϗ⧁āϞāĻŋ āĻĨāĻžāĻ•āĻŦ⧇, āĻ•āĻžāϰāĻŖ āύ⧋āĻĄāϗ⧁āϞāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āϏāĻŋāĻ™ā§āĻ•ā§āϰ⧋āύāĻžāϏāĻ­āĻžāĻŦ⧇ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ āύāĻž), āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻžāϰāϕ⧇ āĻĄāĻžāĻ•āĻž āĻšāĻŦ⧇ MyApp.Listener.on_state_change/2. āφāĻŽāϰāĻž āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻžāϏ āĻŽā§‡āϏ⧇āϜ āĻĒāĻžāχ āϤāĻ–āύ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āϏāĻŽāϝāĻŧ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻ•āĻļāύ āĻ•āϰāĻŋ %Cloister.Monitor{status: :up}, āϝāĻžāϰ āĻ…āĻ°ā§āĻĨ: "āĻšā§āϝāĻžāϞ⧋, āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤"

āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ consensus: 3 āϏāĻ°ā§āĻŦā§‹āĻ¤ā§āϤāĻŽ āĻ•āĻžāϰāĻŖ āφāĻŽāϰāĻž āφāϰ⧋ āύ⧋āĻĄ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāĻžāϰ āφāĻļāĻž āĻ•āϰāϞ⧇āĻ“, āĻ•āϞāĻŦā§āϝāĻžāĻ• āĻšāĻŦ⧇ status: :rehashing → status: :up āύāϤ⧁āύ āϝ⧋āĻ— āĻ•āϰāĻž āĻŦāĻž āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāĻž āϕ⧋āύ⧋ āύ⧋āĻĄā§‡āĨ¤

āĻŦāĻŋāĻ•āĻžāĻļ āĻŽā§‹āĻĄā§‡ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āφāĻĒāύāĻžāϕ⧇ āϕ⧇āĻŦāϞ āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ consensus: 1 и āĻŽāĻ  āϝāĻ–āύ āϤāĻŋāύāĻŋ āĻĻ⧇āϖ⧇āύ āϤāĻ–āύ āφāύāĻ¨ā§āĻĻ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āϏāĻŽāĻžāĻŦ⧇āĻļ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϝāĻžāĻŦ⧇āύ :nonode@nohostāĻ…āĻĨāĻŦāĻž :node@hostāĻ…āĻĨāĻŦāĻž :node@host.domain - āύ⧋āĻĄāϟāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āϤāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ (:none | :shortnames | :longnames).

āĻŦāĻŋāϤāϰāĻŖ āĻ•āϰāĻž āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻž

āĻĄāĻŋāĻ¸ā§āĻŸā§āϰāĻŋāĻŦāĻŋāωāĻŸā§‡āĻĄ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāĻžāύāϗ⧁āϞāĻŋ āĻļā§‚āĻ¨ā§āϝ⧇ āύāϝāĻŧ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŦāĻŋāϤāϰāĻŖ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇, āϝ⧇āĻŽāύ mnesia. āĻāĻ•āχ āĻ•āϞāĻŦā§āϝāĻžāĻ• āĻĨ⧇āϕ⧇ āϤāĻžāĻĻ⧇āϰ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻĒāĻ•ā§āώ⧇ āϏāĻšāϜ on_state_change/2. āĻāĻ–āĻžāύ⧇, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āϤāĻžāϰ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāĻŖ āϰāϝāĻŧ⧇āϛ⧇ mnesia āĻĢā§āϞāĻžāχ āχāύ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻŽāĻ .

āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻĒā§āϰāϧāĻžāύ āϏ⧁āĻŦāĻŋāϧāĻž āĻŽāĻ  āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϟāĻĒā§‹āϞāϜāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āĻĒāϰ⧇ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻĒ⧁āύāĻ°ā§āύāĻŋāĻ°ā§āĻŽāĻžāϪ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ¸ā§āϤ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϞāĻžāĻĒ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰ⧇ āĻĢāĻŖāĻž āĻ…āϧ⧀āύ⧇. āφāĻŽāϰāĻž āφāχāĻĒāĻŋ āĻ āĻŋāĻ•āĻžāύāĻž āĻāĻŦāĻ‚ āϏ⧇āχāϜāĻ¨ā§āϝ āύ⧋āĻĄā§‡āϰ āύāĻžāĻŽāϗ⧁āϞāĻŋ āφāϗ⧇ āĻĨ⧇āϕ⧇āχ āϜāĻžāύāĻŋ āĻ•āĻŋāύāĻž āĻŦāĻž āϏ⧇āϗ⧁āϞāĻŋ āĻ—āϤāĻŋāĻļā§€āϞāĻ­āĻžāĻŦ⧇ āĻŦāϰāĻžāĻĻā§āĻĻ/āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āύāĻŋāĻ°ā§āĻŦāĻŋāĻļ⧇āώ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āϕ⧇āĻŦāϞ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āĻŦāĻŋāϤāϰāĻŖ āĻ•āϰāĻž āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ āϚāϞ⧇, āϏāĻŽāĻ¸ā§āϤ āύ⧋āĻĄ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϰ āϜāĻ¨ā§āϝ āĻāϕ⧇āĻŦāĻžāϰ⧇āχ āϕ⧋āύ⧋ āĻŦāĻŋāĻļ⧇āώ āĻĄāĻ•āĻžāϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āϏ⧇āϟāĻŋāĻ‚āϏ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰ⧇āϰ āĻĻ⧃āĻˇā§āϟāĻŋāϕ⧋āĻŖ āĻĨ⧇āϕ⧇, āĻŦāĻŋāϤāϰāĻŖ āĻ•āϰāĻž āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ āϚāĻžāϞāĻžāύ⧋ āĻŦāĻž āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ āϚāĻžāϞāĻžāύ⧋āϰ āĻŽāĻ§ā§āϝ⧇ āϕ⧋āύ⧋ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āύ⧇āχāĨ¤ :nonode@nohost. āφāĻĒāύāĻŋ āĻāχ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāϰāĻ“ āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ.

āϝāĻĻāĻŋāĻ“ āϟāĻĒā§‹āϞāϜāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϜāϟāĻŋāϞ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻŋāĻ‚ āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϏāĻŽā§āĻ­āĻŦ MyApp.Listener, āϏāĻ°ā§āĻŦāĻĻāĻž āĻĒā§āϰāĻžāĻ¨ā§āϤ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻāχ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒāĻ•ā§āώāĻĒāĻžāϤāϗ⧁āϞāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒā§āϰāĻŽāĻžāĻŖāĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻāϟāĻž āĻ āĻŋāĻ• āφāϛ⧇, āĻļ⧁āϧ⧁ āωāĻĒāϰ⧋āĻ•ā§āϤ āύāĻŋāύ libcluster, āϝāĻž āφāϰāĻ“ āϏāĻžāϧāĻžāϰāĻŖ-āωāĻĻā§āĻĻ⧇āĻļā§āϝ, āĻŦāĻž āĻāĻŽāύāĻ•āĻŋ āύāĻŋāĻŽā§āύ-āĻ¸ā§āϤāϰ⧇āϰ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āύāĻŋāĻœā§‡ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰ⧁āύāĨ¤ āĻāχ āϕ⧋āĻĄ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āϞāĻ•ā§āĻˇā§āϝ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āĻĻ⧃āĻļā§āϝāϕ⧇ āĻ•āĻ­āĻžāϰ āĻ•āϰāĻž āύāϝāĻŧ, āϤāĻŦ⧇ āĻ…āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻŦā§āϝāĻĨāĻž āĻāĻŦāĻ‚ āĻ•āĻˇā§āϟāĻ•āϰ āĻ•āĻĒāĻŋ-āĻĒ⧇āĻ¸ā§āϟ āĻ›āĻžāĻĄāĻŧāĻžāχ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϏāĻžāϧāĻžāϰāĻŖ āĻĻ⧃āĻļā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāĨ¤

āĻĻā§āϰāĻˇā§āϟāĻŦā§āϝ: āĻāχ āĻŽā§āĻšā§āĻ°ā§āϤ⧇ āĻŽā§‚āϞ āĻļāĻŦā§āĻĻāϟāĻŋ āĻ›āĻŋāϞ "āĻšā§āϝāĻžāĻĒāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰāĻŋāĻ‚!", āĻāĻŦāĻ‚ āχāϝāĻŧāĻžāύāĻĄā§‡āĻ•ā§āϏ, āϝāĻžāϰ āϏāĻžāĻĨ⧇ āφāĻŽāĻŋ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āϰāĻŋ (āφāĻŽāĻžāϕ⧇ āύāĻŋāĻœā§‡āϕ⧇ āĻ…āĻ­āĻŋāϧāĻžāύ⧇ āϝ⧇āϤ⧇ āĻšāĻŦ⧇ āύāĻž), āφāĻŽāĻžāϕ⧇ "āĻšā§āϝāĻžāĻĒāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰāĻŋāĻ‚!" āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϟāĻŋ āĻ…āĻĢāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋāϞāĨ¤ āĻŦāĻŋāĻļ⧇āώ āĻ•āϰ⧇ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻ­ā§‚-āϰāĻžāϜāύ⧈āϤāĻŋāĻ• āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāϰ āφāϞ⧋āϕ⧇ āĻāϰ āĻĨ⧇āϕ⧇ āĻ­āĻžāϞ⧋ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āĻ˛ā§āĻĒāύāĻž āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦāϤ āĻ…āϏāĻŽā§āĻ­āĻŦāĨ¤

āωāĻ¤ā§āϏ: www.habr.com