国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

消息隊(duì)列如何選擇?Kafka、Pulsar、RabbitMQ還是...

這篇具有很好參考價(jià)值的文章主要介紹了消息隊(duì)列如何選擇?Kafka、Pulsar、RabbitMQ還是...。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

公眾號:MCNU云原生,歡迎搜索關(guān)注,更多干貨,第一時(shí)間掌握!

消息隊(duì)列是當(dāng)代分布式系統(tǒng)架構(gòu)中非常重要的一部分,在應(yīng)用解耦、流量削峰、異步通信等方面有非常多的應(yīng)用場景。目前最為我們所熟知的消息隊(duì)列有:ActiveMQ、Kafka、RabbitMQ、Pulsar和RocketMQ,他們都有哪些優(yōu)勢和劣勢, 我們應(yīng)該如何選擇呢?相信這是擺在很多開發(fā)者面前的問題。

本文試圖對這些廣為人知的消息隊(duì)列進(jìn)行各方面的比對,為開發(fā)者提供選擇參考。

一、各消息隊(duì)列的簡介

1.1、ActiveMQ

Apache ActiveMQ是一個(gè)開源的、基于Java的消息代理(message broker)軟件,實(shí)現(xiàn)了Java Message Service (JMS) 規(guī)范,同時(shí)支持多種協(xié)議和編程語言。它可以在分布式系統(tǒng)中作為消息傳遞的中間件,為不同的應(yīng)用程序提供異步通信機(jī)制。

kafka、rabbitmq、pulsar,消息隊(duì)列,Kafka,kafka,rabbitmq,pulsar,rocketmq

ActiveMQ使用一種稱為“發(fā)布-訂閱”的消息模式,其中消息發(fā)布者發(fā)布消息到特定的主題(Topic)中,訂閱者可以從這些主題中接收消息。此外,ActiveMQ還支持“點(diǎn)對點(diǎn)”模式,其中每個(gè)消息發(fā)送到特定的隊(duì)列(Queue),只有一個(gè)消費(fèi)者可以從隊(duì)列中接收并處理這個(gè)消息。

ActiveMQ支持多種協(xié)議,包括OpenWire、STOMP、MQTT和AMQP等,這使得它可以與不同的編程語言和平臺集成,并提供了廣泛的靈活性和可擴(kuò)展性。此外,ActiveMQ還提供了許多高級功能,如事務(wù)、持久化、負(fù)載均衡、故障轉(zhuǎn)移和安全性等,以滿足各種企業(yè)級應(yīng)用程序的需求。

總之,ActiveMQ是一個(gè)功能強(qiáng)大、可靠性高、可擴(kuò)展性強(qiáng)的消息代理軟件,廣泛應(yīng)用于企業(yè)級系統(tǒng)、分布式系統(tǒng)、物聯(lián)網(wǎng)(IoT)和云計(jì)算等領(lǐng)域。

1.2、Kafka

Kafka是由Apache軟件基金會旗下的一個(gè)分布式流處理平臺和消息隊(duì)列系統(tǒng),可以處理大規(guī)模的數(shù)據(jù)流和實(shí)時(shí)消息流。主要用于大規(guī)模數(shù)據(jù)處理和流式處理場景,特別是在日志處理領(lǐng)域,應(yīng)用非常廣泛。Kafka 通過高效的分區(qū)和副本機(jī)制保證了高可用性和數(shù)據(jù)可靠性。它也提供了非常豐富的生態(tài)系統(tǒng),支持海量數(shù)據(jù)的實(shí)時(shí)處理,是大數(shù)據(jù)領(lǐng)域當(dāng)之無愧的“靚仔”。

kafka、rabbitmq、pulsar,消息隊(duì)列,Kafka,kafka,rabbitmq,pulsar,rocketmq

