際際滷

際際滷Share a Scribd company logo
舒仗亠亟亠仍亠仆仆亶 Erlang
豫舒 仍仂弍舒 亟仍 Minsk F# User Group
丼仂 舒从仂亠 舒仗亠亟亠仍亠仆仆舒 亳亠仄舒?
亠仍亳 仄仗仂
A distributed system is one
in which the failure of a computer
You didnt even know existed
can render your own computer unusable.
丼仂 舒从仂亠 舒仗亠亟亠仍亠仆仆舒 亳亠仄舒?
丱舒仆亳仍亳舒 亟舒仆仆:
Google BigTable, Amazon SimpleDB,
Hadoop, Cassandra
仄仆仂亢亠于仂 亳, 于 .. 亳 仆舒仗亳舒仆亠 仆舒 Erlang:
Riak, CouchDB
丼仂 舒从仂亠 舒仗亠亟亠仍亠仆仆舒 亳亠仄舒?
弌亠于亳
Google Search, 仂亳从 亊仆亟亠从舒, WhatsApp
仄仆仂亢亠于仂 亳, 于 .. 亳 仆舒仗亳舒仆亠 舒亳仆仂 仆舒
Erlang:
Hadoop, Github
丼仂 舒从仂亠 舒仗亠亟亠仍亠仆仆舒 亳亠仄舒?
弌仂亳舒仍仆亠 亠亳:
Facebook, Twitter, 从仂仆舒从亠
丼仂 舒从仂亠 舒仗亠亟亠仍亠仆仆舒 亳亠仄舒?
仆仂亞仂仗仂仍亰仂于舒亠仍从亳亠 亳亞:
World of Warcraft
World of Tanks
Call of Duty Black Ops
舒亠仄 亳 亟亠仍舒ム?
丱舒仆亳 亟舒仆仆 弍仂仍亠,
亠仄 仄仂亢亠 仗仂仄亠亳 仆舒 仂亟仆仂亶 仄舒亳仆亠
弍舒弍舒于舒 亟舒仆仆 弍仂仍亠,
亠仄 仄仂亢仆仂 仂弍舒弍仂舒 仆舒 仂亟仆仂亶 仄舒亳仆亠
仂于亳 仆舒亟亠亢仆仂 亳亠仄
仂仂亳 仄舒舒弍亳亠仄 亳亠仄,
仗仂仂弍仆 舒亟舒仗亳仂于舒 从 仂 仆舒亞亰从亳
弌亠于亳, 舒仗亠亟亠仍亠仆仆亠 仗仂 于仂亠亶 亳
(CDN -- content delivery network)
舒从仂于舒 仆舒亟亠亢仆仂 Erlang?
舒仗亠亟亠仍亠仆仆仂 于 Erlang
亰仆舒舒仍仆仂 亠舒仍亳亰仂于舒仆舒 舒亟亳 仆舒亟亠亢仆仂亳
舒从仂于舒 仆舒亟亠亢仆仂 Erlang?
90%
99%
99,9%
99,99%
99,999%
99,9999%
99,99999%
99,999999%
99,9999999%
< 仄亠
< 4 亟仆
< 9 舒仂于
< 1 舒
~ 5 仄亳仆
~ 31 亠从仆亟舒
~ 3 亠从亟仆
~ 300 仄亳仍亳亠从仆亟
~ 30 仄亳仍亳亠从仆亟
舒从仂于舒 仆舒亟亠亢仆仂 Erlang?
99s
http://ninenines.eu/
Cowboy, Ranch, Bullet, Sheriff
丐亠仄亳仆仂仍仂亞亳
亳仍仂亢亠仆亳亠 (Application)
丕亰亠仍 (Node)
仍舒亠 (Cluster)
丼仂 舒从仂亞仂 仂仂弍亠仆仆仂亞仂 于 Erlang?
亟亳仆亶 仗仂亟仂亟 亳 从 仍仂从舒仍仆仂仄
亳 从 舒仗亠亟亠仍亠仆仆仂仄 仗仂亞舒仄仄亳仂于舒仆亳
丼仂 舒从仂亞仂 仂仂弍亠仆仆仂亞仂 于 Erlang?
仂亠:
亳仄亠亠 仗弍仍亳仆亶 
(亠舒亞亳亠 仆舒 仂仗亠亟亠仍亠仆仆亠 仂仂弍亠仆亳)
舒仆亳 于仆亳 亠弍 仂仂礌亳亠 (仆亠从亳亠 亟舒仆仆亠)
仂弍舒亠  亟亞亳仄亳 仗仂亠舒仄亳,
仗仂仍亰 亳 仗弍仍亳仆仄 
亳仄亠亠 亰舒从 弍亳亰仆亠-仍仂亞亳从
丼仂 舒从仂亞仂 仂仂弍亠仆仆仂亞仂 于 Erlang?
仂亠:
仂 亢亠 舒仄仂亠, 仂 仂弍亠从 于  :)
丼仂 舒从仂亞仂 仂仂弍亠仆仆仂亞仂 于 Erlang?
亳仍仂亢亠仆亳亠:
亳仄亠亠 仗弍仍亳仆亶 
舒仆亳 于仆亳 亠弍 亟舒仆仆亠
仂弍舒亠  亟亞亳仄亳 仗亳仍仂亢亠仆亳礆亳,
仗仂仍亰 亳 仗弍仍亳仆仄 
亳仄亠亠 亰舒从 弍亳亰仆亠-仍仂亞亳从
丼仂 舒从仂亞仂 仂仂弍亠仆仆仂亞仂 于 Erlang?
丕亰亠仍:
亳仄亠亠 仗弍仍亳仆亶 
舒仆亳 于仆亳 亠弍 亟舒仆仆亠
仂弍舒亠  从仍亳亠仆舒仄亳
亳 亟亞亳仄亳 亰仍舒仄亳
亳仄亠亠 亰舒从 弍亳亰仆亠-仍仂亞亳从
丼仂 舒从仂亞仂 仂仂弍亠仆仆仂亞仂 于 Erlang?
仍舒亠:
亳仄亠亠 仗弍仍亳仆亶 
舒仆亳 于仆亳 亠弍 亟舒仆仆亠
仂弍舒亠  从仍亳亠仆舒仄亳
亳仄亠亠 亰舒从 弍亳亰仆亠-仍仂亞亳从
丼仂 舒从仂亞仂 仂仂弍亠仆仆仂亞仂 于 Erlang?
弌亠亠于舒 仗仂亰舒仆仂
丼仂 舒从仂亞仂 仂仂弍亠仆仆仂亞仂 于 Erlang?
弌亠亠于舒 仗仂亰舒仆仂
亟仍 仂仂弍亠仆亳亶
丼仂 舒从仂亞仂 仂仂弍亠仆仆仂亞仂 于 Erlang?
弌亠亠于舒 仗仂亰舒仆仂
亟仍 仄仂仆亳仂亳仆亞舒
丼仂 舒从仂亞仂 仂仂弍亠仆仆仂亞仂 于 Erlang?
仂仆亳仂亳仆亞
仄亠亢亟 仗仂亠舒仄亳
于 仗亳仍仂亢亠仆亳亳
于 亰仍亠
于 从仍舒亠亠
丼仂 舒从仂亞仂 仂仂弍亠仆仆仂亞仂 于 Erlang?
仂仆亳仂亳仆亞
Takeover
Failover
丼仂 舒从仂亞仂 仍仂亢仆仂亞仂
于 舒仗亠亟亠仍亠仆仆 亳亠仄舒?
仗亳仄亳亳仆亠 舒亰舒弍仂亳从亳
亟亠仍ム 仆亠磦仆亠 仗亠亟仗仂仍仂亢亠仆亳,
舒 仗仂仂仄 ...
丼仂 舒从仂亞仂 仍仂亢仆仂亞仂
于 舒仗亠亟亠仍亠仆仆 亳亠仄舒?
弌亠 仆舒亟亠亢仆舒, 仂亠亟亳仆亠仆亳亠 仄亠亢亟 亰仍舒仄亳
仆亳从仂亞亟舒 仆亠 仂弍于舒亠
丼仂 舒从仂亞仂 仍仂亢仆仂亞仂
于 舒仗亠亟亠仍亠仆仆 亳亠仄舒?
舒仆仆亠 仗仂 亠亳 仗亠亠亟舒ム 仄亞仆仂于亠仆仆仂
丼仂 舒从仂亞仂 仍仂亢仆仂亞仂
于 舒仗亠亟亠仍亠仆仆 亳亠仄舒?
仂仗从仆舒 仗仂仂弍仆仂 亠亳 仆亠 仂亞舒仆亳亠仆舒
丼仂 舒从仂亞仂 仍仂亢仆仂亞仂
于 舒仗亠亟亠仍亠仆仆 亳亠仄舒?
弌亠 弍亠亰仂仗舒仆舒
丼仂 舒从仂亞仂 仍仂亢仆仂亞仂
于 舒仗亠亟亠仍亠仆仆 亳亠仄舒?
丐仂仗仂仍仂亞亳 亠亳 仆亠 仄亠仆磳
丼仂 舒从仂亞仂 仍仂亢仆仂亞仂
于 舒仗亠亟亠仍亠仆仆 亳亠仄舒?
 仂仍从仂 仂亟亳仆 舒亟仄亳仆亳舒仂,
