之前在讲RPC通信的各种好处,特别好用,但是RPC并不是万能的,也并不是适用于各种场景的,因为他是同步的;现如今很多场景下的调用都是异步的,系统A调用B后,并不需要知道B的结果,而且对B的结果无所谓,甚至你B挂了都无所谓,那么这个时候使用消息队列是十分OK的。

最简单的场景就是发送短信和email,主机不需要知道是否发送成功与否,就算失败了,哪怕再发一次也无所谓。

常见的MQ主要有JMS,RabbitMQ,ActiveMQ,Kafka以及RocketMQ,值得一提的是RocketMQ是阿里出的开源消息队列,很好用噢。

简单来说MQ可以支持点对点,点对多,订阅模式的各种消息,非常使用。举个非常我们自己使用过的例子,我们每周一三五的凌晨会有运维人员手动来执行一些数据操作,每个操作的实际大约20分钟,任务有先后顺序,执行完后需要查看上一个操作是否完毕再进行下一个操作,这样导致运维人员会很累,所以后来采用MQ来做这些任务,定时任务开始运行后,那么每个任务完成后只要调用对应的MQ就能达到人工的效果。一举两得。

关于消息队列的一些文章在之前都有写过,具体可以参考以下链接:

RabbitMQ 一二事 - 简单队列使用

RabbitMQ 一二事(2) - 工作队列使用

RabbitMQ 一二事(3) - 订阅模式(微信公众号模式)的应用

RabbitMQ 一二事(4) - 路由模式介绍

RabbitMQ 一二事(5) - 通配符模式应用

RabbitMQ 整合Spring 实现多客户端发送消息队列

分布式系统的数据一致性(在这里先不讲事务的一致性,后面会讲)

当数据被分在多地存储的时候,那么数据被读取的时候的一致性对用户是需要做保障的。这里分为强一致性和弱一致性

强一致性:保证用户不论何时何地,在华北还是华南,中国还是美国,同一时间访问到的数据是一致的,并不会出现差异性,这样的做法其实不多,消耗代价十分绝大,对运维团队的考验也十分严格。

弱一致性:保证用户访问数据的速度是OK的,但是数据内容可能随着时间的不同地点的不同会有差异。比如我在公司VPN环境下访问到的一些电商数据基本是实时的,更新速度很快。而我在下班以后在家访问却发现白天发布的数据并没有更新,需要在凌晨访问的时候数据才会更新过来,这样的做法就是数据的持续更新,服务端不会在乎客户访问的内容如何,虽然有时间地点的偏差,但是保证你能够访问到即可。

分布式系统的那些事儿(四) - MQ时代的通信的更多相关文章

  1. 开创学习的四核时代-迅为iTOP4412学习开发板

    产品特点: 处理器: Exynos 4412 处理器,Cortex-A9四核,功耗性能俱佳! 性能: 1GB(可选2GB) 双通道 64bit数据总线 DDR3: 4GB(可选16GB)固态硬盘EMM ...

  2. 分布式系统的那些事儿(六) - SOA架构体系

    有十来天没发文了,实在抱歉!最近忙着录视频,同时也做了个开源的后台管理系统LeeCX,目前比较简单,但是后续会把各类技术完善.具体可以点击“原文链接”. 那么今天继续说分布式系统的那些事. 我们现在动 ...

  3. 开创学习的四核时代-iTOP-4412开发板开源硬件平台

    iTOP-4412开发板如今比較热门的开发板.笔者最近入了一套. 也推荐给初学ARM的朋友学习,4412开发板搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具高速读取与 ...

  4. [转]开源那些事儿(四)-如何使用CodePlex进行项目管理

    本文版权信息作者:Jake Lin(Jake's Blog on 博客园) 出处:http://www.cnblogs.com/procoder/archive/2010/02/10/About-Op ...

  5. 分布式系统监视zabbix讲解四之可视化--技术流ken

    图形 概述 随着大量的监控数据被采集到Zabbix中,如果用户可以以可视化的表现形式来查看发生了什么事情,那么和仅仅只有数字的表现形式比起来则更加轻松. 以下是进行图形设置的地方.图形可以一目了然地掌 ...

  6. 分布式系统监视zabbix讲解四之可视化

    图形 概述 随着大量的监控数据被采集到Zabbix中,如果用户可以以可视化的表现形式来查看发生了什么事情,那么和仅仅只有数字的表现形式比起来则更加轻松. 以下是进行图形设置的地方.图形可以一目了然地掌 ...

  7. JAVA MQ API方式通信采用Binding MQ Server方式

    package com.mqapi;   /**  * @modified by actorai E-mail:actorai@163.com  * @version 创建时间:2010-9-15 * ...

  8. 【iCore3 双核心板_FPGA】实验十四:FSMC总线通信实验——独立地址模式

    实验指导书及代码包下载: http://pan.baidu.com/s/1kVJBxJ5 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  9. (四)backbone - DEMO - 通信录

    DEMO介绍 是DEMO - User List 的扩展,增加查询 大体实现 •创建Contact Model var Contact = Backbone.Model.extend({ defaul ...

随机推荐

  1. 《Android源代码设计模式解析与实战》读书笔记(十七)

    第十七章.中介者模式 中介者模式也称为调解者模式或调停者模式,是一种行为型模式. 1.定义 中介者模式包装了一系列对象相互作用的方式.使得这些对象不必相互明显作用.从而使它们能够松散耦合.当某些对象之 ...

  2. 单目视觉里程计 mono vo

    之前为了修改svo进行了一些不同的尝试,两个视频demo在以下. 效果1 视频链接: https://v.qq.com/x/page/d0383rpx3ap.html 在不同数据集上測试 效果2 视频 ...

  3. 如何快速的将一个str转换为list

    # -*- coding: cp936 -*- #python 27 #xiaodeng #如何快速的将一个str转换为list str='python' print list(str)#['p', ...

  4. WEBLOGIC的安装、配置和启动

    WEBLOGIC的安装.配置和启动 一.软件安装1. 安装前的准备工作 1.1 首先请确认您要安装的WebLogic版本所在的平台已通过了BEA的认证,完整的认证平台列表请参考 http://e-do ...

  5. 关于jsp发起请求加载datagrid数据(草稿)

    $(document).ready(function (){ var refNo = '${refNo}'; $('#caAbnDetail').datagrid('load',{ refNo:ref ...

  6. MATLAB 的数据导入与导出

    1 数据导入: %% 高层次读取数据. importdata 函数是一个高层次的函数 filename = 'weeklydata.txt'; delimiterIn =' '; %delimiter ...

  7. Alias Method for Sampling 采样方法

    [Alias Method for Sampling]原理 对于处理离散分布的随机变量的取样问题,Alias Method for Sampling 是一种很高效的方式. 在初始好之后,每次取样的复杂 ...

  8. [Spring学习笔记 3 ] spring 注解详解,完全注解,常用注解

    .xml使用注解 xml 用来定义bean的信息,注解用来配置依赖信息 ) 在配置文件中配置bean )在javaBean中用注解来指定依赖注入 )在配置文件中开启注解扫描 @Resource标签 j ...

  9. QQ模仿之弹窗ADDFriend事件

    大家自己分析吧 #pragma once //演示QQ2009 #define WINDOW_WIDTH 250 //窗口宽度 #define WINDOW_HEIGHT 600 //窗口高度 str ...

  10. STAF进行分布式脚本分发----实践篇

    该博文理论支持文章:http://www.cnblogs.com/zhangfei/p/3169139.html 一.准备条件 1.安装STAF.由于其官网被墙了,所以大家可进入WAT群的网盘里去下载 ...