在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Apache Pulsar的特性

科技綠洲 ? 來源:了不起 ? 作者:了不起 ? 2023-09-25 11:45 ? 次閱讀

Apache Pulsar

Apache Pulsar是Apache軟件基金會頂級項目,是下一代云原生分布式消息流平臺。

Pulsar 作為下一代云原生分布式消息流平臺,支持 多租戶、持久化存儲、多機房跨區(qū)域數(shù)據(jù)復制 ,具有強一致性、高吞吐以及低延時的高可擴展流數(shù)據(jù)存儲特性, 內(nèi)置諸多其他系統(tǒng)商業(yè)版本才有的特性,是云原生時代解決實時消息流數(shù)據(jù)傳輸、存儲和計算的最佳解決方案。

圖片

Pulsar簡介

  • 系統(tǒng)架構(gòu)

圖片

  • 功能特色
    租戶和命名空間(namespace)是 Pulsar 支持多租戶的兩個核心概念。在租戶級別,Pulsar 為特定的租戶預留合適的存儲空間、應用授權(quán)與認證機制。在命名空間級別,Pulsar 有一系列的配置策略(policy),包括存儲配額、流控、消息過期策略和命名空間之間的隔離策略。
    Pulsar 做了隊列模型和流模型的統(tǒng)一,在 Topic 級別只需保存一份數(shù)據(jù),同一份數(shù)據(jù)可多次消費。以流式、隊列等方式計算不同的訂閱模型大大提升了靈活度。
    Pulsar 使用計算與存儲分離的云原生架構(gòu),數(shù)據(jù)從 Broker 搬離,存在共享存儲內(nèi)部。上層是無狀態(tài) Broker,復制消息分發(fā)和服務;下層是持久化的存儲層 Bookie 集群。Pulsar 存儲是分片的,這種構(gòu)架可以避免擴容時受限制,實現(xiàn)數(shù)據(jù)的獨立擴展和快速恢復。
    Pulsar 原生支持跨地域復制,因此 Pulsar 可以跨不同地理位置的數(shù)據(jù)中心復制數(shù)據(jù)。當數(shù)據(jù)中心中斷或網(wǎng)絡分區(qū)時,在多個數(shù)據(jù)中心存有消息副本尤為重要,提高可用性。
    Pulsar Functions 是基于 Pulsar 的輕量級流處理方式。Pulsar Functions 直接部署在 broker 節(jié)點上(或作為 Kubernetes 集群中的容器)。通過 Pulsar Functions,Pulsar 可以直接解決許多流處理任務,簡化操作。
  • 支持客戶端
    • Java 客戶端
    • C++ 客戶端
    • .Net/C# 客戶端
    • Go 客戶端
    • NodeJS 客戶端
    • Ruby 客戶端

Pulsar安裝與部署

目前Pulsar不支持Window,下面通過Docker進行安裝,可以參考官網(wǎng)https://pulsar.apache.org/docs/next/getting-started-docker/

同時可以安裝Pulsar Manager,具體操作可以參考官方文檔 https://pulsar.apache.org/docs/next/administration-pulsar-manager/

其中Pulsar Manager 是一個網(wǎng)頁式可視化管理與監(jiān)測工具,支持多環(huán)境下的動態(tài)配置??捎糜诠芾砗捅O(jiān)測租戶、命名空間、topic、訂閱、broker、集群等。

  1. window環(huán)境使用docker推薦使用Docker Desktop,和linux一樣可以通過docker命令管理鏡像、部署容器等操作。

打開并啟動Docker Desktop后,在終端執(zhí)行命令執(zhí)行

_> docker search pulsar

可以查詢到pulsar相關(guān)的鏡像

圖片

  1. 鏡像下載

這里我們選擇分別下載紅框的兩個鏡像,執(zhí)行命令

_> docker pull apachepulsar/pulsar _> docker pull apachepulsar/pulsar-manager

  1. 啟動
  • 啟動Pulsar
docker run -it -p 6650:6650 -p 8080:8080 
      --mount source=pulsardata,target=/pulsar/data 
      --mount source=pulsarconf,target=/pulsar/conf 
      apachepulsar/pulsar bin/pulsar standalone
  • 啟動Pulsar Manager
