您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

01 節點轉換訂閱地址轉換github(ROS基于SocketCAN的通信方式)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-15 23:56:59【】8人已围观

简介大數據常用同步工具一、離線數據同步DataX阿里的Datax是比較優秀的產品,基于python,提供各種數據村塾的讀寫插件,多線程執行,使用起來也很簡單,操作簡單通常只需要兩步;創建作業的配置文件(j

大數據常用同步工具

一、離線數據同步

DataX

阿里的Datax是比較優秀的產品,基于python,提供各種數據村塾的讀寫插件,多線程執行,使用起來也很簡單,操作簡單通常只需要兩步;

創建作業的配置文件(json格式配置reader,writer);

啟動執行配置作業。

非常適合離線數據,增量數據可以使用一些編碼的方式實現,

缺點:僅僅針對insert數據比較有效,update數據就不適合。缺乏對增量更新的內置支持,因為DataX的靈活架構,可以通過shell腳本等方式方便實現增量同步。

github地址:買粉絲s://github.買粉絲/alibaba/DataX

dataX3.0介紹:買粉絲s://買粉絲.jianshu.買粉絲/p/65c440f9bce1

datax初體驗:買粉絲s://買粉絲.imooc.買粉絲/article/15640

文檔:買粉絲s://github.買粉絲/alibaba/DataX/blob/master/hdfswriter/doc/hdfswriter.md

Sqoop

Sqoop(發音:skup)是一款開源的工具,主要用于在Hadoop(Hive)與傳統的數據庫(mysql、postgresql…)間進行數據的傳遞,可以將一個關系型數據庫(例如 : MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關系型數據庫中。

地址:買粉絲://sqoop.apache.org/

Sqoop導入:導入工具從RDBMS到HDFS導入單個表。表中的每一行被視為HDFS的記錄。所有記錄被存儲在文本文件的文本數據或者在Avro和序列文件的二進制數據。

Sqoop導出:導出工具從HDFS導出一組文件到一個RDBMS。作為輸入到Sqoop文件包含記錄,這被稱為在表中的行。那些被讀取并解析成一組記錄和分隔使用用戶指定的分隔符。

Sqoop支持全量數據導入和增量數據導入(增量數據導入分兩種,一是基于遞增列的增量數據導入(Append方式)。二是基于時間列的增量數據導入(LastModified方式)),同時可以指定數據是否以并發形式導入。

Kettle

Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運行,數據抽取高效穩定。

Kettle的Spoon有豐富的Steps可以組裝開發出滿足多種復雜應用場景的數據集成作業,方便實現全量、增量數據同步。缺點是通過定時運行,實時性相對較差。

NiFi

Apache NiFi 是一個易于使用、功能強大而且可靠的數據拉取、數據處理和分發系統,用于自動化管理系統間的數據流。它支持高度可配置的指示圖的數據路由、轉換和系統中介邏輯,支持從多種數據源動態拉取數據。

NiFi基于Web方式工作,后臺在服務器上進行調度。 用戶可以為數據處理定義為一個流程,然后進行處理,后臺具有數據處理引擎、任務調度等組件。

幾個核心概念:

Nifi 的設計理念接近于基于流的編程 Flow Based Programming。

FlowFile:表示通過系統移動的每個對象,包含數據流的基本屬性

FlowFile Processor(處理器):負責實際對數據流執行工作

Connection(連接線):負責不同處理器之間的連接,是數據的有界緩沖區

Flow Controller(流量控制器):管理進程使用的線程及其分配

Process Group(過程組):進程組是一組特定的進程及其連接,允許組合其他組件創建新組件

Nifi簡介及核心概念整理

官方網站:買粉絲://nifi.apache.org/index.買粉絲

二、實時數據同步

實時同步最靈活的還是用kafka做中間轉發,當數據發生變化時,記錄變化到kafka,需要同步數據的程序訂閱消息即可,需要研發編碼支持。這里說個mysql數據庫的同步組件,阿里的canal和otter

canal

買粉絲s://github.買粉絲/alibaba/canal

數據抽取簡單的來說,就是將一個表的數據提取到另一個表中。有很多的ETL工具可以幫助我們來進行數據的抽取和轉換,ETL工具能進行一次性或者定時作業抽取數據,不過canal作為阿里巴巴提供的開源的數據抽取項目,能夠做到實時抽取,原理就是偽裝成mysql從節點,讀取mysql的binlog,生成消息,客戶端訂閱這些數據變更消息,處理并存儲。下面我們來一起搭建一下canal服務

早期,阿里巴巴B2B公司因為存在杭州和美國雙機房部署,存在跨機房同步的業務需求。不過早期的數據庫同步業務,主要是基于trigger的方式獲取增量變更,不過從2010年開始,阿里系公司開始逐步的嘗試基于數據庫的日志解析,獲取增量變更進行同步,由此衍生出了增量訂閱&消費的業務,從此開啟了一段新紀元。

ps. 目前內部版本已經支持mysql和oracle部分版本的日志解析,當前的canal開源版本支持5.7及以下的版本(阿里內部mysql 5.7.13, 5.6.10, mysql 5.5.18和5.1.40/48)

基于日志增量訂閱&消費支持的業務:

數據庫鏡像

數據庫實時備份

多級索引 (賣家和買家各自分庫索引)

search build

業務cache刷新

價格變化等重要業務消息

otter

買粉絲s://github.買粉絲/alibaba/otter

otter是在canal基礎上又重新實現了可配置的消費者,使用otter的話,剛才說過的消費者就不需要寫了,而otter提供了一個web界面,可以自定義同步任務及map表。非常適合mysql庫之間的同步。

另外:otter已在阿里云推出商業化版本 數據傳輸服務DTS, 開通即用,免去部署維護的昂貴使用成本。DTS針對阿里云RDS、DRDS等產品進行了適配,解決了Binlog日志回收,主備切換、VPC網絡切換等場景下的同步高可用問題。同時,針對RDS進行了針對性的性能優化。出于穩定性、性能及成本的考慮,強烈推薦阿里云用戶使用DTS產品。

ROS基于SocketCAN的通信方式

CAN 1.0 定義的 CAN 具有 11 位消息標識,提供可能的 2048 個消息標識符。2.0 版允許有效的 29 位消息 ID。為了使新的 CAN 設備與舊的實現兼容,CAN 2.0 規范分為兩部分,2.0A 和 2.0B。在 CAN 2.0A 中,消息格式與僅使用 11 位消息 ID 的舊版本 CAN 一致。 CAN 2.0B 中,允允許有效的 29 位消息 ID,然后可以在被動或主動模式下實現 CAN 2.0B。CAN 版本 1.0 和 2.0A 被稱為“標準 CAN”,因為它們都使用 11 位消息 ID。CAN 2.0 B 被稱為“擴展 CAN”,因為它使用擴展的 29 位消息 ID

買粉絲s://買粉絲.can-cia.org/can-knowledge/can/can-history/

買粉絲s://en.wikipedia.org/wiki/CAN_bus#History

買粉絲s://買粉絲.edaboard.買粉絲/threads/difference-between-can1-0-and-can-2-0.217912/

SAE J1939/ISO11783

CANOpen

CANaerospace

DeviceNet

NMEA 2000

Linux可以通過串口、USB、網口、PCIE等接口與CAN設備間接進行通信。

CAN設備連接在不同的硬件接口時,意味著CAN設備被掛載在Linux中不同的總線上,如USB總線、PCI-E總線(直接通過PCI-E與linux通訊),因此Linux采用不同的通訊協議與CAN設備進行通訊。

Linux->串口->單片機->CAN

利用linux自帶的串口庫,或ros的serial庫對串口進行讀寫。

通過定義串口協議,如10個字節,前兩個字節為CAN ID,后面8個字節為CAN Data。通過此對串口發送數據,讓單片機對其進行轉換為CAN數據。

協議參考: 買粉絲s://manual.zlg.買粉絲/web/#/64/2607

注意,不是所有的周立功CAN轉USB設備都支持Linux,見表: 買粉絲s://manual.zlg.買粉絲/web/#/146

Linux->USB->單片機->CAN

與CAN轉串口不一樣,利用的庫是libusb和libusbcan,對CAN轉USB數據直接進行讀寫

libusb是linux驅動,可以操作USB接口對USB設備進行讀寫操作。

libusbcan是CAN轉USB設備廠商給的驅動,其中定義了can數據幀的數據結構體,填充相應的CAN ID和CAN Data,最后通過USB進行讀寫。

協議參考: 買粉絲s://manual.zlg.買粉絲/web/#/55/2282

Linux->TCP(UDP)/IP->單片機->CAN

利用Linux的socket庫對網絡設備進行讀寫操作。

Linux通過IP地址利用Socket與CAN設備通信,一個TCP/UDP幀包中包含若干個連續的CAN幀,每個CAN幀包含若干個字節,包含CAN ID和CAN Data。

協議參考: 買粉絲s://manual.zlg.買粉絲/web/#/67/2693

注意周立公CAN轉PCI-E設備,型號PCI-5010-P不支持Linux: 買粉絲s://manual.zlg.買粉絲/web/#/146

Linux->SocketCAN->單片機->CAN

Linux提供了SocketCAN接口,使得CAN總線通信近似于和以太網的通信。網絡設備通過I

很赞哦!(96)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:陕西安康紫阳县

工作室:小组

Email:[email protected]