erlang

RabbitMQ 高可用集群搭建

萝らか妹 提交于 2020-12-13 16:34:01
面向EDA(事件驱动架构)的方式来设计你的消息 AMQP routing key的设计 RabbitMQ cluster搭建 Mirror queue policy设置 两个不错的RabbitMQ plugin 大型应用插件(Sharding、Rederation) Queue镜像失败手动同步 各集群配置同步方式(RabbitMQ export\import) 客户端连接方式(尽量采用AMQP组来动态链接) RabbitMQ 产线二次产品化封装(消息补偿、发送消息持久化、异常处理、监控页面、重复消息剔除) 1.面向EDA(事件驱动架构)的方式来设计你的消息 在通常情况下你在使用消息中间件的时候,都是未经设计的使用,你没有把应用架构和系统架构边界搞清楚。消息中间件只是一个纯粹的技术工具,当你引入的时候是站在应用架构的角度引入的。这是架构的角度,也是架构的上帝视角,这样你就不会用到最后发现越来越混乱,而且也无法结合软件模式、方法论、最佳实践来综合提升系统的架构能力。 EDA(Event Driven Architecture, EDA ) 事件驱动架构,它是一种用来在SOA或者Micro service中进行的架构模式。它的好处有几个,柔性具有很高的伸缩性。 (具体参考本人的SOA架构文章: SOA架构设计经验分享—架构、职责、数据一致性 )

.NET分布式大规模计算利器-Orleans(一)

南楼画角 提交于 2020-12-13 14:30:52
写在前面 Orleans是基于Actor模型思想的.NET领域的框架,它提供了一种直接而简单的方法来构建分布式大规模计算应用程序,而无需学习和应用复杂的并发或其他扩展模式。我在2015年下半年开始应用Orleans,当时公司的交易系统采用的架构就是基于Orleans框架的,其展现出来的高性能、高并发以及惊人的稳定性深深地吸引了我,也让我认识到了传统三层无状态架构的缺陷。本文主要关注Orleans的思想基础,Actor模型及其应用。 Orleans思想基础:Actor模型 传统三层无状态架构的缺陷 在讨论Actor模型之前,我们可以先讨论一下传统三层架构在当前高并发环境中所面临的尴尬境遇。 三层架构包括表示层、业务逻辑层或者叫做中间层、数据访问层(也就是存储层),其架构图如下所示: 正如我们在实践中所知道的那样,中间层和数据访问层在伸缩性方面有着很大的限制,同时存储层常常会成为系统的瓶颈,这就意味着整套系统也会因为存储层的限制而变得低效。通常的做法是在中间层与存储层中间加一层缓存逻辑出来,以提升系统性能,但是很快就会遇到存储层与缓存层的数据一致性问题,这无疑为开发人员和运维人员增加了额外的工作量。 试想一下,如果我们中间层本身就携带着状态或者简单来说中间层与缓存层是合二为一的,那么我们的系统性能是不是就提升了一个级别,答案是肯定的。那么该如何去做呢

画龙点睛 之RabbitMQ 初来乍到

三世轮回 提交于 2020-12-12 10:34:07
消息队列解决了什么问题 1. 异步处理 2. 应用解耦 3. 流量削峰 4. 日志处理。。。。。。 安装RabbitMQ (这里的安装我只仅仅说一下linux 的安装 如果想安装windows 版 可以留言我会给你发文档) 1 . 目录准备 2. 添加仓库 地址 这里我不知道你们是centos6 还是 centos7 这里我提供了两个版本 直接 复制粘贴即可 1 Erlang 20.x on CentOS 7 : 2 # In /etc/yum.repos.d/rabbitmq- erlang.repo 3 [rabbitmq- erlang] 4 name=rabbitmq- erlang 5 baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7 6 gpgcheck=1 7 gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing- key.asc 8 repo_gpgcheck=0 9 enabled=1 10 Erlang 20.x on CentOS 6 : 11 # In /etc/yum.repos.d/rabbitmq- erlang.repo 12 [rabbitmq- erlang] 13 name=rabbitmq-

工作这么多年,你能向新人解释清到底什么是面向对象编程?

荒凉一梦 提交于 2020-12-11 03:55:42
微信搜 「yes的练级攻略」干货满满,不然来掐我,回复【123】一份20W字的算法刷题笔记等你来领。 个人文章汇总: https://github.com/yessimida/yes 欢迎 star ! 你好,我是 yes。 面向对象编程想必大家都耳熟能详,但是写了这么多代码你对面向对象有清晰的认识吗? 来看看这几个问题: 到底什么是面向对象编程? 和面向过程编程有什么区别? 什么又称为面向对象语言、面向过程语言? 用面向对象语言写的代码就面向对象了? 面向对象编程真的就这么好吗? 复杂的业务用面向对象编程就合适了吗? 我还真没具体地定义过到底什么是面向对象编程。 所以假设有人问到底什么是面向对象编程?有什么好处? 一时还真不知道怎么说,或者说成体系的解释。 这篇文章我就谈谈我的理解,也试着看能不能说清啥叫面向对象编程。 正文 从二进制命令到汇编语言。 从汇编语言到面向过程语言再到面向对象语言。 计算机语言的发展是为了便于人类的使用,使其更符合人类的思考方式。 计算机的思路就是取指执行,一条直道走到底,它可不会管你什么抽象,不管什么业务建模,通通得给它变成一条条指令,排好顺序让它执行。 而我们人类不一样,我们的思维在简单场景来看是一条道,但在复杂场景就需要做各种分类,才能理清楚关系,处理好事务。 就像法庭,分为法官、书记员、法警、原告、被告、证人等角色。 这么多人分好类

