【云原生 | 42】Docker快速部署高可靠性编程语言Erlang

这篇具有很好参考价值的文章主要介绍了【云原生 | 42】Docker快速部署高可靠性编程语言Erlang。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍁博主简介
        🏅云计算领域优质创作者
        🏅新星计划第三季python赛道第一名
        🏅阿里云ACE认证高级工程师
        🏅阿里云开发者社区专家博主

💊交流社区:CSDN云计算交流社区欢迎您的加入!

目录

1. Erlang简介

2. Erlang的特点 

3. Erlang应用场合 

4. 开发工具

5. 流量单位 

6. 主要功能模块

7.  在Docker中部署Erlang

 👑👑👑结束语👑👑👑


1. Erlang简介

Erlang是一种用来构建大规模弹性、实时、高并发、高可用系统的编程语言,被广泛应用于电信、银行、电子商务和即时消息领域。Erlang的运行时系统内置支持并发、分布式和容错机制。Erlang由爱立信所辖的CS-Lab于1987年开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。

docker erlang,阶段六:零基础入门云原生(Docker+k8s),云原生,docker,容器

2. Erlang的特点 

● 并发性 - Erlang支持超大量级的并发进程,并且不需要操作系统具有并发机制。

● 分布式 - 一个分布式Erlang系统是多个Erlang节点组成的网络(通常每个处理器被作为一个节点)

● 健壮性 - Erlang具有多种基本的错误检测能力,它们能够用于构建容错系统。

● 软实时性- Erlang支持可编程的"软"实时系统,使用了递增式垃圾收集技术。

● 热代码升级-Erlang允许程序代码在运行系统中被修改。旧代码能被逐步淘汰而后被新代码替换。在此过渡期间,新旧代码是共存的。

●递增式代码装载-用户能够控制代码如何被装载的细节。

●外部接口-Erlang进程与外部世界之间的通讯使用和在Erlang进程之间相同的消息传送机制。

●Fail-fast(中文译为速错),即尽可能快的暴露程序中的错误。

●面向并发的编程(COP concurrency-oriented programming)

●函数式编程

●动态类型

●及早求值或严格求值

●支持脚本运

3. Erlang应用场合 

未来的计算是并发计算。现今甚至桌面CPU也是多核的,当用户给服务器购买了越来越多的CPU时,他们更期望能最大限度地利用他们的新投资,但是今天的许多软件系统并不能很好地做到这一点。

整个软件行业也在发生重大变革,由卖工具软件转向卖服务(软件免费,这也是开源软件兴起的过程),由单纯客户端向B/S或C/S转化,相应的存储和计 算向服务器端转移,由原来的PC客户端向客户端多元化(如手机、PDA、电视机顶盒等)转化。这些变革趋势,使得用户可以更方便地访问到服务的同时,服务 器也要承受越来越高的负荷,并行/分布的需求逐渐增加。

Erlang语言不是用来解决所有问题的语言,至少现在还不是。Erlang最初专门为通信应用设计的,比如控制交换机或者变换协议等,非常适合于构 建分布式,实时软并行计算系统。它是一门专注的语言,可以适应现代服务器要求高负荷、高可靠、持续服务的需求。它要解决的问题域包括:高并发、分布式、持 续服务、热升级和高可靠等问题。

4. 开发工具

Sublimetext 

linux下有全套的IDE环境插件可用完善的如SublimErl,windows下只能自己简单的集成一部分基础功能。

优势比于eclispse的erlide是大项目时操作响应速度快、体验流畅错误少。

Emacs 

可以使用任何你喜欢的编辑器编写Erlang程序,但如果你使用Emacs编辑可以支持很多功能,比如:代码缩进、语法高亮、验证模块名称、支持段落的注释、模块骨架、标签和更多的支持。

Erlide 

这是一个基于Eclipse的Erlang图形界面插件(ErlIDE),ErlIDE正在积极开发新特性,同时它也是开源的。

5. 流量单位 