docker run --name pulsar-manager -dit 
      -p 9527:9527 -p 7750:7750 
      -e SPRING_CONFIGURATION_FILE=/pulsar-manager/pulsar-manager/application.properties 
      apachepulsar/pulsar-manager

添加用戶:

for /f "tokens=1" %A in ('curl http://localhost:7750/pulsar-manager/csrf-token') do set CSRF_TOKEN=%A
curl -X PUT "X-XSRF-TOKEN: %CSRF_TOKEN%"   -H "Cookie: XSRF-TOKEN=%CSRF_TOKEN%;" 
  -H "Content-Type: application/json" -d "{"name": "admin", "password": "123456", "description": "super user admin", "email": "admin@test.com"}" 
  "http://localhost:7750/pulsar-manager/users/superuser"

訪問:

http://localhost:9527/ 
用戶名密碼:admin/123456

配置environments:

這里需要保證Pulsar Manager應用服務能夠訪問到Pulsar應用,由于都是通過Docker部署,配置Service URL需要使用網(wǎng)絡IP,不要用localhost。

圖片

管理界面:

圖片

Pulsar與SpringBoot集成

  • springboot version : 2.3.7.RELEASE
  • pulsar client: 2.10.2
  1. 通過Properties簡單定義一些Broker相關(guān)的屬性
@Data
@ConfigurationProperties(prefix = "pulsar")
public class PulsarProperties {
    
    private String cluster;
    
    private String namespace;

    private String serverUrl;

    private String token;
}
  1. 通過配置定義了一些常用的組件,比如生產(chǎn)、消費工廠
@Configuration
@EnableConfigurationProperties({PulsarProperties.class})
public class PulsarBootstrapConfiguration {

    private final PulsarProperties properties;

    public PulsarBootstrapConfiguration(PulsarProperties properties) {
        this.properties = properties;
    }

    @Bean(destroyMethod = "close")
    public PulsarClient pulsarClient() throws PulsarClientException {
        ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(properties.getServerUrl());
        return clientBuilder.build();
    }

    @Bean
    public PulsarProducerFactory pulsarProducerFactory() throws PulsarClientException {
        return new PulsarProducerFactory(pulsarClient(), properties);
    }

    @Bean
    public PulsarConsumerFactory pulsarConsumerFactory() throws PulsarClientException {
        return new PulsarConsumerFactory(pulsarClient(), properties);
    }

}
  1. 啟動服務,在服務啟動后,通過實現(xiàn)SmartInitializingSingleton接口,完成容器基本啟動(不包含Lazy的Bean)后,開始對消費者Consumer監(jiān)聽
@Slf4j
@SpringBootApplication
public class PulsarApplication implements SmartInitializingSingleton {

    @Autowired
    private PulsarConsumerFactory consumerFactory;

    public static void main(String[] args) {
        SpringApplication.run(PulsarApplication.class,args);
    }

    @Override
    public void afterSingletonsInstantiated() {
        startConsumerListener();
    }

    private void startConsumerListener(){
        Consumer< String > consumer = createConsumer();
        if( consumer != null ){
            while (!Thread.currentThread().isInterrupted()){
                CompletableFuture< ? extends Message< ? >> completableFuture = consumer.receiveAsync();
                Message< ? > message = null;
                try {
                    message = completableFuture.get();
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                    log.error("錯誤",e);
                } catch (ExecutionException e) {
                    log.error("錯誤",e);
                }

                if( message!=null ){
                    try {
                        log.info(" 接收消息:{} ", message.getValue() );
                        consumer.acknowledge(message);
                    } catch (PulsarClientException e) {
                        consumer.negativeAcknowledge(message);
                        throw new RuntimeException(e);
                    }
                }
            }
        }
    }

