erlang

rabbitmq安装-Erlang

萝らか妹 提交于 2021-01-13 03:04:54
安装Erlang Install Erlang from the Erlang Solutions repository or Follow the instructions under " Installation using repository " at Erlang Solutions . Note that Erlang Solutions tend to provide cutting edge Erlang versions that may or may not be supported by RabbitMQ . Version locking (see below) is recommended when Erlang installed using this option. Installation using repository 1. 安装Erlang仓库 [root@bogon yum.repos.d]# wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm -- 2018 - 02 - 09 16 : 56 : 21 -- https: // packages.erlang-solutions.com/erlang-solutions-1.0-1

[转]在Windows上安装RabbitMQ

家住魔仙堡 提交于 2021-01-10 08:00:51
原文链接 翻译:xiezc 下载服务器 描述 下载 Windows系统安装程序(来自 Bintray ) 的RabbitMQ的服务器-3.7.4.exe (签名) Windows系统安装程序(来自 GitHub ) 的RabbitMQ的服务器-3.7.4.exe (签名) 安装RabbitMQ服务 首先,您需要安装 支持的 Windows版本 Erlang 。下载并运行 Erlang for Windows 安装程序。强烈建议使用64位版本。 重要提示: 您 必须 使用管理帐户运行Erlang安装程序,否则RabbitMQ安装程序将不会写入注册表。 然后,运行RabbitMQ安装程序 rabbitmq-server-3.7.4.exe,它会将RabbitMQ安装为Windows服务并使用默认配置启动它。 运行的RabbitMQ服务 自定义的配置运行 该服务将使用其默认设置正常运行。您可能想要 自定义的RabbitMQ环境 或编辑 配置 。 运行的RabbitMQ RabbitMQ的服务自动启动。您可以从开始菜单停止/重新安装/启动RabbitMQ的服务。 管理服务 您可以在开始菜单中找到RabbitMQ快捷方式。 还有一个RabbitMQ命令行工具,该工具在开始菜单的sbin目录中。这是最便捷的 命令行工具 。 升级Erlang VM 如果您有安装包并计划将Erlang

详解:同步架构和异步架构的区别及消息队列

杀马特。学长 韩版系。学妹 提交于 2021-01-06 07:27:59
分布式消息队列是是大型分布式系统不可缺少的中间件,主要解决应用耦合、异步消息、流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。 对于一个架构师来说,在大型系统设计中,会经常需要面对同步和异步等架构问题,搞明白这些问题,能更好地实现程序并行执行,减少等待或无效操作,以及充分利用计算机的性能! 本文将详细讲解: 1.同步架构和异步架构的区别 2.异步架构的主要组成部分:消息生产者、消息消费者、分布式消息队列 3.异步架构的两种主要模型:点对点模型和发布订阅模型。 4. 消息队列的好处 5.消息队列相关产品 建议用10min通读,搞懂分布式消息队列的核心内容。 一、同步架构和异步架构的区别 1. 同步调用 是指从请求的发起一直到最终的处理完成期间,请求的调用方一直在同步阻塞等待调用的处理完成。 如图,在这个例子中客户端代码ClientCode,需要执行发送邮件sendEmail这样一个操作,它会调用EmailService进行发送,而EmailService会调用SmtpEmailAdapter这样一个类来进行处理,而这个类会调用远程的一个服务,通过SMTP和TCP协议把请求发送给它。 而远程服务器收到消息以后会对消息进行一系列的操作,然后将邮件发送出去,再进行返回。Adapter收到返回后,再返回给EmailService

CentOS 7 安装 RabbitMQ 就是这么简单

女生的网名这么多〃 提交于 2021-01-06 04:18:29
@ TOC 环境准备 基础系统:CentOS 7.6 Erlang 和 RabbitMQ 需要版本对应,参考 这里 ,本次使用如下版本 Erlang:otp_src_22.0.tar.gz (RabbitMQ 是基于 Erlang 语言开发的,所以必须先安装 Erlang) RabbitMQ:rabbitmq-server-generic-unix-3.7.15.tar.xz 1.下载并上传对应版本的软件包 1.1.Erlang 下载 erlang官网 : https://www.erlang.org/downloads otp_src_22.0.tar.gz( 1 慢就用 2 ) 下载 1 下载 2 1.2.RabbitMQ 下载 下载地址 : https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.15 rabbitmq-server-generic-unix-3.7.15.tar.xz 下载 1.3. 上传 通过 WinScp 把两个文件拖到服务器的目录 /usr/local/ 2.安装依赖 yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel 3

那些年,面试官问你的消息队列

∥☆過路亽.° 提交于 2021-01-05 08:23:25
MQ理论介绍 一、为什么需要消息队列(MQ) 主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。大量的请求到达访问数据库,导致行锁表锁,最后请求线程会堆积过多,从而触发 too many connection错误,引发雪崩效应。我们使用消息队列,通过异步处理请求,从而缓解系统的压力。核心:异步处理、流量削峰、应用解耦 二、应用场景 异步处理,流量削峰,应用解耦,消息通讯四个场景 2.1、异步处理 场景1:用户注册后,需要发送注册邮件和注册短信。 串行方式:将注册信息写入 数据库 成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端 并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间 假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。 因为CPU在单位时间内处理的请求数是一定的,假设CPU在1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000/150)。 并行方式处理的请求量是10次(1000/100) 小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题? 引入消息队列,将不是必须的业务逻辑,异步处理

Nerves Project Circuits SPI Clock not initialised

