RabbitMQ

CentOS7安装OpenStack-01.系统环境准备和相关组件安装

◇◆丶佛笑我妖孽 提交于 2020-05-08 21:15:43
官方文档: https://docs.openstack.org 1.0.系统环境 生产测试应用的服务器最好是物理机,虚拟目前可以完成搭建测试体验 系统选择是目前的最新版本:CentOS Linux release 7.7.1908 (Core) 控制节点 :Controller :192.168.182.143 计算节点 :Nova:192.168.182.142 1.1.配置域名解析 1)配置主机名 # 在 控制节点 上执行 hostnamectl set - hostname controller echo ' # controller 192.168 . 182.143 controller # compute1 192.168 . 182.142 compute1 ' >>/etc/hosts 1.2.关闭防火墙和selinux systemctl stop firewalld.service systemctl disable firewalld.service systemctl status firewalld.service setenforce 0 getenforce sed -i ' s#SELINUX=enforcing#SELINUX=disabled#g ' /etc/sysconfig/ selinux grep SELINUX =disabled

【RabbitMQ消息中间件】5.work模式

橙三吉。 提交于 2020-05-08 21:07:25
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/u013517797/article/details/79438239 上一篇讲解了如何使用Java连接RabbitMQ服务,并实现一个简单队列模式。本篇讲解RabbitMQ的另一个队列模式----work模式。 work的队列模式图如下所示: 可以看到,该模式下有一个生产者,一个队列和多个消费者。 一个生产者将一个消息发送至队列,此时对于多个消费者,只能有一个消费者获取到消息,即是消费者谁先抢到谁拿到该消息。 那么以基本的简单模式的队列来实现work模式队列,是否能达到上面所说的效果呢? 我们在原来的“RabbitMQ_Test”工程上创建新的生产者和消费者进行测试。 首先创建生产者: package cn.jack.rabbitmq.work; import cn.jack.rabbitmq.connection.ConnectionUtil; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; public class Send { private final static String QUEUE_NAME="test

饿了么交易系统 5 年演化史

╄→гoц情女王★ 提交于 2020-05-08 19:00:29
本人免费整理了Java高级资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G,需要自己领取。 传送门: https://mp.weixin.qq.com/s/osB-BOl6W-ZLTSttTkqMPQ 我为什么会写这篇文章,究其缘由: 一是自己在交易域做了 4 年,有很多只有我才知道,才能串起来的故事,想把这些记录并保留下来。 二是发现后边的很多同学看交易体系时,一接触就是分布式、SOA、每日百万、千万数据量,只知道它是这个样子,很难理解背后的思考和缘由。伴随自己这几年的经验,想让大家能够更容易的理解这个演化过程的原因和历程,有甘有苦。 三是很多总结也好,方法论也好,更多是去除了“糟粕”呈现在大家面前,这里可能会稍微加一点“毒鸡汤”,现实不一定那么美好,我们有很多抉择,现在回过头来看,也许是庆幸,也许是错误。 这篇文章希望通过一些发展的故事和思考来给读者呈现整个历程,大家可以看到非常多野蛮生长的痕迹,并会附带一些思考和总结,但不会像快餐式的总结很多大道理。 那我们就从2012年的太古时期讲起。 # 太古 在谈订单之前,我们往前再考古考古,在太古时代,有一套使用 Python 写的系统,叫做 Zeus 的系统,这个 Zeus 包含了当时饿了么最核心的几大模块,比如订单、用户、餐厅

如何保证消息的可靠性传输?

邮差的信 提交于 2020-05-08 18:48:50
面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是 数据不能多一条,也不能少一条 ,不能多,就是前面说的 重复消费和幂等性问题 。不能少,就是说这数据别搞丢了。那这个问题你必须得考虑一下。 如果说你这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中 绝对不会把计费消息给弄丢 。 面试题剖析 数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ 和 Kafka 分别来分析一下吧。 RabbitMQ 生产者弄丢了数据 生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。 此时可以选择用 RabbitMQ 提供的事务功能,就是生产者 发送数据之前 开启 RabbitMQ 事务 channel.txSelect ,然后发送消息,如果消息没有成功被 RabbitMQ 接收到,那么生产者会收到异常报错,此时就可以回滚事务 channel.txRollback ,然后重试发送消息;如果收到了消息,那么可以提交事务 channel.txCommit 。 // 开启事务 channel.txSelect try { // 这里发送消息 } catch (Exception e) { channel

一口气说出 6种 延时队列的实现方法,面试官也得服

有些话、适合烂在心里 提交于 2020-05-08 14:05:34
五一期间原计划是写两篇文章,看一本技术类书籍,结果这五天由于自律性过于差,禁不住各种诱惑,我连电脑都没打开过,计划完美宣告失败。所以在这能看出和大佬之间的差距,人家没白没夜的更文,比你优秀的人比你更努力,难以望其项背,真是让我自愧不如。 知耻而后勇,这不逼着自己又学起来了,个人比较喜欢一些实践类的东西,既学习到知识又能让技术落地,能搞出个 demo 最好,本来不知道该分享什么主题,好在最近项目紧急招人中,而我有幸做了回面试官,就给大家整理分享一道面试题:“ 如何实现延时队列? ”。 下边会介绍多种实现延时队列的思路,文末提供有几种实现方式的 github 地址。其实哪种方式都没有绝对的好与坏,只是看把它用在什么业务场景中,技术这东西没有最好的只有最合适的。 一、延时队列的应用 什么是延时队列?顾名思义:首先它要具有队列的特性,再给它附加一个延迟消费队列消息的功能,也就是说可以指定队列中的消息在哪个时间点被消费。 延时队列在项目中的应用还是比较多的,尤其像电商类平台: 1、订单成功后,在30分钟内没有支付,自动取消订单 2、外卖平台发送订餐通知,下单成功后60s给用户推送短信。 3、如果订单一直处于某一个未完结状态时,及时处理关单,并退还库存 4、淘宝新建商户一个月内还没上传商品信息,将冻结商铺等 。。。。 上边的这些场景都可以应用延时队列解决。 二、延时队列的实现

.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一)