指测量电话呼叫流量的单位。一个厄朗等于一个小时的中继负荷,或3600秒中继负荷。如果将CCS(百秒呼叫)转换成厄朗值,则需先乘以100,然后再除以3600(或直接除以36)。因此,呼叫中心可使用厄朗值来反映中继线路负荷,即一个小时满负荷的平均中继线路有多少数量。例如,在一个小时中,呼叫中心呼叫流量为12.35厄朗时,就意味着在该时段中,平均有12条线多一些都处于全负荷状态。据此可以大致推算出需要多少座席人员。

指一种数学计算方法,这种方法是基于已知的信息,如平均通话时长,来预测无规则的工作负荷,如电话呼叫量。它是呼叫中心人员和中继线路数量的决策参考方法。

厄朗公式有两类,厄朗B用于呼叫量随机状态,同时没有排队的情况;厄朗C用于呼叫量随机状态,同时有排队的情况,它假设所有来电者将无限期地进入队列等待被接通。因此,呼叫量不可能比可用的中继线路数量还大,如果那样的话,将造成排队无限期地延迟。

6. 主要功能模块

顺序编程

        Erlang Shell

        Erlang 模块与函数

        Erlang 原子类型

        Erlang 列表

        Erlang 映射 (Map)

        Erlang 标准模块与使用手册

        Erlang 输出至终端

        Erlang 完整示例

        Erlang 匹配、Guards 与变量的作用域

        Erlang 列表

        Erlang if 与 case

        Erlang 内置函数 (BIF)

        Erlang 高阶函数 (Fun)

并发编程

        Erlang 进程

        Erlang 消息传递

        Erlang 注册进程名称

        Erlang 分布式编程

        Erlang 完整示例

        Erlang 健壮性

        Erlang 超时处理

        Erlang 错误处理

        Erlang 完善后实例

记录与宏

        Erlang 程序分布

        Erlang 头文件

        Erlang 记录

        Erlang 宏

7.  在Docker中部署Erlang

1.使用官方镜像 

可以使用erlang镜像,直接进入Erlang交互命令行Eshell:

$ docker run -it --rm erlang:latest
Erlang/OTP 18 [erts-7.3.1] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V7.3.1 (abort with ^G)
1> uptime().
3 minutes and 3 seconds
ok
2>

可以使用ctl+G进入任务切换模式,其中j为列出所有任务:

User switch command
    --> j
        1* {shell,start,[init]}
    --> q
$ docker run -it --rm -h erlang.local erlang erl -name allen
Erlang/OTP 18 [erts-7.3.1] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V7.3.1 (abort with ^G)
(allen)1> erlang:system_info(otp_release).
"18"
(allen)2>
User switch command
    --> q

2.直接运行Erlang脚本 

可以直接使用docker run指令,通过escript运行Erlang脚本。下面以斐波那契数列作为例子进行讲解。

首先,新建fab.erl文件:

#!/usr/bin/env escript
%% -*- erlang -*-
main([String]) ->
    try
        N = list_to_integer(String),
        F = fac(N),
        io:format("factorial ~w = ~w\n", [N,F])
    catch
        _:_ ->
            usage()
    end;
main(_) ->
    usage().
usage() ->
    io:format("usage: factorial integer\n"),
    halt(1).
fac(0) -> 1;
fac(N) -> N * fac(N-1) .

保存后,使用docker run指令运行:

$ docker run -it --rm --name erlang-inst1 -v "$PWD":/usr/src/myapp -w /usr/src/ myapp erlang escript fab.erl 5
factorial 5 = 120

可见已输出factorial 5=120计算结果。

 👑👑👑结束语👑👑👑

docker erlang,阶段六:零基础入门云原生(Docker+k8s),云原生,docker,容器文章来源地址https://www.toymoban.com/news/detail-795029.html