Kafka最初是由LinkedIn開發(fā),作為一種可擴(kuò)展、高可靠性的消息傳遞系統(tǒng)而設(shè)計(jì)。它具有以下主要特點(diǎn):

  1. 分布式系統(tǒng):Kafka是一個(gè)分布式系統(tǒng),可以在多個(gè)節(jié)點(diǎn)上部署,提供高可用性和可擴(kuò)展性。
  2. 高吞吐量:Kafka能夠處理每秒數(shù)百萬條消息,因此非常適合處理大量的實(shí)時(shí)數(shù)據(jù)流。
  3. 持久性存儲:Kafka可以持久性地存儲數(shù)據(jù),這意味著即使在數(shù)據(jù)傳輸中斷或系統(tǒng)崩潰時(shí),數(shù)據(jù)也不會丟失。
  4. 多副本備份:Kafka允許在多個(gè)節(jié)點(diǎn)上備份數(shù)據(jù),從而保證數(shù)據(jù)的高可用性和容錯(cuò)性。
  5. 支持流處理:Kafka可以與流處理框架(如Apache Spark和Apache Storm)結(jié)合使用,實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)分析和處理。
  6. 可擴(kuò)展性:Kafka可以在需要時(shí)增加節(jié)點(diǎn),以滿足不斷增長的數(shù)據(jù)處理需求。
1.3、RabbitMQ

RabbitMQ是一種開源的消息隊(duì)列軟件,可以用于構(gòu)建高效、可擴(kuò)展的分布式系統(tǒng)。它是一種基于AMQP(高級消息隊(duì)列協(xié)議)的消息代理,支持多種編程語言,并提供了豐富的特性和插件,使得它可以應(yīng)用于各種場景。

RabbitMQ的基本概念是生產(chǎn)者(producer)、消費(fèi)者(consumer)、消息隊(duì)列(queue)和交換機(jī)(exchange)。生產(chǎn)者將消息發(fā)送到交換機(jī),交換機(jī)根據(jù)預(yù)先定義的路由規(guī)則將消息發(fā)送到對應(yīng)的隊(duì)列中,消費(fèi)者從隊(duì)列中獲取消息進(jìn)行處理。RabbitMQ還支持多種交換機(jī)類型,包括direct、fanout、topic和headers等,可以根據(jù)需求靈活選擇使用。

kafka、rabbitmq、pulsar,消息隊(duì)列,Kafka,kafka,rabbitmq,pulsar,rocketmq

除了基本的消息傳遞功能,RabbitMQ還提供了許多高級功能,如消息確認(rèn)機(jī)制、消息持久化、消息優(yōu)先級、消息過期時(shí)間等,以及針對性能和可靠性優(yōu)化的各種參數(shù)配置。

RabbitMQ的應(yīng)用場景非常廣泛,包括微服務(wù)架構(gòu)、異步任務(wù)處理、實(shí)時(shí)數(shù)據(jù)處理、日志處理、監(jiān)控告警等領(lǐng)域。它已經(jīng)被廣泛應(yīng)用于企業(yè)級應(yīng)用系統(tǒng)和互聯(lián)網(wǎng)公司中,如GitHub、華為云、微軟等。

1.4、RocketMQ

RocketMQ是一種分布式消息中間件,由阿里巴巴集團(tuán)開發(fā)并開源。它是一種高吞吐量、高可用性、可擴(kuò)展性強(qiáng)的消息隊(duì)列系統(tǒng),可用于支持各種應(yīng)用場景,如大規(guī)模在線服務(wù)、實(shí)時(shí)數(shù)據(jù)處理、日志收集、數(shù)據(jù)緩存等。

RocketMQ支持發(fā)布/訂閱模式和點(diǎn)對點(diǎn)模式,并提供了豐富的消息傳遞特性,如延遲消息、事務(wù)消息、批量消息、順序消息等。RocketMQ還提供了各種高級功能,如消息過濾、消息追蹤、動(dòng)態(tài)擴(kuò)展、消息重試等。

kafka、rabbitmq、pulsar,消息隊(duì)列,Kafka,kafka,rabbitmq,pulsar,rocketmq

