Protobuf 全稱 Protocol Buffers ,是一種輕量級的資料交換格式,最初是由 Google 開發的「可擴展的序列化資料結構」,現已成為一個開源項目,其語⾔中⽴且平台無關,適合高性能且對響應速度有高要求的資料傳輸場景;也因為有資料壓縮的能力,故也可用於資料儲存。Protobuf 的核心思想是先定義好 data schema ,然後可根據所需的語言生成對應的 code base,方便使用者操作 :「序列化寫入、反序列化讀取」。

Profobuf 需要注意的缺點是為二進制格式,故編碼之後不具有可讀性,需要反序列化後才能看得懂資料內容 ; 雖然是個好東西,但並非是個用來完全取代 JSON 的解決方案,JSON 仍有其可讀性高、易操作及通用性高等優點,在多數 API 設計的場景之下,JSON 仍然是最好的選擇。

Continue reading

OpenTelemetry ,也稱為 OTel,是 Cloud Native Computing Foundation(CNCF) 下的一個開源專案,為一供應商中立(vendor-neutral)的可觀測性框架,目的是提供一個標準化Observability 的 pluggable 框架,解決 telemetry data 的模型定義、檢測、採集、處理、輸出等一致性問題。

借助 OpenTelemetry ,可以從各種來源收集 telemetry data ,但對於資料的存儲和可視化是留給其他工具的,本身並不提供儲存,只能將其發送到其他的服務來存儲,如 Prometheus、或其他雲端廠商服務。

Continue reading

Regular Expression 是一種強大的字串匹配字串查找等操作工具,常簡寫爲 regex 、regexp 或 RE。這概念最初由 Unix 的 sed、grep 操作而普及開,它定義一系列符號來描述搜索的規則。 但在不同的 coding language 或者是不同 OS 中, 常發現 regex 都會有些差異,主要原因是演進過程中,出現 POSIXPCRE 兩種 :

  • POSIX : 可以說是原初版本,主要用於 UNIX 系統的文本處理,grep 、sed 、awk 等都屬之

  • PCRE : 現代 coding language如 Python、Ruby、 C、C++、Java 都屬於 PCRE 派系。

Continue reading

Fluent Bit 基礎介紹

Fluent Bit 是一款使用 C 語言編寫的開源的資料收集器,為 Fluentd 的輕量化版本,也是 Cloud Native Computing Foundation(雲原生運算基金會) 下的一個子項目。可以從多種不同來源【如 Log file、kafka 等等】,收集 Logs、Metrics、 Traces 資料,然後輸出至多種不同的服務 【如 Loki、Fluentd、Elasticsearch、DataDog、Kafka 以及各式雲端服務】。

Continue reading

57. Insert Interval

此題給定一個沒有 overlapping 且按照起始座標排序的 interval 集合,然後再給一個 newInterval 放到該集合內,要合併 interval 使它們都不會重疊,最後返回新的 non-overlapping intervals。 本題的生活化的模擬,可以把題目想成自修室租借,然後插入自己的使用時段(亂入別人的使用時間…),最後返回整個自修室被租借的時段。

Continue reading

Pod 是 Kubernetes 中最小的運行單位,它可以包含一個或多個 container。Pod 的實現原理主要涉及以下幾個方面:

  • 容器技術 : 實現隔離和獨立運行
  • 共享網絡和存儲 : Pod 中的所有容器共享相同的網絡和存儲空間
  • Pod 調度 : 調度器會監測節點的資源利用率,將 Pod 調度到適合的節點上運行。
  • 生命週期管理 : 當 Pod 發生故障或需要擴展時,控制器會自動創建、刪除或調整 Pod 的數量。

在 Kubernetes 中,Pod 是容器組的概念,爲應用程序提供了一個更加靈活的運行環境,負責管理容器的生命周期和資源。

Continue reading

Author's picture

李昀陽 YunYang Lee

Welcome to my Tech Note. You can read some of the chapters below.

Software Engineer

Taiwan