為什么要選擇Apache Pulsar(二)

這是介紹Apache Pulsar關鍵特性系列文章的第二篇。Pulsar是由Yahoo開發并開源的下一代發布訂閱消息系統。在第一篇文章里,我們介紹了Pulsar對消息模型的靈活支持、多租戶、多地域復制和持久性。在這一篇文章里,我們將繼續介紹Pulsar的IO隔離機制、伸縮性、安全模型、多語言API和易操作性。

\\

讀寫IO隔離

\\

在大多數消息系統里,消費者的速度延遲會導致性能下降。同一個主題的消費者,如果其中一個出現速度延遲,就會影響到其他速度更快的消費者。這是因為慢消費者強制要求消息系統從存儲里獲取數據,導致IO出現抖動,降低吞吐量。那些需要將數據先加載到內存里的消費者就會受到影響。導致這一問題的原因主要是讀操作和寫操作共享同一個執行路徑。

\\

Pulsar通過使用BookKeeper作為存儲系統解決了這一問題。有了BookKeeper,Pulsar就可以為讀操作和寫操作提供不同的執行路徑,實現IO隔離。常規的讀操作直接由Pulsar broker處理,寫操作使用BookKeeper的預寫式日志(WAL),Catch-up讀使用BookKeeper的后端存儲設備。

\\

對于系統中消息的發布,在任何情況下都能提供可控的,可預計的延遲是十分重要的。有了IO隔離,即使在磁盤承受高負載的讀操作時,仍然能夠保證消息的發布延遲是很低的、可以預計的。

\\

伸縮性

\\

消息系統的可伸縮性也是很重要的。發布訂閱消息系統的伸縮性可以從以下幾個維度來衡量:

\\
  • 高吞吐量——Pulsar的高吞吐量,通過最大限度的使用磁盤帶寬(IOPS)來實現。吞吐量取決于消息的大小,例如,如果消息的大小為1KB,那么Pulsar可以達到每秒120MB的吞吐量。但如果消息很小,比如只有10個字節,那么吞吐量可能只有1.8M每秒。這兩種結果都是基于單個發布者向一個主題(topic)分區寫入消息而得出的,99%的寫入延遲都在5毫秒以內。\\t
  • 主題數量——主題伸縮性是發布訂閱消息系統用以支持海量主題的一項能力。Pulsar可以支持從幾百到百萬級別的主題數量的擴展,同時還能一直保持良好的性能。主題的伸縮性取決于數據的組織和存儲方式。如果一個主題的數據被保存在單獨的文件或目錄里,就會影響伸縮性,因為磁盤的IO是分散的,這些文件會定期從頁面緩存沖刷到磁盤上。不過Pulsar的數據保存在bookie(BookKeeper服務器)上,不同主題的消息被聚合起來,經過排序,保存到大文件里,并進行索引。Pulsar也因此能夠支持大量的主題。\

安全

\\

Pulsar支持可插拔的認證機制,可以通過配置使用多種認證實現。認證的目的是為了建立客戶端標識,并為客戶端分配一個角色令牌。這個令牌被用來判斷一個客戶端可以做哪些操作。Pulsar提供了兩個默認的認證實現:TLS客戶端認證和AthenZ(由Yahoo開發的一種基于角色的認證系統)。

\\

多語言API

\\

應用程序可以通過多種編程語言與Pulsar發生交互。Pulsar為三種主流語言提供了官方的客戶端:C++、Java和Python。用戶可以根據實際需要選擇一種客戶端。這些客戶端API非常直觀,而且在不同語言之間保持了一致性。另外,Pulsar的官方客戶端還為不同風格的應用程序提供了同步和異步兩種讀寫操作。同步和異步的語義是一樣的:要么阻塞方法等待操作完成,要么返回一個Future對象用于追蹤操作是否完成。

\\

運維成熟度

\\