六月ゝ 毕业季﹏ 提交于 2020-05-08 08:26:20
原文: .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一) 写下此文章只为了记录Surging微服务学习过程,并且分享给广大想学习surging的基友,方便广大基友快速入门,让程序跑起来。 本篇文章只记录让Surging跑起来,暂时不涉及部署方面,本文参考了其他几位大佬的文章,精简整理的 一.准备工作 :   1.先把surging搞下来 https://github.com/dotnetcore/surging   2.Win10 Hyper-v开启来,我们本篇中使用轻量linux-- rancherOS,虚机环境搭建 请移步文章   3. RancherOS环境暂时只使用 rabbitmq跟consul 二.运行环境搭建,在RancherOS安装Rabbitmq跟consul(此段配置是照搬 https://www.cnblogs.com/hankexia/p/9637195.html ) 1.安装consul $ docker pull consul --下载consul 镜像 这位老铁的consul 服务发现介绍的还行 consul 服务发现 集群 docker 版 我提炼了一下 执行一下命令就行了,做两个consul服务小集群,嘻嘻 由于docker默认创建容器每次重启会重新分配容器内部IP,会导致集群的join的IP

《springcloud 五》springcloud stream

此生再无相见时 提交于 2020-05-08 06:43:48
什么是消息驱动? SpringCloud Stream消息驱动可以简化开发人员对消息中间件的使用复杂度,让系统开发人员更多尽力专注与核心业务逻辑的开发。SpringCloud Stream基于SpringBoot实现,自动配置化的功能可以帮助我们快速上手学习,类似与我们之前学习的orm框架,可以平滑的切换多种不同的数据库。 目前SpringCloud Stream 目前只支持 rabbitMQ和kafka 消息驱动原理 绑定器 通过定义绑定器作为中间层,实现了应用程序与消息中间件细节之间的隔离。通过向应用程序暴露统一的Channel通过,是的应用程序不需要再考虑各种不同的消息中间件的实现。当需要升级消息中间件,或者是更换其他消息中间件产品时,我们需要做的就是更换对应的Binder绑定器而不需要修改任何应用逻辑 。 在该模型图上有如下几个核心概念: Source: 当需要发送消息时,我们就需要通过Source,Source将会把我们所要发送的消息(POJO对象)进行序列化(默认转换成JSON格式字符串),然后将这些数据发送到Channel中; Sink: 当我们需要监听消息时就需要通过Sink来,Sink负责从消息通道中获取消息,并将消息反序列化成消息对象(POJO对象),然后交给具体的消息监听处理进行业务处理; Channel: 消息通道是Stream的抽象之一