RocketMQ的架構(gòu)非常靈活和可擴(kuò)展,由四個(gè)核心組件組成:NameServer、Broker、Producer和Consumer。NameServer用于管理Broker的元數(shù)據(jù)信息,Broker用于存儲和傳遞消息,Producer負(fù)責(zé)向Broker發(fā)送消息,Consumer負(fù)責(zé)從Broker中獲取消息進(jìn)行消費(fèi)。

RocketMQ在性能方面表現(xiàn)非常優(yōu)異,它能夠支持每秒百萬級別的消息吞吐量,同時(shí)也提供了豐富的監(jiān)控和管理工具,幫助用戶更好地管理和監(jiān)控消息隊(duì)列系統(tǒng)。

目前,RocketMQ已經(jīng)成為了阿里巴巴集團(tuán)內(nèi)部的消息中間件標(biāo)準(zhǔn),并且在國內(nèi)外的許多企業(yè)中得到了廣泛應(yīng)用。

1.5、Pulsar

Pulsar是一種開源的分布式消息中間件系統(tǒng),由Apache Software Foundation維護(hù)和支持。它是一種高度可擴(kuò)展、高性能、多租戶、靈活的消息系統(tǒng),支持多種消息傳遞模式和協(xié)議,包括發(fā)布/訂閱、隊(duì)列、Kafka協(xié)議等。

kafka、rabbitmq、pulsar,消息隊(duì)列,Kafka,kafka,rabbitmq,pulsar,rocketmq

Pulsar的架構(gòu)基于分層的設(shè)計(jì),由三個(gè)核心組件組成:Broker、ZooKeeper和BookKeeper。Broker負(fù)責(zé)接收、存儲和路由消息,ZooKeeper用于管理Broker和集群的元數(shù)據(jù)信息,BookKeeper用于存儲消息的副本和保證數(shù)據(jù)可靠性。

Pulsar支持多租戶,可以將多個(gè)租戶的消息隔離開來,并為每個(gè)租戶提供獨(dú)立的資源和安全保障。此外,Pulsar還支持動(dòng)態(tài)擴(kuò)展、多數(shù)據(jù)中心部署、消息級別的容錯(cuò)和故障轉(zhuǎn)移等高級功能。

Pulsar在性能方面表現(xiàn)出色,它可以支持每秒數(shù)百萬條消息的吞吐量,同時(shí)也提供了豐富的管理和監(jiān)控工具,如Pulsar Manager和Prometheus等,幫助用戶更好地管理和監(jiān)控消息隊(duì)列系統(tǒng)。

Pulsar的應(yīng)用場景非常廣泛,包括實(shí)時(shí)數(shù)據(jù)處理、消息傳遞、日志收集、事件驅(qū)動(dòng)架構(gòu)等。目前,Pulsar已經(jīng)被許多企業(yè)和組織廣泛采用,如Yahoo、Tencent、Salesforce等。

二、AMQP協(xié)議

我想特別再提一下QMQP協(xié)議,因?yàn)檫@是消息隊(duì)列的標(biāo)準(zhǔn)協(xié)議,有舉足輕重的地位,然而目前有些消息隊(duì)列支持,有些卻不完全支持。

AMQP(Advanced Message Queuing Protocol)是一種開放標(biāo)準(zhǔn)的消息隊(duì)列協(xié)議,它旨在提供高級的消息傳遞功能,如消息路由、消息確認(rèn)、事務(wù)處理和安全性等。

AMQP協(xié)議由多個(gè)組件組成,包括生產(chǎn)者、消費(fèi)者、交換器、隊(duì)列和代理服務(wù)器。生產(chǎn)者向交換器發(fā)布消息,交換器負(fù)責(zé)將消息路由到特定的隊(duì)列中。消費(fèi)者可以從隊(duì)列中接收消息,并向交換器發(fā)送確認(rèn)消息。

AMQP協(xié)議的一個(gè)重要特性是它的可互操作性,即不同供應(yīng)商的AMQP實(shí)現(xiàn)可以相互通信。這種互操作性是通過AMQP協(xié)議的嚴(yán)格定義和規(guī)范來實(shí)現(xiàn)的,確保了不同實(shí)現(xiàn)之間的兼容性。