Pulsar易于管理,你可以在系統運行的同時加入新的broker節點和存儲節點來擴展容量。如果一個存儲節點宕機,后臺進程會自動將宕機節點所包含的數據從其他節點上的可用副本中復制到可用的存儲節點上。Pulsar為集群管理提供了多種方式,可以使用命令行工具,也可以使用Java庫或REST API。后者提供了更大靈活性,你可以基于它們開發自己的管理工具或者與已有的工具結合在一起使用。

\\

企業級

\\

Yahoo設計Pulsar是為了解決現有開源消息系統存在的一些問題和場景。滿足了高吞吐量(處理數千億個消息)、強持久性保證和低延遲的需求。Pulsar已經在Yahoo運行了三年,支持著140萬個主題,99%延遲低于5毫秒,部署在10多個數據中心(啟用了全網格復制),已經處理了超過100萬億個消息。

\\

總結

\\

Pulsar是下一代發布訂閱消息系統,彌補了其他開源消息系統的不足。在這兩篇文章里,我們介紹了Pulsar的各種關鍵特性,并解釋了Pulsar如何通過使用broker和bookie來實現IO隔離,以及它如何支持企業級的特性,如持久性、多租戶、多地域復制、高吞吐量和主題伸縮。

\\

查看英文原文:Why Apache Pulsar? Part 2

\\

感謝杜小芳對本文的審校。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256170.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256170.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256170.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Yolov5目標檢測模型運行遇到的相關問題匯總

一、yolov5-5.0常見錯誤 1. pycocotools工具包無法安裝 具體報錯如下: requirements: pycocotools>2.0 not found and is required by YOLOv5 pkg_resources.DistributionNotFound: The pycocotools>2.0 distribution was not found and is required by th…

PHP反射之類的反射

