2019第2周日-要点回顾

消息中间件的可靠性是指对消息不丢失的保障程度;而消息中间件的可用性是指无故障运行的时间百分比,通常用几个 9 来衡量。不存在绝对的可靠性只能尽量趋向完美。并且通常可靠性也意味着影响性能和付出更大的成本,因此实际应用时还要根据业务需求,对真正关键的信息来做可靠性保证,并要从生产者、消息队列、消费者三个维度来努力。

如果在发送消息时采用了事务机制或者publisher confirm机制的话,服务端的返回是在消息落盘之后执行的,这样可以进一步的提高了消息的可靠性。但是即便如此也无法避免单机故障且无法修复(比如磁盘损毁)而引起的消息丢失,这里就需要引入镜像队列。镜像队列相当于配置了副本,绝大多数分布式的东西都有多副本的概念来确保HA。在镜像队列中,如果主节点(master)在此特殊时间内挂掉,可以自动切换到从节点(slave),这样有效的保证了高可用性,除非整个集群都挂掉。虽然这样也不能完全的保证RabbitMQ消息不丢失(比如机房被炸。。。),但是配置了镜像队列要比没有配置镜像队列的可靠性要高很多,在实际生产环境中的关键业务队列一般都会设置镜像队列。

一个软件(程序库)可支持多种协议(例如ActiveMQ实现了多种消息协议),某一种协议(尤其是开放协议)也可被多种软件(程序库)实现(例如能够支持webservice协议的程序库就有Codehaus XFire、Apache CXF、Jboss RESTEasy等)

分布式系统中常用通讯模型主要是“请求-应答”模型和“发布-订阅”模型。前者常见如RPC通讯,常用HTTP REST或Thrift等协议;后者多指消息队列MQ通讯。

RPC大多属于请求-应答模式,也包括越来越多响应式范式,对于需要点对点交互、强事务保证和延迟敏感的服务/应用之间的通信,RPC是优于消息队列的。那么消息队列(下文也简称MQ,即Message Queue)可以看做是一种异步RPC,把一次RPC变为两次或多次,进行内容转存,再在合适的时机投递出去。消息队列中间件往往是一个分布式系统,内部组件间的通信仍然会用到RPC。

通过JMS规范,开发人员可以忽略各种消息协议的细节,只要消息在同一队列中,就能够保证各种消息协议间实现互相转换。

如果您不特别指定ActiveMQ的网络监听端口,那么这些端口都将使用BIO网络IO模型。所以为了首先提高单节点的网络吞吐性能,我们需要明确指定Active使用NIO网络模型。

比起消息生产者来说消息消费者的性能更能影响ActiveMQ系统的整体性能,因为要成功完成一条消息的处理,它的工作要远远多于消息生产者。默认情况下ActiveMQ服务端采用异步方式向客户端推送消息。也就是说ActiveMQ服务端在向某个消费者会话推送消息后,不会等待消费者的响应信息,直到消费者处理完消息后,主动向服务端返回处理结果。

ActiveMQ中设置的各种默认预取数量一般情况下不需要进行改变。但是非必要情况下,请不要设置prefetchSize=1,因为这样就是一条一条的取数据;也不要设置为prefetchSize=0,因为这将导致关闭服务器端的推送机制,改为客户端主动请求。

原文地址:https://www.cnblogs.com/doit8791/p/10262212.html

时间: 2024-10-08 18:55:15

2019第2周日-要点回顾的相关文章

2019第3周日-回顾

ActiveMQ常用的三种持久化存储方案:KahaDB.LevelDB.关系型数据库.其中KahaDB和LevelDB的工作原理基本类似,都采用内存+磁盘介质的方案:内存用于存放信息的位置索引,磁盘介质上存放消息内容.而关系型数据库的方案,ActiveMQ将完全通过JDBC对数据库进行操作完成消息的存储和修改.某种存储方案的性能,除了这种存储方案的工作原理以外对其有直接影响外,还要考虑它的工作环境.只有根据软件团队预估的系统压力.综合建设方案.考虑后续扩容方式,来确定采用哪一种存储方案,才是科学

2019第5周日

农历腊月二十九,假期第2天,法定假日前一天. 减少写作焦虑,更要减少应付,没啥好写的就推荐自己遇到最好的文章,并思考为啥自己觉得好.哪怕只是一个故事段子笑话让人一乐也行. 看到李想的创业经验,年轻人创业和发展七个要点: 方向.目标.意愿.方法.毅力.成果.自我观察. 方向.目标很多人表面都很重视,但如果真要他讲清楚自己的方向.目标是什么,为什么要这样,估计很少人能做到.为什么?没有足够的重视,没有强烈的意愿,自然也没有时刻把它们放在心上,在现代社会诱惑一多,很容易被琐事占据自己的时间精力.影响自

