20140319 erlang分布式编程
为何需要分布式编程:
1:效率
我们把程序分成多个部分,并行地运行在不同机器上,这可以让程序 执行的更快。
2:可靠性
通过把一个系统分布运行到所若干机器上,我们可以构建容错系统
。如果某台计算机崩溃,那么这个系统会由其他计算机接管继续运行。
3:可伸缩性
由于我们会不断地扩展应用程序,哪怕是最强大的计算机,它的计算资源迟早都会有耗尽的一天。在这种情况下,我们必须能通过增加机器来扩充容量。增加一个新的计算机应该是一项简单的工作,而不需要伤筋动骨地修改应用程序的架构。
4:天生需要分布式的应用程序
很多应用程序天生就需要分布式。如果我们编写一个网络游戏或者聊天系统,用户肯能遍布全球。如果在某个特定地区,用户群足够庞大,那么我们就会倾向与在靠近用户的地方·配置更多的计算资源。
5:乐趣
创建一个文件来本地测试
1:在本地机器测试
kvs.erl
register(注册名, spawn(module, function,Args)) 创建一个进程,注册的进程,然后就可以通过向进程名字发送消息了。举例子: 注册名 ! message。
模块功能:用户可以存储信息,也可以查找
-module(kvs).
-export([start/o,store/1,lookup/1]).
start() ->
register(kvs,spawn(fun()-> loop/0 end).
store(Q) ->
rpc(Q),
rpc(Msg)
kvs ! {self(),Msg}
receive
{kvs,Reply}->
Repyl
end.
lookup(key) ->
rpc(Q).
loop()->
receive
{From,{Key,Value}} ->
put(Key,{ok,Value}),
From ! {kvs,true},
loop();
{From,key} ->
From !{kvs,get(Key)},
loop();
end.
分布式:
erl -sname ganlf
kvs:start()。
erl -sname hao
rpc:call(ganlf@debian,kvs,store,[msg]).
为何需要分布式编程:
1:效率
我们把程序分成多个部分,并行地运行在不同机器上,这可以让程序 执行的更快。
2:可靠性
通过把一个系统分布运行到所若干机器上,我们可以构建容错系统
。如果某台计算机崩溃,那么这个系统会由其他计算机接管继续运行。
3:可伸缩性
由于我们会不断地扩展应用程序,哪怕是最强大的计算机,它的计算资源迟早都会有耗尽的一天。在这种情况下,我们必须能通过增加机器来扩充容量。增加一个新的计算机应该是一项简单的工作,而不需要伤筋动骨地修改应用程序的架构。
4:天生需要分布式的应用程序
很多应用程序天生就需要分布式。如果我们编写一个网络游戏或者聊天系统,用户肯能遍布全球。如果在某个特定地区,用户群足够庞大,那么我们就会倾向与在靠近用户的地方·配置更多的计算资源。
5:乐趣
创建一个文件来本地测试
1:在本地机器测试
kvs.erl
register(注册名, spawn(module, function,Args)) 创建一个进程,注册的进程,然后就可以通过向进程名字发送消息了。举例子: 注册名 ! message。
模块功能:用户可以存储信息,也可以查找
-module(kvs).
-export([start/o,store/1,lookup/1]).
start() ->
register(kvs,spawn(fun()-> loop/0 end).
store(Q) ->
rpc(Q),
rpc(Msg)
kvs ! {self(),Msg}
receive
{kvs,Reply}->
Repyl
end.
lookup(key) ->
rpc(Q).
loop()->
receive
{From,{Key,Value}} ->
put(Key,{ok,Value}),
From ! {kvs,true},
loop();
{From,key} ->
From !{kvs,get(Key)},
loop();
end.
分布式:
erl -sname ganlf
kvs:start()。
erl -sname hao
rpc:call(ganlf@debian,kvs,store,[msg]).