    private Consumer< String > createConsumer() {
        try {
            return consumerFactory.getConsumer(Constants.TOPIC_DEMO);
        } catch (PulsarClientException e) {
            log.error("創(chuàng)建consumer出錯:{}", e.getMessage(),e);
        }
        return null;
    }
}
  1. 消息發(fā)送測試
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class PulsarBootTests {

    @Autowired
    private PulsarProducerFactory producerFactory;

    @Test
    public void sendMessage() throws PulsarClientException {
        Producer producer = producerFactory.getProducer(Constants.TOPIC_DEMO);

        producer.send(" 測試消息: " + new Date());

        producer.close();
    }

}
  1. 檢查消息接收情況
2023-02-05 12:05:14.043  INFO 23472 --- [ulsar-timer-6-1] o.a.p.c.impl.ConsumerStatsRecorderImpl   : [TOPIC_DEMO] [sub-TOPIC_DEMO] [7c2b2] Prefetched messages: 0 --- Consume throughput received: 0.02 msgs/s --- 0.00 Mbit/s --- Ack sent rate: 0.02 ack/s --- Failed messages: 0 --- batch messages: 0 ---Failed acks: 0
2023-02-05 12:06:16.425  INFO 23472 --- [           main] com.sucl.pulsar.PulsarApplication        :  接收消息: 測試消息: Sun Feb 05 12:06:16 CST 2023

結(jié)束語