我与影子孤独终老i 提交于 2021-01-05 07:23:07
问题 I cannot get the SPI to work. I am trying to interface an IC mcp2515. It is an SPI to CAN interface. I probed the CE pins (GPIO 8 and GPIO 7) and SCLK (GPIO 11) with the oscilloscope but got nothing. these are deps defp deps do [ {:nerves, "~> 1.6.3", runtime: false}, {:shoehorn, "~> 0.6.0"}, {:ring_logger, "~> 0.8.1"}, {:toolshed, "~> 0.2.13"}, {:vintage_net_wizard, "~> 0.4.0"}, {:circuits_uart, "~> 1.4"}, {:circuits_gpio, "~> 0.4.6"}, {:nerves_leds, "~> 0.8.1"}, {:circuits_spi, "~> 0.1.5"},

Nerves Project Circuits SPI Clock not initialised

笑着哭i 提交于 2021-01-05 07:23:04
问题 I cannot get the SPI to work. I am trying to interface an IC mcp2515. It is an SPI to CAN interface. I probed the CE pins (GPIO 8 and GPIO 7) and SCLK (GPIO 11) with the oscilloscope but got nothing. these are deps defp deps do [ {:nerves, "~> 1.6.3", runtime: false}, {:shoehorn, "~> 0.6.0"}, {:ring_logger, "~> 0.8.1"}, {:toolshed, "~> 0.2.13"}, {:vintage_net_wizard, "~> 0.4.0"}, {:circuits_uart, "~> 1.4"}, {:circuits_gpio, "~> 0.4.6"}, {:nerves_leds, "~> 0.8.1"}, {:circuits_spi, "~> 0.1.5"},

快速掌握RabbitMQ(一)——RabbitMQ的基本概念、安装和C#驱动

社会主义新天地 提交于 2021-01-02 15:23:10
1 RabbitMQ简介 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现,官网地址: http://www.rabbitmq.com 。RabbitMQ作为一个消息代理,主要负责接收、存储和转发消息,它提供了可靠的消息机制和灵活的消息路由,并支持消息集群和分布式部署,常用于应用解耦,耗时任务队列,流量削锋等场景。本系列文章将系统介绍RabbitMQ的工作机制,代码驱动和集群配置,本篇主要介绍RabbitMQ中一些基本概念,常用的RabbitMQ Control命令,最后写一个C#驱动的简单栗子。先看一下RabbitMQ的基本结构:   上图是RabbitMQ的一个基本结构,生产者Producer和消费者Consumer都是RabbitMQ的客户端,Producer负责发送消息,Consumer负责消费消息。 接下来我们结合这张图来理解RabbitMQ的一些概念:    Broker(Server) :接受客户端连接,实现AMQP消息队列和路由功能的进程,我们可以把Broker叫做RabbitMQ服务器。    Virtual Host :一个虚拟概念,一个Virtual Host里面可以有若干个Exchange和Queue,主要用于权限控制,隔离应用。如应用程序A使用VhostA,应用程序B使用VhostB

#erlang#学习笔记

这一生的挚爱 提交于 2020-12-31 09:51:48
一.erlang的模式匹配问题:Lhs=Rhs Lhs指模式,可以是[X,Y]、{X,Y}或X之类的列表,元组和变量,Rhs为值(不用怎么解释了吧)。在erlang中,若想得到python中"...[...]"列表引索的效果,需要写一个和值相适应的模式,并且在模式中把想求的值使用一个变量代替(和py中的形式参数类似),再匹配值: 例如: 1.现在捆绑一个变量:X = {232,34,"hello"}. 2.接着我们可以定义一个模式:{_,K,Z}. #模式的结构必须和值相同,如果值是有三个元素的元组,模式就必须是有三个元素(匿名变量或未绑定的变量)的元组,如果元素数不同或模式和值不同类(比如模式是元组,值是列表时),都是错误的。 3.进行匹配:{_,K,Z} = X. 4.匹配后,K的值就是34,Z就是"hello",要注意,"_"单下划线指匿名变量,要省略的值可以通过它表示。 二.列表相关: 1.列表分“头”和“尾”,比如[23,12,34,12]中,我通过[X|Y]这个模式来匹配,“头”就是X,即第一个元素23(不是列表),“尾”是Y,即[23,12,34,12]这个列表,也就是说,“头”就是第一个元素,第一个元素后的都属于“尾”。 2.如果T是一个列表,[H|T]也是一个列表。我们通过“|”来分开头和尾。另外当我们用[...|T]来构造一个列表时,都要保证T是列表

Erlang学习第二天

|▌冷眼眸甩不掉的悲伤 提交于 2020-12-31 09:32:02
今天学习erlang的进程,并发编程。erlang的并发编程很简单,只有三个原语: 1)产生进程, spawn 2) 发送消息 ! 3) 消息接收 receive ... end erlang进程之间通过消息进行传递。 今天用一个进程字典作为联系,也就是put,get. 向目标进程插入数据,然后查询数据,就那么简单。 代码如下: -module(servertest). -export([start/0, stop/0, myget/1, myset/2]). %insertdata()-> % put(zhangsanfeng, {age,18,sex,man}), % put(zhangwuji, {age,25,sex,man}), % put(linghuchong, {age,34,sex,man}), % put(miejueshitai, {age,34,sex,woman}). %开启服务 start()-> register(testserver, spawn(fun loop/0)). %结束服务 stop()-> testserver!stop. %查询进程字典 myget(Key)-> testserver!{self(), get, Key}, receive {_Pid, Response} -> Response end. %设置进程字典 myset