最近在琢磨如何用PHP實現站點的插件功能,需要用到反射,于是現學了一下,筆記如下: class Person {public $name Lily;public $gender male;public $age 20;public function eat(){echo Lily is eating!;}public function run(){…

數據結構(復習)--------關于平衡二叉樹(轉載)

在上一個專題中,我們在談論二叉查找樹的效率的時候。不同結構的二叉查找樹,查找效率有很大的不同(單支樹結構的查找效率退化成了順序查找)。如何解決這個問題呢?關鍵在于如何最大限度的減小樹的深度。正是基于這個想法…

mysql外鍵

效果 a,b,c 如果c設置到a的外鍵,那么只能在刪除c的記錄后,才能刪除a的記錄。 https://stackoverflow.com/questions/1905470/cannot-delete-or-update-a-parent-row-a-foreign-key-constraint-fails CREATE TABLE IF NOT EXISTS advertisers ( adverti…

C++總結筆記(一)—— 基礎知識匯總

很長時間沒有再復習C的基礎知識&#xff0c;現在將一些容易遺忘的知識點做一個簡單的匯總。 1、注釋 ??分為單行注釋和多行注釋 //cout<<endl;/*int i1;cout<<i<<endl;*/2、常量 ??宏常量&#xff1a;#define &#xff0c;宏常量沒有類型&#xff0c;…

微軟自帶iscsi客戶端對iqn的要求

節點名稱&#xff1a;Microsoft iSCSI 發起程序嚴格遵守為 iSCSI 節點名稱指定的規則。這些規則也適用于 Microsoft iSCSI 發起程序節點名稱以及發現的任何目標節點名稱。構建 iSCSI 節點名稱的規則&#xff08;如 iSCSI 規范以及“iSCSI 名稱的字符串配置文件”Internet 草稿中…

【Python數據結構】——鏈表

僅僅為了記錄 # 定義一個類&#xff0c;用于創建鏈表的結點 class LNode():def __init__(self,elem,next_ None):# 類的初始化方法,在實例化類的時候會自動調用self.elem elemself.next next_list1 LNode(1)# 類的實例化&#xff0c;LNode(1)為第一個鏈表結點&#xff0c;…

天貓雙11憑什么達到1682億?這些支撐技術或許可以告訴你

歷年「雙 11」都會掀起一股買買買的購物熱潮 阿里巴巴將這個原本普通的日子賦予了非凡的意義 今年&#xff0c;天貓以 1682 億的成交額再破記錄 而在這一系列瘋狂“秒殺”動作的背后 有一個叫云化架構的技術體系支撐著十幾億人的消費狂歡 12 月 8 日 ArchSummit 阿里技術專場 來…

PageLayoutControl的基本操作

整理了下對PageLayoutControl的基本功能操作 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071…

C++總結筆記(二)——指針

一、概念 1.1 指針的原理 找到一個比較精練的概述指針原理的句子&#xff1a; 指針變量就是在內存中保存變量的地址&#xff0c;然后通過地址來訪問數據。 int a 1; int* p &a; cout << p << endl;009DFEB4可以知道變量p在內存中的值就是a的地址&#xff…

Content的startActivity方法需添加FLAG_ACTIVITY_NEW_TASK flag

Content的startActivity方法需添加FLAG_ACTIVITY_NEW_TASK flag轉載于:https://www.cnblogs.com/zhujiabin/p/5085688.html

【圖像處理】——圖像內插法

參考:https://blog.csdn.net/lovexlsforever/article/details/79508602 cv2.resize函數 當我們縮小影像時,使用CV_INTER_AREA會有比較好的效果,當我們放大影像,CV_INTER_CUBIC會有最好的效果 void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, dou…

while read line 用法詳細介紹

循環中的重定向 或許你應該在其他腳本中見過下面的這種寫法&#xff1a; while read line do … done < file 剛開始看到這種結構時&#xff0c;很難理解< file是如何與循環配合在一起工作的。因為循環內有很多條命令&#xff0c;而我們之前接觸的重定向都是為一條命令工…

C++總結筆記(三)—— 結構體

一、概念 結構體是一種可以自定義數據類型的類型格式&#xff0c;一般用struct關鍵字進行定義。 //創建食物的結構體 struct Food {//屬性名string name; //名字int Price; //價格 };結構體有三種定義變量的方法。 1.1 定義結構體后再聲明變量&#xff0c;然后在對變量的…

[輕微]WEB服務器啟用了OPTIONS方法/如何禁止DELETE,PUT,OPTIONS等協議訪問應用程序/tomcat下禁用不安全的http方法...

使用了360網站安全檢測 查到有OPTIONS方法 百度了下 https://my.oschina.net/maliang0130/blog/338725 找到這個方法奈何http.conf 找不到無論在tomcat目錄里還是linux路徑下的/usr/etc或者apache2 最后通過開源中國找到 第一步&#xff1a;修改應用程序的web.xml文件的協議 &l…

MVC 事物同時保存,更新數據庫

本人小白一枚&#xff0c;第一次寫博&#xff0c;主要用作筆記&#xff0c;怕以后忘記了&#xff0c;大神尙可路過&#xff0c;也可多多指教 事物用在同時保存更新數據時&#xff0c;及只要在事物塊的范圍內&#xff0c;有一個操作出錯則事物塊所有更新&#xff0c;保存等操作都…

【圖像處理】——正裝照換底色Python

import cv2 import numpy as np # 讀取照片 img=cv2.imread("personalPic.jpg")# 圖像縮放 img = cv2.resize(img,None,fx=0.3,fy=0.3) rows,cols,channels = img.shape print(rows,cols,channels)# img_medianBlur=cv2.medianBlur(img,3) # 中值濾波,必須是大于1的奇…

Halcon例程詳解(植物測量) —— measure_plant.hdev

文章目錄 前言一、過程1.1 篩選ROI區域1.2 分割1.3 三維建模與仿射變換1.4 確定葉子的角度分布和高度1.5 確定葉子的面積和樹干的直徑1.6 對葉子的角度進行分析二、例程詳解2.1 篩選ROI區域2.2 分割2.3 三維建模與仿射變換2.4 確定葉子的角度和高度2.5 確定葉子的面積和樹干的直…

keil5中文亂碼的解決

keil5 復制出來的中文顯示亂碼&#xff0c;該如何解決&#xff1f; 點擊Edit - Configuration &#xff0c;進入編輯器設置&#xff1a; 點擊ok &#xff0c;就可以了轉載于:https://www.cnblogs.com/alan666/p/8312100.html