AMQP協(xié)議也提供了高級的消息傳遞功能,如事務(wù)處理和安全性。事務(wù)處理功能允許消息的生產(chǎn)者和消費(fèi)者以原子操作的方式處理消息,確保消息的可靠性和一致性。安全性功能包括消息加密和身份驗(yàn)證等,確保消息的保密性和完整性。

目前,AMQP協(xié)議已經(jīng)得到了廣泛的應(yīng)用,許多消息隊(duì)列系統(tǒng)如RabbitMQ、ActiveMQ、Qpid等都支持AMQP協(xié)議,而Kafka與Pulsar則不支持標(biāo)準(zhǔn)AMQP。以Kafka為例,Kafka沒有交換器或隊(duì)列的概念,因此也沒有類似于AMQP中的路由和轉(zhuǎn)發(fā)機(jī)制。

不過雖然Kafka不支持AMQP協(xié)議,但它提供了自己的API和協(xié)議,支持多種編程語言和客戶端庫,方便開發(fā)者使用Kafka進(jìn)行消息傳遞。同時(shí),許多消息隊(duì)列系統(tǒng)和中間件都可以通過適配器或轉(zhuǎn)換器來支持Kafka協(xié)議,使得Kafka在實(shí)際應(yīng)用中得到了廣泛的應(yīng)用。

三、消息隊(duì)列對比

ActiveMQ RabbitMQ RocketMQ Kafka Pulsar
單機(jī)吞吐量 較低(萬級) 一般(萬級) 高(十萬級) 高(十萬級) 高(十萬級)
開發(fā)語言 Java Erlang Java Java/Scala Java
維護(hù)者 Apache Spring Apache
(Alibaba)
Apache
(Confluent)
Apache
(StreamNative)
Star數(shù)量 2.1K 10.4K 18.8K 24.3K 12.4K
Contributor 126 246 438 991 600
社區(qū)活躍度 較高
消費(fèi)模式 P2P、Pub-Sub direct、topic、Headers、fanout 基于Topic和MessageTag的的Pub-Sub 基于Topic的Pub-Sub 基于Topic的Pub-Sub,支持**獨(dú)占(exclusive)、共享(shared)、災(zāi)備(failover)、key共享(key_shared)**4種模式
持久化 支持(?。?/td> 支持(?。?/td> 支持(大) 支持(大) 支持(大)
順序消息 不支持 不支持 支持 支持 支持
性能穩(wěn)定性 一般 較差 一般
集群支持 主備模式 復(fù)制模式 主備模式 Leader-Slave每臺既是master也是slave,集群可擴(kuò)展性強(qiáng) 集群模式,broker無狀態(tài),易遷移,支持跨數(shù)據(jù)中心
管理界面 一般 較好 一般
計(jì)算和存儲分離 不支持 不支持 不支持 不支持 支持
AMQP支持 支持 支持 支持 不完全支持 不完全支持

注:作為 LShift 和 CohesiveFT 于 2007 年成立的合資企業(yè),RabbitMQ 于 2010 年 4 月被 VMware 旗下的SpringSource 收購。

四、消息隊(duì)列選擇建議

綜上所述,選擇哪一種消息中間件需要根據(jù)具體的應(yīng)用場景和需求來決定。

ActiveMQ作為老牌的消息隊(duì)列,吞吐量比較低,也缺少大規(guī)模吞吐量場景的驗(yàn)證、社區(qū)活躍度也很低,數(shù)據(jù)持久化的支持一般,目前漸漸被淘汰,已經(jīng)不是主流了,不太建議選擇了。

RabbitMQ和RocketMQ社區(qū)比較活躍,吞吐量比較高,支持AMQP,穩(wěn)定性也比較好,如果你的場景是應(yīng)用需要可靠性消息傳遞和較高的并發(fā),那么這兩者是比較好的選擇。

要注意,rabbitMQ是使用Erlang語言開發(fā)的,而RocketMQ則使用Java語言開發(fā),所以如果是需要深度研究掌握的話,要考慮團(tuán)隊(duì)中是否有Erlang工程師,如果不具備相關(guān)的人才儲備的話,更建議選擇RocketMQ。當(dāng)然,如果只是小團(tuán)隊(duì)簡單使用,則rabbitMQ是一個(gè)挺好的選擇。

如果是大數(shù)據(jù)領(lǐng)域的實(shí)時(shí)計(jì)算、日志采集等場景,則選擇Kafka和Pulsar都是一個(gè)不錯(cuò)的選擇,Kafka經(jīng)歷了超大規(guī)模應(yīng)用的驗(yàn)證,社區(qū)活躍度很高,性能也非常高,幾乎是全世界這個(gè)領(lǐng)域的事實(shí)性的標(biāo)準(zhǔn)。

Pulsar作為新興的分布式消息傳遞系統(tǒng),可擴(kuò)展性強(qiáng)、性能高、社區(qū)活躍度也很高,最重要的是支持存儲和計(jì)算分離,這在云原生下是非常出色的一項(xiàng)能力,并且天然支持跨數(shù)據(jù)中心的容災(zāi),目前的應(yīng)用也越來越廣泛,如果集群對于持久化要求高,數(shù)據(jù)級別是超大規(guī)模,對于機(jī)器成本敏感,且支持多數(shù)據(jù)中心容災(zāi),則建議選擇Pulsar。文章來源地址http://www.zghlxwxcb.cn/news/detail-764748.html

到了這里,關(guān)于消息隊(duì)列如何選擇?Kafka、Pulsar、RabbitMQ還是...的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 怎么去選消息隊(duì)列? Kafka vs. RabbitMQ

    怎么去選消息隊(duì)列? Kafka vs. RabbitMQ

    在上周,我們討論了使用消息隊(duì)列的好處。然后我們回顧了消息隊(duì)列產(chǎn)品的發(fā)展歷史。如今,在項(xiàng)目中需要使用消息隊(duì)列時(shí),Apache Kafka似乎是首選產(chǎn)品。然而,考慮到特定需求時(shí),它并不總是最佳選擇。 基于數(shù)據(jù)庫的隊(duì)列 讓我們再次使用星巴克的例子。最重要的兩個(gè)需求是

    2024年02月11日
    瀏覽(17)
  • Go操作各大消息隊(duì)列教程(RabbitMQ、Kafka)

    Go操作各大消息隊(duì)列教程(RabbitMQ、Kafka)

    1.1 概念 ①基本名詞 當(dāng)前市面上mq的產(chǎn)品很多,比如RabbitMQ、Kafka、ActiveMQ、ZeroMQ和阿里巴巴捐獻(xiàn)給Apache的RocketMQ。甚至連redis這種NoSQL都支持MQ的功能。 Broker:表示消息隊(duì)列服務(wù)實(shí)體 Virtual Host:虛擬主機(jī)。標(biāo)識一批交換機(jī)、消息隊(duì)列和相關(guān)對象。vhost是AMQP概念的基礎(chǔ),必須在鏈

    2024年02月11日
    瀏覽(42)
  • 【面試需了解之消息隊(duì)列】RocketMQ、kafka、RabbitMQ概述

    消息隊(duì)列說明:RocketMQ、kafka、RabbitMQ概述及關(guān)鍵概念 概述 消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件,主要解決應(yīng)用耦合,異步消息,流量控制等問題。實(shí)現(xiàn)高性能、高可用、可伸縮和最終一致性架構(gòu),是大型分布式系統(tǒng)不可缺少的中間件 作用 異構(gòu)系統(tǒng)消息傳遞:上游系統(tǒng)

    2024年02月10日
    瀏覽(62)
  • 分布式消息隊(duì)列:Kafka vs RabbitMQ vs ActiveMQ

    在現(xiàn)代分布式系統(tǒng)中,消息隊(duì)列是一種常見的異步通信模式,它可以幫助系統(tǒng)處理高并發(fā)、高可用性以及容錯(cuò)等問題。在這篇文章中,我們將深入探討三種流行的分布式消息隊(duì)列:Apache Kafka、RabbitMQ和ActiveMQ。我們將討論它們的核心概念、算法原理、特點(diǎn)以及使用場景。 隨著

    2024年02月02日
    瀏覽(19)
  • 基于golang多消息隊(duì)列中間件的封裝nsq,rabbitmq,kafka

    場景 在創(chuàng)建個(gè)人的公共方法庫中有這樣一個(gè)需求,就是不同的項(xiàng)目會用到不同的消息隊(duì)列中間件,我的思路把所有的消息隊(duì)列中間件進(jìn)行封裝一個(gè)消息隊(duì)列接口(MQer)有兩個(gè)方法一個(gè)生產(chǎn)一個(gè)消費(fèi),那么在實(shí)例化對象的時(shí)候根據(jù)配置文件指定當(dāng)前項(xiàng)目使用的那個(gè)消息隊(duì)列中

    2024年02月14日
    瀏覽(93)
  • Kafka、RabbitMQ、Pulsar、RocketMQ基本原理和選型

    Kafka、RabbitMQ、Pulsar、RocketMQ基本原理和選型

    消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件,主要解決應(yīng)用耦合,異步消息,削峰填谷等問題。實(shí)現(xiàn)高性能、高可用、可伸縮和最終一致性架構(gòu)。 使用消息隊(duì)列能夠獲得如下好處,能夠在應(yīng)用與應(yīng)用之間降低依賴和實(shí)時(shí)性要求。 解耦:多個(gè)服務(wù)監(jiān)聽、處理同一條消息,避免

    2024年04月23日
    瀏覽(18)
  • Django中如何配置kafka消息隊(duì)列

    當(dāng)你的web應(yīng)用程序成長到一定規(guī)模時(shí),你可能需要使用消息隊(duì)列來處理異步任務(wù)、事件或在多個(gè)服務(wù)之間傳遞消息。 Kafka是一個(gè)開源的消息隊(duì)列系統(tǒng),通過可擴(kuò)展的、分布式的、高可用的、高吞吐量的平臺,提供快速消息處理的能力。 下面就是如何在Django中配置Kafka消息隊(duì)列

    2024年02月12日
    瀏覽(13)
  • 【消息隊(duì)列】Kafka如何實(shí)現(xiàn)高性能IO

    【消息隊(duì)列】Kafka如何實(shí)現(xiàn)高性能IO

    我們直到Kafka是一個(gè)自稱高性能的消息隊(duì)列引擎,一般來說對于中間件的設(shè)計(jì)需要從計(jì)算、存儲、網(wǎng)絡(luò)三方面進(jìn)行下手,而消息從產(chǎn)生到消費(fèi),也會經(jīng)歷多個(gè)流程,比如在生產(chǎn)者端采用異步同步方式發(fā)送,采用高效的壓縮算法,高效的序列化方式,以及網(wǎng)絡(luò)IO等。那么Kafka主要

    2023年04月13日
    瀏覽(27)
  • 消息隊(duì)列-Kafka-消費(fèi)方如何分區(qū)與分區(qū)重平衡

    消息隊(duì)列-Kafka-消費(fèi)方如何分區(qū)與分區(qū)重平衡

    消費(fèi)分區(qū) 資料來源于網(wǎng)絡(luò) 消費(fèi)者訂閱的入口:KafkaConsumer#subscribe 消費(fèi)者消費(fèi)的入口:KafkaConsumer#poll 處理流程: 對元數(shù)據(jù)重平衡處理:KafkaConsumer#updateAssignmentMetadataIfNeeded 協(xié)調(diào)器的拉取處理:onsumerCoordinator#poll 執(zhí)行已完成的【消費(fèi)進(jìn)度】提交請求的回調(diào)函數(shù):invokeCompletedOff

    2024年04月14日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包