一.預定義的源和接收器
Flink內置了一些基本數據源和接收器,它們始終可用。該預定義的數據源包括文件,目錄和Socket,並可以加載集合和迭代器的數據。該預定義的數據接收器支持寫入文件,輸出信息和異常。
二.捆綁式連接器
連接器提供用於與各種第三方系統接口的代碼。當前支持以下系統:
- Apache Kafka(源/接收器)
- Apache Cassandra(接收器)
- Amazon Kinesis Streams(源/接收器)
- Elasticsearch(接收器)
- Hadoop文件系統(接收器)
- RabbitMQ(源/接收器)
- Apache NiFi(源/接收器)
- Twitter Streaming API(源)
- Google PubSub(源/接收器)
請記住,要在應用程序中使用這些連接器之一,通常需要其他第三方組件,例如,用於數據存儲或消息隊列的服務器。還請注意,列出的流連接器是Flink項目的一部分,幷包含在源代碼版本中,但它們不包含在二進制發行版中。
三.Apache Bahir中的連接器
通過Apache Bahir發佈了用於Flink的其他流連接器,包括:
- Apache ActiveMQ(源/接收器)
- Apache Flume(接收器)
- Redis(接收器)
- Akka(接收器)
- Netty(源)
四.連接到Flink的其他方式
1.通過異步I/O進行數據獲取
使用連接器不是Flink獲取數據和輸出數據的唯一方法。一個常見的模式是查詢外部數據庫或Web服務獲取數據爲一個Map或FlatMap 作爲主要數據流的補充。Flink提供了一個用於異步I/O的API, 以使其更容易有效且強大地完成這種擴充。
2.可查詢狀態
當Flink應用程序將大量數據推送到外部數據存儲時,這可能會成爲I/O瓶頸。如果涉及的數據的讀取次數少於寫入的次數,則更好的方法是讓外部應用程序從Flink中提取所需的數據。在可查詢的狀態界面,允許通過Flink管理的狀態下進行按需查詢。
五.數據源和接收器的容錯保證
Flink的容錯機制在出現故障時恢復程序並繼續執行它們。此類故障包括機器硬件故障,網絡故障,瞬時程序故障等。
僅當源參與快照機制時,Flink才能保證將一次準確的狀態更新爲用戶定義的狀態。下表列出了Flink和捆綁的連接器的狀態更新保證。
爲了保證端到端的一次精確記錄傳遞(除了一次精確的狀態語義),數據接收器需要參與檢查點機制。下表列出了Flink以及捆綁的接收器的交付保證(假設僅一次狀態更新):
備註:
- exactly ones:精準一次
- at most ones:最多一次
- at least ones:最少一次