亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    15個PHP關于高并發(fā)的面試題(總結(jié))

    15個PHP關于高并發(fā)的面試題(總結(jié))

    1、什么是rabbitmq

    采用AMQP高級消息隊列協(xié)議的一種消息隊列技術(shù),最大的特點就是消費并不需要確保提供方存在,實現(xiàn)了服務之間的高度解耦

    2、為什么要使用rabbitmq

    1. 在分布式系統(tǒng)下具備異步,削峰,負載均衡等一系列高級功能;

    2. 擁有持久化的機制,進程消息,隊列中的信息也可以保存下來。

    3. 實現(xiàn)消費者和生產(chǎn)者之間的解耦。

    4. 對于高并發(fā)場景下,利用消息隊列可以使得同步訪問變?yōu)榇性L問達到一定量的限流,利于數(shù)據(jù)庫的操作。

    可以使用消息隊列達到異步下單的效果,排隊中,后臺進行邏輯下單

    3、使用rabbitmq的場景

    1. 服務間異步通信

    2. 順序消費

    3. 定時任務

    4. 請求削峰

    4、如何確保消息正確地發(fā)送至RabbitMQ? 如何確保消息接收方消費了消息?

    發(fā)送方確認模式

    將信道設置成confirm模式(發(fā)送方確認模式),則所有在信道上發(fā)布的消息都會被指派一個唯一的ID。

    一旦消息被投遞到目的隊列后,或者消息被寫入磁盤后(可持久化的消息),信道會發(fā)送一個確認給生產(chǎn)者(包含消息唯一ID)。

    如果RabbitMQ發(fā)生內(nèi)部錯誤從而導致消息丟失,會發(fā)送一條nack(not acknowledged,未確認)消息。

    發(fā)送方確認模式是異步的,生產(chǎn)者應用程序在等待確認的同時,可以繼續(xù)發(fā)送消息。當確認消息到達生產(chǎn)者應用程序,生產(chǎn)者應用程序的回調(diào)方法就會被觸發(fā)來處理確認消息。

    接收方確認機制

    接收方消息確認機制

    消費者接收每一條消息后都必須進行確認(消息接收和消息確認是兩個不同操作)。只有消費者確認了消息,RabbitMQ才能安全地把消息從隊列中刪除。

    這里并沒有用到超時機制,RabbitMQ僅通過Consumer的連接中斷來確認是否需要重新發(fā)送消息。也就是說,只要連接不中斷,RabbitMQ給了Consumer足夠長的時間來處理消息。保證數(shù)據(jù)的最終一致性;

    下面羅列幾種特殊情況

    如果消費者接收到消息,在確認之前斷開了連接或取消訂閱,RabbitMQ會認為消息沒有被分發(fā),然后重新分發(fā)給下一個訂閱的消費者。(可能存在消息重復消費的隱患,需要去重)

    如果消費者接收到消息卻沒有確認消息,連接也未斷開,則RabbitMQ認為該消費者繁忙,將不會給該消費者分發(fā)

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號