該篇主要通過官網(wǎng)對Apache Pulsar做了簡單的了解與嘗試,同時基于SpringBoot,以簡單的示例代碼實現(xiàn)了消息的發(fā)送與接收,其中各個組件僅僅使用了默認的配置,在生產(chǎn)環(huán)境需要根據(jù)Pulsar的特性以及官方API使其具有擴展性與易用性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    1983

    瀏覽量

    65286
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4451

    瀏覽量

    86789
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    503

    瀏覽量

    22299
  • Apache
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    12604
收藏 人收藏

    評論

    相關(guān)推薦

    Apache Spark 1.6預覽版新特性展示

    日前,Databricks公司發(fā)布了一個Apache Spark主要版本的可用性。除了可用性、可移植性等幾個新的特性外,本次發(fā)布還提供了對尚未發(fā)布的Apache Spark 1.6預覽
    發(fā)表于 10-13 11:21 ?0次下載
    <b class='flag-5'>Apache</b> Spark 1.6預覽版新<b class='flag-5'>特性</b>展示

    10 lead Pulsar ADCs Evaluation Software

    10 lead Pulsar ADCs Evaluation Software
    發(fā)表于 02-01 13:17 ?0次下載
    10 lead <b class='flag-5'>Pulsar</b> ADCs Evaluation Software

    PulSAR ADC PMOD Labview Evaluation Software

    PulSAR ADC PMOD Labview Evaluation Software
    發(fā)表于 03-11 10:42 ?7次下載
    <b class='flag-5'>PulSAR</b> ADC PMOD Labview Evaluation Software

    AD7981:耐高溫、16位、600 kSPS PulSAR? ADC

    AD7981:耐高溫、16位、600 kSPS PulSAR? ADC
    發(fā)表于 03-19 13:25 ?3次下載
    AD7981:耐高溫、16位、600 kSPS <b class='flag-5'>PulSAR</b>? ADC

    AN-931: 了解PulSAR ADC支持電路

    AN-931: 了解PulSAR ADC支持電路
    發(fā)表于 03-20 21:48 ?5次下載
    AN-931: 了解<b class='flag-5'>PulSAR</b> ADC支持電路

    AD7960:18位、5 MSPS PulSAR

    AD7960:18位、5 MSPS PulSAR
    發(fā)表于 03-21 09:23 ?11次下載
    AD7960:18位、5 MSPS <b class='flag-5'>PulSAR</b>

    AD7625: 16位、6 MSPS、 PulSAR差分ADC

    AD7625: 16位、6 MSPS、 PulSAR差分ADC
    發(fā)表于 03-21 10:21 ?5次下載
    AD7625:  16位、6 MSPS、 <b class='flag-5'>PulSAR</b>差分ADC

    PULSAR模擬電壓可變衰減器特性

    輸入功率為+27DBM。PULSAR模擬電壓控制衰減器是雙向的:任何的SMA端口可適用于輸入。 特性 操作電流電壓:0至+8V(典型); 工作功率:=0DBM; 功率處理:最大+27DBM; 工作溫度
    發(fā)表于 11-10 15:38 ?955次閱讀

    Apache與Weblogic的整合

    Apache與Weblogic的整合(電源技術(shù)論文錄用后可以改作者嗎)-Apache與Weblogic的整合? ? ? ? ? ? ? ? ? ? ? ?
    發(fā)表于 08-31 11:24 ?7次下載
    <b class='flag-5'>Apache</b>與Weblogic的整合

    Apache2+tomcat5.5集群及Apache負載均衡配置實例

    Apache2+tomcat5.5集群及Apache負載均衡配置實例(新星電源技術(shù)有限公司)-Apache2+tomcat5.5集群及Apache負載均衡配置實例? ? ?
    發(fā)表于 08-31 12:16 ?2次下載
    <b class='flag-5'>Apache</b>2+tomcat5.5集群及<b class='flag-5'>Apache</b>負載均衡配置實例

    Linux的apache

    Linux的apache(ups電源技術(shù)轉(zhuǎn)讓)-Linux的apache,有需要的可以參考!
    發(fā)表于 08-31 16:17 ?1次下載
    Linux的<b class='flag-5'>apache</b>

    Pulsar NodeJS客戶端

    ./oschina_soft/pulsar-client-node.zip
    發(fā)表于 06-17 11:33 ?0次下載
    <b class='flag-5'>Pulsar</b> NodeJS客戶端

    Apache Doris正式成為 Apache 頂級項目

    全球最大的開源軟件基金會 Apache 軟件基金會(以下簡稱 Apache)于美國時間 2022 年?6 月 16 日宣布,Apache Doris 成功從 Apache 孵化器畢業(yè),
    的頭像 發(fā)表于 06-17 14:08 ?1130次閱讀

    利用KoP如何將Pulsar數(shù)據(jù)快速且無縫接入Apache Doris

    實現(xiàn) Apache PulsarApache Kafka 協(xié)議的支持。將 KoP 協(xié)議處理插件添加到現(xiàn)有 Pulsar 集群后,用戶不用修改代碼就可以將現(xiàn)有的 Kafka 應用程
    的頭像 發(fā)表于 08-08 15:13 ?1404次閱讀

    什么是Apache日志?Apache日志分析工具介紹

    Apache Web 服務器在企業(yè)中廣泛用于托管其網(wǎng)站和 Web 應用程序,Apache 服務器生成的原始日志提供有關(guān) Apache 服務器托管的網(wǎng)站如何處理用戶請求以及訪問您的網(wǎng)站時經(jīng)常遇到的錯誤的重要信息。
    的頭像 發(fā)表于 01-04 10:09 ?1023次閱讀
    主站蜘蛛池模板: 国产精品青草久久 | 四虎在线电影 | 亚洲91在线视频 | bt天堂网在线资源www | 日本电影在线观看黄 | 午夜在线观看完整高清免费 | 色屁屁www免费看视频影院 | 又黑又长黑人欧美三级 | 高h文男主又粗又狠 | 亚洲国产成人久久一区www | 黄网站色视频免费观看 | 欧美 在线播放 | 一级片影院 | 夜夜橹橹网站夜夜橹橹 | 久久成人网18网站 | 国产精品美女久久久久网站 | 国产精品va在线观看不 | 爽天天天天天天天 | 日本黄大乳片免费观看 | 69成人免费视频 | 在线观看h视频 | 轻点灬大ji巴太粗太长了爽文 | 色噜噜综合网 | 久久青青成人亚洲精品 | 天天射天天干天天 | 1024国产欧美日韩精品 | 日韩毛片大全免费高清 | 天堂网中文在线 | 在线天堂中文新版www | 全国男人的天堂天堂网 | 日韩精品视频免费观看 | 午夜影院免费在线观看 | 日本亚洲一区二区 | 天天舔天天射天天操 | 激情在线网站 | 成人免费观看一区二区 | 酒色成人网 | 男男互攻h啪肉np文厉世 | 伊人久久影院大香线蕉 | 成人中文字幕一区二区三区 | 日本吻胸抓胸激烈视频网站 |