到了这里,关于【云原生 | 42】Docker快速部署高可靠性编程语言Erlang的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【可靠性测试】什么是可靠性测试:定义、方法和工具

    可靠性定义为在特定环境中指定时间段内无故障软件运行的概率。 执行可靠性测试是为了确保软件是可靠的,它满足其目的,在给定的环境中指定的时间量,并能够呈现无故障运行。 在这个机械化的世界里,现在人们盲目地相信任何软件。无论软件系统显示出什么结果,人

    2024年02月05日
    浏览(39)
  • TCP如何保证可靠性,TCP如何实现可靠性传输的

    tcp 如何保证可靠性 大家都知道TCP是可靠性传输协议,既然是可靠的,就需要解决比如包丢失了、数据被破坏了、包重复了、乱序了等等这样的问题。下面将从几个方面介绍TCP的可靠性。 1. 校验和 TCP每一段报文都有校验和,这保证了报文不被破坏或篡改,如果收到的报文在校

    2024年02月10日
    浏览(48)
  • 嵌入式硬件电路可靠性的关键问题的分析(可靠性介绍)

    :失效率 温度 可靠性 降额 器件工艺 质量与可靠性的区别 质量:时间点上去衡量                                              可靠性:一段时间上才能衡量,需要有量才能去衡量(大部分是产品量产之后才会出现问题) 质量:在时间点上衡量

    2024年03月24日
    浏览(46)
  • 【区块链技术开发】OpenZeppelin智能合约库:提高智能合约的安全性和可靠性,加速去中心化应用DApp的开发与部署。

    专栏:【区块链技术开发】 前期文章: 【区块链技术开发】使用Infura连接以太坊节点和OpenZeppelin库来构建安全、可靠的智能合约 【区块链技术开发】 Solidity使用Truffle Box工具实现预构建模板、自动化部署、创建智能合约示例代码 【区块链技术开发】 Solidity使用truffle工具创建

    2023年04月24日
    浏览(56)
  • 配电网可靠性评估(4)—(顶刊复现)基于线性规划的配电网可靠性评估

            之前的博客中介绍了配电网可靠性评估的三种方法、分别是解析法中的最小路法,以及序贯蒙特卡罗模拟法及非序贯蒙特卡洛模拟法,顺带提到了含有分布式电源的配电网可靠性评估方法。 配电网可靠性评估(一)最小路法和非序贯蒙特卡洛模拟法 配电网可靠性评

    2024年02月08日
    浏览(48)
  • 可靠性测试

    我们认为软件可靠性始终是重要的,但它对于任务关键型、安全关键型和高使用率系统是必不可少的。如您所料,可靠性测试可用于降低可靠性问题的风险。可靠性故障背后的常见问题包括内存泄漏、磁盘碎片和耗尽、间歇性基础设施问题以及超时值低于可行值。 可靠性定义

    2024年02月16日
    浏览(46)
  • RabbitMQ --- 消息可靠性

    消息队列在使用过程中,面临着很多实际问题需要思考:      消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生产者发送的消息未送达exchange 消息到达exchange后未到达queue MQ宕机,queue将消息丢失 co

    2024年02月14日
    浏览(46)
  • RabbitMQ消息的可靠性

    面试题: Rabbitmq怎么保证消息的可靠性? 1.消费端消息可靠性保证: 消息确认(Acknowledgements) : 消费者在接收到消息后,默认情况下RabbitMQ会自动确认消息(autoAck=true)。为保证消息可靠性,可以设置autoAck=false,使得消费者在处理完消息后手动发送确认(basicAck)。如果消费

    2024年04月14日
    浏览(70)
  • SpringAMQP开启“可靠性”机制

    上一篇介绍了如何在 《SpringBoot 中集成和使用消息队列》,看过这一篇就基本上可以在SpringBoot中使用消息队列了,但是消息队列他归根结底是一个客户端服务器模式的中间件,面对复杂的网络环境和分布式使用环境,难免会出现各种问题。出现问题不可怕,重点在于如何预防

    2024年02月21日
    浏览(46)
  • RabbitMQ-保证消息可靠性

    消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生产者发送的消息未送达exchange 消息到达exchange后未到达queue MQ宕机,queue将消息丢失 consumer接收到消息后未消费就宕机 针对这些问题,RabbitMQ分别给出了

    2024年02月07日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包