从仂仂亶 于亠 亰仆舒亠 仂 亠亳
丼仂 舒从仂亞仂 仍仂亢仆仂亞仂
于 舒仗亠亟亠仍亠仆仆 亳亠仄舒?
弌仂亳仄仂 仗亠亠亟舒亳 亟舒仆仆 仆仍亠于舒
丼仂 舒从仂亞仂 仍仂亢仆仂亞仂
于 舒仗亠亟亠仍亠仆仆 亳亠仄舒?
弌亠 仂亟仆仂仂亟仆舒
Erlang 从仍舒亠
trusted environment
Erlang 从仍舒亠
trusted environment
于 仍仂从舒仍仆仂亶 亠亳
亰舒亳亠仆仆仂亶 仂 于仆亠仆亠亞仂 仄亳舒
Erlang 从仍舒亠
仆舒亠 仆亢仆仂 仂亳 亰舒亳亠仆仆亶 于仆亠仆亳亶 
(HTTP REST 仆舒仗亳仄亠)
Erlang 从仍舒亠
erl -name node@host
Erlang 从仍舒亠
erl -name my_node@127.0.0.1
Erlang 从仍舒亠
弌仂亠亟亳仆亠仆亳 亰仍仂于 从舒亢亟亶  从舒亢亟仄
Erlang 从仍舒亠
弌仂亠亟亳仆亠仆亳 亰仍仂于 从舒亢亟亶  从舒亢亟仄
4 亰仍舒  6 仂亠亟亳仆亠仆亳亶
10 亰仍仂于  45 仂亠亟亳仆亠仆亳亶
亳 亟舒仍亠 于 舒亳仄亠亳亠从仂亶 仗仂亞亠亳亳
Erlang 从仍舒亠
弌仍亢亠弍仆亶 舒亳从
Heart Beat
Erlang 从仍舒亠
弌从亠 亰仍
erl -name node@host -hidden
Erlang 从仍舒亠
从亳
~/.erlang.cookie
erl -setcookie abc
erlang:set_cookie(Node, Cookie)
Erlang 从仍舒亠
epmd
Erlang Port Mapper Daemon
Erlang 从仍舒亠
empd
仂亟亳仆 仆舒 仄舒亳仆
舒仆亳 亳仄-仗仂 亟仍 从舒亢亟仂亞仂 亰仍舒
Erlang 从仍舒亠
Empd
Name listing
Port queries
仂亟仍亳 亳 仆从亳亳
global
亠亞亳舒亳 仗仂亠仂于 于 亞仍仂弍舒仍仆仂亶 仂弍仍舒亳
于亳亟亳仄仂亳
仍仂弍舒仍仆亠 仍仂从亳 仆舒 亠
仂亟亟亠亢从舒 亠亳
仂亟仍亳 亳 仆从亳亳
global:register_name(Name, Pid)
global:re_register_name(Name, Pid)
global:whereis_name(Name)
仂亟仍亳 亳 仆从亳亳
Naming Conflict
global:register_name(Name, Pid, Resolve)
仂亟仍亳 亳 仆从亳亳
Naming Conflict
fun global:random_exit_name/3
fun global:random_notify_name/3
fun global:notify_all_name/3
仂亟仍亳 亳 仆从亳亳
net_adm
Various Erlang Net Administration Routines
仂亟仍亳 亳 仆从亳亳
net_adm:ping(Node)
仂亟仍亳 亳 仆从亳亳
Erlang
BIF (Build in functions)
仂亟仍亳 亳 仆从亳亳
node()
nodes()
monitor_node(Node, Flag)
disconnect_node(Node)
get_cookie()
set_cookie(Node, Cookie)
仂亟仍亳 亳 仆从亳亳
spawn(Fun)
spawn(Node, Fun)
spawn(Module, Function, Args)
spawn(Node, Module, Function, Args)
spawn_link/1,2,3,4
仂亟仍亳 亳 仆从亳亳
net_kernel
Erlang Networking Kernel
仂亟仍亳 亳 仆从亳亳
net_kernel:connect_node(Node)
net_kernel:start([Name, shortnames])
net_kernel:start([Name, longnames,
HeartBeat])
net_kernel:set_net_ticktime(5)
仂亟仍亳 亳 仆从亳亳
rpc
Remote Procedure Call Services
仂亟仍亳 亳 仆从亳亳
rpc:call(Node, Module, Function, Args)
rpc:call(Node, Module, Function, Args,
Timeout)
仂亟仍亳 亳 仆从亳亳
Res = rpc:asyn_call(node, module, function,
arguments)
rpc:yield(Res)
rpc:nb_yield(Res, Timeout)
仂亟仍亳 亳 仆从亳亳
rpc:multicall(Module, Function, Args)
rpc:multicall(Nodes, Module, Function, Args)
rpc:multicall(Module, Function, Args,
Timeout)
rpc:multicall(Nodes, Module, Function, Args,
Timeout)
仂亟仍亳 亳 仆从亳亳
rpc:cast(Node, Module, Function, Args)
rpc:abcast(Nodes, Name, Msg)
rpc:sbcast(Nodes, Name, Msg)
舒仗亠亟亠仍亠仆仆仂亠 OTP-仗亳仍仂亢亠仆亳亠
弌仂仂礌亳 仂弍仆仂亞仂 OTP-仗亳仍仂亢亠仆亳:
loaded
started
stopped
舒仗亠亟亠仍亠仆仆仂亠 OTP-仗亳仍仂亢亠仆亳亠
弌仂仂礌亳 舒仗亠亟亠仍亠仆仆仂亞仂 OTP-仗亳仍仂亢亠仆亳:
loaded
started/running
stopped
舒仗亠亟亠仍亠仆仆仂亠 OTP-仗亳仍仂亢亠仆亳亠
Failover
Takeover
Net Split
舒仗亠亟亠仍亠仆仆仂亠 OTP-仗亳仍仂亢亠仆亳亠
LYSE
Distributed OTP Applications
舒从亳从舒
舒仗亠亟亠仍亠仆仆亶 舒 仆舒 于亠弍-仂从亠舒
于 从仍舒亠亠 亳亰 4 亰仍仂于.
仂仗仂?

More Related Content

Distributed erlang