TIOBE 12 月编程语言:Python 有望第四次成为年度语言!

送分小仙女□ 提交于 2020-12-10 05:46:41
须臾间,2020 年已经不足一个月。近日,编程语言社区 TIOBE 最新发布了 12 月编程语言排行榜。下个月月初,TIOBE 社区也即将揭晓 2020 年年度编程语言,谁又能摘得桂冠? 毋庸置疑,能够获得年度编程语言称号的编程语言必然是 2020 年中最受关注以及流行度、涨幅最高的编程语言。对此,TIOBE 官方进行了相应的统计,在过去一年中,涨幅最大的为 Python,增幅 1.9%;其次为 C++ 0.71 %;R 语言增幅 0.6%、Groovy 增幅 0.69%。 综合来看,其他任何语言超过 Python 的机率都比较低。这意味着 Python 很有可能将于今年也是有史以来第四次获得年度编程语言称号的编程语言。 除了以上,值得关注的是,近几个月期间,TIOBE 榜单已然成为了 Python 与 Java 的追逐战战场。本月中,Java 虽然整体热度与趋势有所下滑,但还是再次超越了 Python 重回第二宝座。 其他编程语言排名 另外,本月编程语言榜单还有一些变化: Rust 从第 25 位上升到了 21 位; Julia 从 30 名上升到了第 26 名; Dart 从第 27 位下降到第 31 名; Kotlin 从第 36 位下降到第 40 位; TypeScript 从第 43 名上升一位,至第 42 名。 下面列出了完整的21-50名,因为是非官方发布的

RabbitMQ 消息队列

白昼怎懂夜的黑 提交于 2020-12-04 23:46:32
RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。RabbitMQ可以,多个程序同时使用RabbitMQ ,但是必须队列名称不一样。采用erlang语言,属于爱立信公司开发的。 术语(Jargon) P(Producing):制造和发送信息的一方。 Queue:消息队列。 C(Consuming):接收消息的一方。 1. 安装 Ubuntu 上安装 添加源、新增公钥(不加会有警告)、更新源,安装: rabbitmq-server echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list wget -O- https://www.rabbitmq.com/rabbitmq

RabbitMQ erlang "topics"

蓝咒 提交于 2020-11-29 00:41:55
原文链接: http://www.rabbitmq.com/tutorials/tutorial-five-python.html 在前面的例子中我们改进了我们的日志系统。使用 fanout 类型的exchage 只能广播消息。我们使用 direct 来代替,获得了选择性接收消息的可能。 虽然使用direct类型的exchange改善了我们的系统,但它仍然有缺陷,它不能基于多种条件 进行routing。 在我们的日志系统中,我们可能想要订阅日志不仅基于严重性程度,而且基于发布日志的源码。你可能知道 syslog unix tool 中的概念, 那个基于 严格的(info/warning/crit...)和灵巧的(auth/cron/kern)。 这将给我们许多灵活性——我们可能想听仅来自于 'corn'日志中的 严重的错误和kern 里面的所有日志。 在我们的日志系统为了实现那个,我们需要学习更复杂的 topic exchange. Topic exchange 发送给topic exchange的消息不能随便定义一个routing key——routing key 必须是一个由”.”号分隔的单词列表。单词可以是任意的,但是一般情况下它应该代表消息的一些特征。比如下面一些routing key : “stock.usd.nyse” “nyse.vmw” “quick.orange

卸载RabbitMQ和Erlang

这一生的挚爱 提交于 2020-11-29 00:41:42
如何把RabbitMQ卸载干净 原文转载至:https://blog.csdn.net/w893932747/article/details/81018191 To uninstall RabbitMQ and Erlang from the machine completely, do the following: Open the Windows Control Panel. Double-click Programs and Features. In the list of currently installed programs, right-click RabbitMQ Server, and then click Uninstall. In the list of currently installed programs, right-click Erlang OTP, and then click Uninstall. Open the Windows Task Manager. In the Task Manager, look for the process epmd.exe. If this process is still running, right-click it and then click End Process. Delete all the

RabbitMQ问题解决:TCP connection succeeded but Erlang distribution failed

非 Y 不嫁゛ 提交于 2020-11-28 23:55:26
RabbitMQ问题解决:TCP connection succeeded but Erlang distribution failed 参考文章: (1)RabbitMQ问题解决:TCP connection succeeded but Erlang distribution failed (2)https://www.cnblogs.com/hellxz/p/9104028.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/3797416/blog/4758110

rabbitmq安装 linux

独自空忆成欢 提交于 2020-11-25 03:18:48
rabbitmq 和erlang对照表 https://www.rabbitmq.com/which-erlang.html#supported-version-policy erlang地址: https://www.erlang-solutions.com/resources/download.html rabbitmq地址: https://www.rabbitmq.com/download.html centos7 一. 安装 第一步:yum安装erlang 添加rabbitmq依赖的erlang yum命令repos /etc/yum.repos.d/rabbitmq-erlang.repo [rabbitmq-erlang] name=rabbitmq-erlang baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/21/el/7 gpgcheck=1 gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc repo_gpgcheck=0 enabled=1 yum安装: yum -y install erlang 检查安装版本: erl 返回: Erlang/OTP 21 [erts-10.0.7] [source]