上周热点回顾(3.25-3.31)

我与影子孤独终老i 提交于 2020-05-07 23:18:42
热点随笔: · .NET Core 给使用.NET的公司所带来的机遇 ( 张善友 ) · .NET程序员我是如何通过一个产品在2年内买车买房 ( 师傅-伞下的雨 ) · 龙岗一个月350的出租房,我搬出来了 ( LonelyKeyGuest ) · 我们为什么要使用RabbitMQ? ( 大魔王先生 ) · 程序媛的人生观 ( 编程一生 ) · 开源 , KoobooJson一款高性能且轻量的JSON框架 ( 小曾看世界 ) · C#净化版WebApi框架 ( kiba518 ) · 【春华秋实】.NET Core之只是多看了你一眼 ( 艾心❤ ) · 为啥程序会有bug? ( Zachary_Fan ) · 你不需要 jQuery,但你需要一个 DOM 库 ( 叙帝利 ) · 前后端分离实际容易产生的问题 ( 核桃大号 ) · CSS 火焰?不在话下 ( ChokCoco ) 热点新闻: · 我认识了一位阿里巴巴“禁卫军” · 农村黑产,真正的硬核朋克 · 《神秘的程序员们》漫画84:平时的你vs面试的你 · 硬核老奶奶:81岁自学编程 半年时间开发上架一款App · 程序员不能忍996了!没有X生活,生病ICU,建抗议网站 · 求伯君与雷军的三十年 · 民营运载火箭发射再失败,“中国马斯克”之困 · 乏人问津的滴滴司机遇害案:滴滴的敌人是群氓的偏见 · 不用再回户籍地

Spring Cloud Alibaba学习笔记(12)

…衆ロ難τιáo~ 提交于 2020-05-07 21:40:38
什么是Spring Cloud Stream 一个用于构建消息驱动的微服务的框架 应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream 中binder 交互,通过我们配置来 binding ,而 Spring Cloud Stream 的 binder 负责与中间件交互。所以,我们只需要搞清楚如何与 Spring Cloud Stream 交互就可以方便使用消息驱动的方式 Spring Cloud Stream编程模型 Destination Binder(目标绑定器) 与消息中间件通信的组件 Destination Bindings(目标绑定) Binding是连接应用程序与消息中间件的桥梁,用于消息的消费和生产,有Binder创建 Message(消息) 微服务集成了Stream,Stream的Destination Binder创建了两个Binding,左边的Binding连接Rabbit MQ,右边的MQ连接Kafka。 左边的Binding从Rabbit MQ处消费消息,然后经过Application处代码的处理,把处理结果传输给Kafka。【从Rabbit MQ处消费消息,然后经过处理,生产到Kafka】 使用Spring Cloud Stream 实现消息收发 编写生产者 添加依赖 <dependency> <groupId

虚拟机部署单机版kubernetes,minikube,docker

强颜欢笑 提交于 2020-05-05 13:11:29
# 目前公司用的是阿里云的容器服务 所以本地搭建个单机版 方便测试使用 # VMware® Workstation 12 Pro 版本 # 虚拟机环境配置:配置 2核 4G 网络桥接 # 系统镜像: CentOS-7-x86_64-Minimal-1810.iso 最好从阿里云镜像系统下载可以省去yum仓库的配置 # 网站地址: https://developer.aliyun.com/mirror/ # 下载 CentOS-7-x86_64-Everything-1908.iso 这个更省事 链接如下 https://mirrors.aliyun.com/centos/7.7.1908/isos/x86_64/CentOS-7-x86_64-Everything-1908.iso # docker 文档 https://docs.docker.com/engine/install/centos/ # 执行 su 切换到 root 用户 # 关掉防火墙 # systemctl stop firewalld # systemctl disable firewalld # 清理老版本 # sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \