欢迎访问乐洁网络!

乐洁网络

您现在的位置是: 首页 > 网站优化 >详情

网站架构优化之消息队列篇,消息队列 http

发布时间:2024-03-15 19:31:41 网站优化 0次 作者:乐洁网络

大家好,今天小编关注到一个比较有意思的话题,就是关于网站架构优化之消息队列篇的问题,于是小编就整理了2个相关介绍网站架构优化之消息队列篇的解答,让我们一起看看吧。

消息队列是怎么实现的,能给出思路?

我想你的问题是想问“如何自己设计”一套消息队列框架,对吗?

网站架构优化之消息队列篇,消息队列 http

现实中已经有了很多面向不同系统的消息队列软件,成熟的消息队列如kafka,rocketmq等。其实现语言也是多种多样,你可以从Github之类的地方获得这些软件来学习和使用。

而自己设计一套消息队列,因为面对不同的应用场景,其要求是不一样的,没有能够适用所有场景的消息队列。而下面我简单讲讲一个普通的、稍微完善的消息队列框架应该设计哪些东西,主要介绍一下基本功能,思想和设计。希望能帮到你。

消息队列主要是为了系统解耦,先说说设计上需要考虑哪些。

1、一个比较完整的消息队列需要考虑以下功能(不完全列表)

消息收发机制、消息堆积处理、、消息持久化、消息可靠投递(至少保证一次投递,以及重复投递的处理)、Topic支持(唯一或多Topic)、多消费者投递(同一Topic消息)、投递回溯、集群和负载均衡等性能设计、事务支持、监控和告警等维护功能

大概有这些吧。

以上是设计需要考虑的东东。

再简单说说实现要考虑什么。

2、实现的话,主要从 协议、转储、消费 简单说说。

看你使用什么编程语言,参考一下

消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。

1. 线程使用场景

(1)流水线方式。根据业务特点,将一个流程的处理分割成多个线程,形成流水线的处理方式。产生的结果:延长单一流程的处理时间,提高系统整体的吞吐能力。

(2)线程池方式。针对处理时间比较长且没有内蕴状态的线程,使用线程池方式分流消息,加快对线程消息的处理,避免其成为系统瓶颈。

线程使用的关键是线程消息队列、线程锁、智能指针的使用。其中以线程消息队列最为重要。

简单的线程消息队列实现 - 闯爷88 - 博客园

https://www.cnblogs.com/lijingcheng/p/4454876.html

分布式、中间件和消息队列到底是怎么的一种工作模式?

分别解释一下什么是分布式、中间件和消息队列;如果有说的不对的地方,请留言指正:

一个业务被拆成多个子业务,部署在多台服务器上,这个就叫做分布式

我有一个系统A,提供一个很简单的接口,根据员工编号查询员工姓名和他的考勤记录。

我拆开两个系统:人员管理系统B和考勤系统C,分别部署在两台服务器上。

这个需求,需要调用一下系统B,再调用一下系统C,最后得到需要的结果。

这个就是分布式。

将具体业务和底层逻辑解耦的软件。

举个例子:

我要开一家炸鸡店(业务端),需要鸡肉,有很多养鸡场(底层),我需要一个一个比较价钱,然后找一家性价比高的养鸡场合作(适配不同底层逻辑)。可能一段时间后,我需要重新选一家养鸡场合作,进货方式、交易方式等要重新制定(重新适配)。

分布式:

用于实现任务的分担,比如之前有一个办业务的窗口,随着客流量多,多开几个办理业务窗口,这样多个窗口,同时工作,分担任务。

这时会出现问题了,那么多个窗口,客户来了该去那个窗口,这个时候会让客户去取号机,取号,其实取号机就是中间件的角色,只是类似消息队列的中间件。

分布式要解决的问题很多,其中两个最重要的是:分布式锁和分布式事务。可以参考我发的文章。

中间件:

简单来说就是一座桥,是连接各方的中枢。

分布式就是不部署在一个进程中,比如多台机器,甚至同台机器的不同进程中。

中间件除了自己写的代码和一些工具类库都可以叫中间件,比如数据库,开发框架,缓存,队列等

消息队列就是一个中间件,有生产的有消费的还有个消息暂存的,比如超市货架,超市往货架放东西,顾客取东西,货架就是暂存货物。

接触分布式和消息中间件几年的时间了,有幸回答你的问题!

什么是分布式?相对于以前单一系统,所有的功能,服务都部署在一台服务器上,一挂全挂!分布式采用了把系统提供的服务分布在不同的服务器上的策略,这样的架构就叫做分布式架构!

分布式架构有什么好处呢?

1,单个服务宕机不影响别的服务正常运行!

2,单个节点所有的负载分布均衡到了多台服务器上!

3,各服务之间相互透明,实现解耦!

现在的用户流量越来越大,所以分布式基本是以后架构发展必须的一个趋势!

分布之后问题来了,以前的单一系统,所有服务都在同一个同一个机器,在同一个内存里面,直接调用即可,但是现在分布在不同的jvm中,怎么调用呢?或者说数据怎么传输?

消息中间件应运而生!

目前我用过的消息中间件有activemq,ons,kafka,其实所有的消息中间件本质都一样,

到此,以上就是小编对于网站架构优化之消息队列篇的问题就介绍到这了,希望介绍关于网站架构优化之消息队列篇的2点解答对大家有用。