2019第11周日

2019过去1/5了,你的目标实现进度达到1/5了吗? 时间不会因为你没准备好而停止,时间也不会因为你悔恨而倒退,时间总是以最简单规律不紧不慢的往前走,时间总是馈赠那些珍惜它用好它的朋友. Rod,Juergen 和 Yann 于 2003 年 2 月左右开始合作开发该项目 .Yann 为新框架创造了“Spring”的名字.Yann Caroff 在早期离开了团队,Rod Johnson 在 2012 年离开,Juergen Hoeller 仍然是 Spring 开发团队的积极成员. 自 200

2019第23周日

端午遇上高考,1031万考生奔赴考场,背后有上亿个关心加油的人.护航2019高考,6月7日至9日,全国举行2019年高考.高考首日,北京试卷从各区的教育招生和考试中心运送至考点,全程GPS跟踪和移动视频监控,确保试卷保密性. 高考能改变人的一生,但高考不能决定人的一生. 一个远程接口调用服务要保存服务地址信息,同时要处理地址的立即更新,这里会存在同步问题,根据同步代码执行时间要确定同步方法,是否用读写锁,是否用读写互斥的读写锁.Java中大部分锁.同步工具都是基于AQS实现的,它又是基于通过JN

2019第34周日

Zookeeper是一个分布式协调系统,为应用提供一致性服务,实现配置.域名维护.分布式服务等.它以Fast Paxos算法为基础实现了Zab协议,通过选举leader,只有leader才能提交议案,从而解决Paxos算法多个议员提交议案互相排斥而产生的活锁问题.通过Zab协议传递leader状态改变,保证leader和follow而的一致性.一般Zookeeper都是集群模式,不存在单点故障从而保证了可靠性. dubbo.kafka. hbase.solr等很多开源项目都用到了Zookeepe

2019第42周日

假设现在,你面前放着一个光线可穿透的容器,你只需定睛一瞧,就可判断这是一只玻璃杯.而"玻璃杯"只是一个概念.概念简化了信息,它帮我们把事物分门别类.见一物而知其类别,是一瞬间就能完成的事,我们不能称这个过程为观察. 但是你能够仅凭"玻璃杯"这三个字还原出眼前的杯子吗?不能.因为有很多细节你不知道.如果你想搞清楚这个玻璃杯是怎么设计的,有什么特别之处,看一眼是不够的,只知道概念是不够的,你需要反复看,用不同的方式去看.这意味着你要选择不止一个焦点.或许前一秒你观察的是

单例模式要点回顾

关键代码:构造函数是私有的. 优点: 1.在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存). 2.避免对资源的多重占用(比如写文件操作). 缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化. 单例模式的几种实现方式 单例模式的实现有多种方式,如下所示: 1.懒汉式,线程不安全 是否 Lazy 初始化:是 是否多线程安全:否 实现难度:易 描述:这种方式是最基本的实现方式,这种实现最大的问题就是不支持多

2019第6周日

2月10号,大年初六,春节假期最后一天. 这一周是春节休息的一周,走亲访友的同时看了李善友在混沌大学的大课,他讲的第二曲线.第一性原理让我对思维模型有新的认识. 随着科技发展越来越快,未来社会出现越来越多的非连续性,不光是企业,我们每个人都需要第二曲线,它可能是从第一曲线中某一个点放大形成的.我们以往学习多是通过归纳法总结经验的方式,但它有个前提要求是事物是连续的,但从第一曲线跳到第二曲线时往往是不连续的,而我们要跨域的方法就是运用第一性原理,找到第一曲线和第二曲线的底层的第一性原理(往往是相同

2019第7周日

春节后上班第1周,原以为请教的人比较多吃饭会比较空,结果大部分都按时上班回到公司吃饭反而更挤了.这也算是想象与真实差距很大的例子,其实还有很多想象很美好的人和事,当事实上根本不是那样,我们想要更好就必须拥有智慧看到事实的真相. 春节期间看了很多关于思维模型相关的视频和文章,也更意识到学习思维模型的重要性.它是人类文明进化过程中形成的金字塔顶端的蓝宝石,是重要学科的重要理论,是顶尖高手每天都在刻意练习和使用的思维工具. 模型思维:以结构思维为框架,碎片化知识填充,形成了稳固可视化模型,左右脑协同记