Redis 使用 List 实现消息队列的利与弊
Posted ImportNew
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 使用 List 实现消息队列的利与弊相关的知识,希望对你有一定的参考价值。
QueueService 可以使用 List 数据结构来实现消息队列,满足先进先出。为了实现消息可靠性,Redis 提供了 BRPOPLPUSH 命令是解决。 Redis 是一个非常轻量级的键值数据库,部署一个 Redis 实例就是启动一个进程,部署 Redis 集群,也就是部署多个 Redis 实例。 而 Kafka、RabbitMQ 部署时,涉及额外的组件,例如 Kafka 的运行就需要再部署 ZooKeeper。相比 Redis 来说,Kafka 和 RabbitMQ 一般被认为是重量级的消息队列。 需要注意的是,我们要避免生产者过快,消费者过慢导致的消息堆积占用 Redis 的内存。 在消息量不大的情况下使用 Redis 作为消息队列,它能给我们带来高性能的消息读写,这似乎也是一个很好消息队列解决方案。 - EOF - 1、消息队列探秘 – RabbitMQ 消息队列介绍 2、Springboot 2 之 Spring Data Redis 实现消息队列 : 发布 / 订阅模式 3、消息队列面试连环问:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理? 看完本文有收获?请转发分享给更多人 关注「ImportNew」,提升Java技能 点赞和在看就是最大的支持❤️ AvidThink首席分析师Roy Chua以云原生为主题,讨论了它在电信行业中的利与弊。这是一个重要的话题,因为世界上几乎每个电信公司都在其网络中引入云原生技术。一些运营商,如乐天(Rakuten)和Dish,从一开始就用云原生技术构建网络。 Dish最近宣布将使用AWS Elastic Compute Cloud来托管其5G核心和无线接入网络(RAN)。Chua说:“Dish实际上是把整个未来都押在AWS上了。” 云原生的定义是第一个要讨论的事情。Chua说,其定义相当含糊。“在最高层次上,它构建应用程序以使用云交付模型并在云中提供服务。在这里面,一部分技术是容器、服务网格、微服务、不变基础设施、自动化的使用以及持续集成和持续交付的使用。” 云原生提供了更快开发应用程序的能力,并且可以将其扩展到比传统应用程序更大的数量。云原生应用程序还可以降低运营成本,并减少管理工作。 然而,云原生也面临着一些挑战。 它是一个服务的集合,根据需要进行旋转,这些服务必须相互协调和沟通。Chua说,故障排除可能很棘手,因为微服务是短暂的。可能有问题,而微服务却在问题解决之前就消失了。 在云原生架构中,一切都是分解的。”“分解是很好的,但你必须把东西重新组合起来。”这正是Kubernetes有用的地方。它提供了一种相对精简的方式来编排和管理云原生容器化服务。” Verizon正在实现云原生 对于云原生,Verizon网络和技术规划总监Miguel Carames说:“这一切都是为了让应用程序与基础设施脱钩,让基础设施本身提供更多的公共服务。” 他说,云原生效率更高,因为它消除了大量的重复。传统上,每个应用程序都有许多管理功能,而这些功能在所有应用程序中都是重复的。“云原生做的是:找到这些共同的功能,并确保它们是由平台提供的。”Carames说,“正在处理的容器可以根据需要访问这些信息,但它们可以转到存储状态的微服务,而不必进行复制。这一切都建立在我们的电信云上。” Verizon的电信云被称为Verizon Cloud Platform(VCP)。它有不同的风格和不同的功能,这取决于它在网络中的部署位置,无论是核心、边缘还是RAN。 Carames说:“当我们开始这一虚拟化之旅时,容器还不够成熟,无法托付电信公司的工作负载。”Verizon使用OpenStack软件构建了它的VCP,之后新的5G独立核心是用云原生软件构建的。“我们将利用OpenStack中已经存在的东西,并与云原生结合起来。” 在迁移到云原生的过程中,Carames提到了“人和文化”。“我们需要训练所有的团队,需要更清楚地了解和理解应用程序的交互方式。” 他说,另一个挑战是与Verizon的供应商合作。“我们提供平台,我们必须共享规范,这样他们才能来集成。网络供应商需要了解架构。” 爱立信的Core、IT和云技术副总裁Ravi Vaidyanathan也将参加讨论。他在爱立信的团队正在帮助运营商踏上“云原生之旅”。“我们已经有云基础设施产品——基于开源Kubernetes的电信级、容器即服务平台。而且,我们正在开发云原生的裸金属版本。” 他表示,在应用方面,爱立信已经将5G作为一项关键的过渡技术,从一开始就将5G产品打造成云原生。 与Carames类似,他表示,云原生架构的一大好处是,通用功能不必被无数次重复。“我可以专注于网络功能而不需要专注于日志之类的事情。” 云原生的另一个好处是简化了运维,并加快了引入新功能的步伐。”“亚马逊每天都会推出几十项服务,电信公司渴望能跟上这一步伐。爱立信决定采用云原生流程进行内部软件开发。” 原文链接: https://www.fiercetelecom.com/telecom/cloud-native-special-report 以上是关于Redis 使用 List 实现消息队列的利与弊的主要内容,如果未能解决你的问题,请参考以下文章 RedissonClient redissonClient;
final REDIS_MQ = * 发送消息到队列头部
*
* @param message
*/
sendMessage(message)
RBlockingDeque<
blockingDeque.putFirst(message);
log.info( (InterruptedException e)
e.printStackTrace();
* 从队列尾部阻塞读取消息,若没有消息,线程就会阻塞等待新消息插入,防止 CPU 空转
*/
onMessage()
RBlockingDeque< (
message = blockingDeque.takeLast();
log.info( (InterruptedException e)
e.printStackTrace();
QueueService queueService;
InterruptedException
Thread(() ->
(i = queueService.sendMessage(+ i);
).start();
Thread(() -> queueService.onMessage()).start();
Thread.currentThread().join();
总结
云原生的利与弊