Erlang

Erlang

      Erlang的出现是为了实现一套容错,可伸缩,软实时的高可用系统。如电话系统能够在流量高峰期时,监督和确保紧急服务正常, 避免设备故障导致中断。     
 可伸缩:指系统可以适应负载和可用资源的变化,如平滑处理峰值流量而不丢失请求。    
 分布式:指系统组成集群并相互交互协作。 在单台机器上,通过多个节点实例能更好地利用多核处理器的效能。    
 容错:指在其环境存在故障的情况下仍可以可预期的方式运转。确保错误的请求或者故障不会导致进程崩溃。     
  软实时:指响应和延迟的可预测性,保字在可接受的时间内做出响应。无论同一时刻有多少请求,吞吐量都不能因为负载太重而下降。   
   高可用: 指由于各种问题导致的停机时间降至最低,     

构建系统时需认真考虑需求和拥有的资源,确保选择正确的库和设计模式。

OTP三大组成部分:
Erlang:Erlang自身, 语言和虚拟机。
工具和库:工具 库 面向其他语言的接口 编程环境 数据库 数据库驱动 标准组件及协议栈等各方面的应用。
系统设计原则:主要是一系列抽象原则,设计规则,和行为模式组成。
Erlang基础:
递归模式匹配
使用递归来迭代或者重复某种行为,通过递归和匹配的方式可以维持进程的存活
列表推导:
是一种能够生成元素并对生成的元素做测试的表达式。
[{X,Y}||X <- L1, true, Y <- L2, true].
进程与消息传递:
进程间是不共享内存的,是通过消息来通信的,消息从发送进程的栈上复制到接收进程的堆上。erlang的进程是轻量级的,创建它们只需要花费微不足道的时间和内存。不共享内存,单个进程发生错误不会影响其他进程或者任务的运行。

链接和监视器:
系统内多个进程同时运行可能相互依赖,通过链接,其中一个进程中止时将发送exit给另一方,使其也终止。
通过监视器进程可以单向式观察其他进程的终止。
记录(record):
记录提供便捷访问任意元素,元组管理的项数不宜超过五项,因为元组需要担心各处的位置匹配是否正确,记录解决了元组在各方面的不足。
映射组(map):
是一种键值集合,它的字段数量不会在编译期确定。
使用场景:记录的速度很快,所以如果字段数量固定,在编译期能确定,就用记录,在运行时需要动态增加字段就使用映射组。
宏:
由epp实现, 每当把源代码编译为beam代码前都会调用它,把宏定义的代码编译进去。
模块升级(旧版本和新版本):
能在运行中升级代码,而无需关闭系统。模块的新版本的加入,要么是在shell中编译了该模块,要么是在外面编译好了直接加载进来。 当新的beam模块加载进来时, 进程当前运行的该模块就变为旧版本了,只有当进程下一次使用全限定名调用该模块时才运行到新版本上。
行为模式:
不同进程解决不同问题,但它们都有某些相似的设计, 其中常用的模式被抽象出来,封装为一组通用化的库模块,这种被称为OTP三部分之一的行为模式。 5种行为模式(behavior)

gen_server, 通用Server:用于建立C/S行为模式
gen_fsm, 有限状态机: 用于有限状态机编程
gen_event, 通用事件处理:用于编写事件处理器
supervisor, 监督者: 用于构建具备容错能力的监督树
application, 应用: 用于整合资源与功能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值