1,什么是分布式程序?
Erlang分布式程序是设计用来在网络计算机上运行并且只可以通过消息传递来协调活动
2,为啥要写分布式程序?
1) 性能
通过将程序的不同部分分布到不同计算机来并行运行,以此提升性能(适用于密集型、CPU是瓶颈的计算)
2) 可靠性
通过将程序分布来构建容错系统,以此提升可靠性。如果一台机器失败了,我们可以在另一台机器上继续计算
3) 伸缩性
如果我们scale up,迟早有一天机器性能会成为瓶颈。增加新机器应该是一个很简单的操作并且不需要应用程序架构做太大改动
4) 本质上分布的程序
多用户游戏或聊天系统等程序的在本质上就是分布的,如果我们有大量在地理位置上不同的用户,我们希望将计算资源放在离用户近的地方
5) 乐趣
大部分有意思的程序都是分布式的,这些程序大多数需要和全世界的人和机器交互
3,Erlang里两种分布模型
1) 分布式Erlang
程序运行在Erlang节点上,我们可以在任一节点上spawn一个进程,任何节点都可以在其他节点上做任何操作
所有的消息传递和错误处理就和在一个单一节点上运行一样
2) 基于Socket的分布
使用TCP/IP socket来分布,没有上面的分布式Erlang强大
4,erl -sname hideto表示在本地启动一个Erlang节点,名字为hideto
如果两个节点在同一机器上,或者没有DNS服务,只能用-sname参数,s表示short
不同的机器上使用-name参数来启动节点
5,rpc:call(Node, Mod, Func, [Arg1, Arg2, ..., ArgN)在Node上执行一个远程过程调用,要调用的方法是Mod:Func(Arg1, Arg2, ..., ArgN)
6,使用-setcookie参数来保证交互的两个节点有一样的cookie,以此保证安全性
7,使用-kernel inet_dist_listen_min Min \ inet_dist_listen_max Max参数来设置端口范围
8,分布式程序用到的BIF:
1) @spec spawn(Node, Fun) -> Pid
2) @spec spawn(Node, Mod, Func, ArgList) -> Pid
3) @spec spawn_link(Node, Fun) -> Pid
4) @spec spawn_link(Node, Mod, Func, ArgList) -> Pid
5) @spec disconnect_node(Node) -> bool() | ignored
6) @spec monitor_node(Node, Flag) -> true
7) @spec node() -> Node
8) @spec node(Arg) -> Node
9) @spec nodes() -> [Node]
10) @spec is_alive() -> bool()
9,分布式程序库:
1) rpc
2) global
rpc module里最常用的方法是call(Node, Mod, Function, Args) -> Result | {badrpc, Reason}
10,设置cookie的三种方式
1) $HOME/.erlang.cookie
2) erl -setcookie C
3) erlang:set_cookie(node(), C)
分享到:
相关推荐
阅读此书将有助于深化对Erlang分布式编程的理解,避免常见的错误,提升编写高质量Erlang程序的能力。同时,"打开方式.htm"可能是阅读资料的指南,而"爱书吧-全国最大图书-课件免费下载.url"则可能指向更多相关的学习...
Erlang并发编程,Erlang程序设计,Erlang中文手册。 学习erlang的好资料。 Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此...
在《Erlang并发编程》一书中,详细介绍了Erlang语言的核心并发模型和编程范式,包括但不限于串行编程、进程创建、进程间通信、分布式编程以及错误处理等。书中指出Erlang的并发性能得益于其轻量级进程,这些进程是由...
如果你既想要erlang的并发分布式编程的理念又不喜欢erlang丑陋的停留在80年代的那种语法,又想要现代的性感的漂亮的时尚的Ruby/Python式的面向对象观而不满意其并发模型,那么,可以尝试Reia. 标签:Reia
Erlang的设计哲学是创建简单、可扩展、容错的程序,其语法规则相对简单明了,非常适合并行编程和分布式计算。 #### 书籍推荐 《Erlang编程:软件为并发世界而设计》是Joe Armstrong所著的入门级Erlang书籍。作者在...
在使用Erlang进行分布式编程时,管理节点的连接状态是非常重要的。可以使用`nodes()`函数来查看当前节点已连接的所有节点。在两个节点首次成功通信后,它们会相互保持连接状态,允许继续进行消息的交换。Erlang系统...
“即便我已经使用Erlang多年,在编程的时候仍然需要参考《Erlang编程指南》。不同层次的Erlang程序员都会发现本书是有价值的学习和参考资料。”, ——Steve Vinoski,《IEEE Internet Computing》专栏作家, 《Erlang...
7. OTP(Open Telecom Platform):OTP是Erlang的标准库,提供了一系列的设计模式和库,包括进程、监督树、应用管理和错误处理等,极大地简化了并发和分布式编程。 8. 监督树(Supervision Trees):OTP中的监督树...
这里提到的陷阱主要指的是在开发分布式Erlang程序时可能会遇到的问题,这些问题往往由于开发者对Erlang分布式的某些特性的理解不足而产生。以下是一些具体的陷阱: 1. **消息传递的顺序性**:虽然Erlang提供了消息...
《Erlang编程》是一本深入探讨Erlang语言的图书,主要面向对并发处理、分布式系统和高可用性有需求的开发者。Erlang是一种为构建大规模并发系统而设计的函数式编程语言,它源自爱立信,以其在电信行业的成功应用而...
Erlang是一种高级编程语言,专为构建并发、分布式、容错的系统设计。Erlang语言的编程规则和约定对于保证代码的可读性、可维护性、性能和稳定性至关重要。本文将对Erlang编程规则的中文翻译版本中的部分内容进行详细...
Erlang是一种面向并发的、函数式编程语言,最初由爱立信开发,用于构建高可用性、容错性和可扩展性的分布式系统。在Erlang中,并发是语言的核心特性,它提供了一种高效且简洁的方式来处理大量并发任务。 并发编程在...
Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,旨在帮助初学者理解和掌握Erlang的核心...
本书是讲述下一代编程语言Erlang 的权威著作,主要涵盖顺序型编程、异常处理、编译和运行代码、并发编程、并发编程中的错误处理、分布式编程、多核编程等内容。本书将帮助读者在消息传递的基础上构建分布式的并发...
Erlang是一种专为构建可扩展、并发和分布式系统而设计的编程语言。它最初由爱立信公司开发,用于电信领域的软件开发。Erlang的设计理念包括轻量级进程、消息传递、容错性和分布式计算,这些特性使得Erlang非常适合...
随着学习的深入,学习者还将接触到模块化编程、高级并发概念、分布式编程、代码维护和优化等更高级的内容。 Erlang编程语言因其独特的并发模型和消息传递机制而备受关注,它被广泛用于电信、银行、电子商务等需要高...
书是讲述下一代编程语言Erlang 的权威著作,主要涵盖顺序型编程、异常处理、编译和运行代码、并发编程、并发编程中的错误处理、分布式编程、多核编程等内容。本书将帮助读者在消息传递的基础上构建分布式的并发系统...
OTP(Open Telecom Platform)是Erlang编程语言的核心组件,提供了强大的并发处理能力和分布式系统构建框架。这本书以中文版的形式,帮助中文读者更便捷地学习和掌握这一技术。 **Erlang** 是一种面向并发的、函数...