電腦運行時任務的的單元是什麼呢? 這個涉及了「程式(Program)」、「進程(Process)」、「線程(Thread)」的概念,是面試時經常會被問到的題目,首先默念默背一下教科書上 Process 和 Thread 的簡單定義:

  • Process: 資源分配的最小單位
  • Thread: CPU 執行的最小單位

在實際生活中如點開一個聊天應用程式,這就是將 Program 活化成 Process 的例子,因此我們可以在電腦的資源管理器 Monitor 中看到 PID (Process ID) ; 再繼續以聊天室 Process 為例,我們可以同時「接受對方傳來的訊息」以及「發送自己的訊息給對方」,這就是同個 Process 中不同 Thread 的功勞。

Continue reading

GCP 雲端資源的權限管理服務是 IAM,其全稱為 Identity and Access Management,可讓管理員(Administrator)去授權(authorize)一個 Identity,使它可以操作特定的 Resources。對應到其他的雲端服務是 :

  • Amazon Web Services (AWS) : AWS Identity and Access Managemen
  • Microsoft Azure : Microsoft Entra ID (舊稱 Azure Active Directory)

簡單從英文上來說 IAM 是做什麼的 : 「manage who can do what on which resources」,此概念會貫穿整個 IAM 的使用,用於保護 GCP 資源,提供了非常細粒度的控制,可根據具體需求定制安全性策略。

Continue reading

Pub/Sub 是 Google 推出的 Message Service ,作為中介層(Middleware) 可讓系統解耦,解耦的兩系統透過 Publish-Subscribe 的模式來 「異步 asynchronous」 收發消息,實現高可靠(highly reliable) 和高可擴展(scalable)的服務。 簡單以 Event-Driven 消息傳遞設計為主體概念的話,對應到其他的雲端服務是 :

  • Amazon Web Services (AWS) : SQS + SNS
  • Microsoft Azure : Azure Service Bus Messaging

Pub/Sub 也簡化了許多 Message Service Infra 的管理如 Broker、Exchange、Queue 等這些底層架構組件並不會直接被使用者接觸,而是 GCP 完全代管且提供 Pub/Sub service level agreement (SLA),developer 僅需要瞭解 Message、Topic、Publisher、Subscription、Subscriber 這些接近應用程式端的 Components,算是降低門檻達到快速使用的目的。

Continue reading

在前面幾個章節有介紹了 GCP 常見的 Storage Service ,有提供了各種高可靠且高可擴展存儲服務產品,雲端化直觀的提供了「減輕管理服務基礎架構」的負擔,特別是是硬體角度的管理。從比較 High-Level 角度來討論的話,雲存儲的服務類型分成

在現今的雲端計算時代,儲存和管理大量資料變得更加重要,以上這幾種儲存服務需根據業務來選擇,因為這也會決定到訪問和管理組資料的難易程度,故以下對其做一些廣義的整理和筆記來幫助和選擇適合的儲存服務。

Continue reading

BigQuery 是 Google 提供的一個無伺服器資料倉儲 (Serverless Data Warehouse),其支持 ANSI SQL 來搜尋資料,所以只要會 SQL 語法就可以立即開始使用,且可高效率分析 TB、PB 等級的資料,故 Bigquery 也是企業級雲端大數據資料分析平台。對應到其他的雲端服務是 :

  • Amazon Web Services (AWS) : AthenaRedshift SpectrumRedshift
  • Microsoft Azure : Azure Synapse Analytics

Google 在非常早期的時候,就有類似 BigQuery 其的服務就存在了,是自 2006 年以來一直在內部使用的 Dremel,後來隨著 GCP 雲端平台的產生,並於 2011 年以 BigQuery 為名被正式推出。目前是 GCP 分析資料的主力產品, Google 自家產品如搜尋引擎、 Gmail 等服務背後,其資料處理與分析的核心技術也和 Bigquery 息息相關。

Continue reading

Memorystore 是 GCP 提供的完全託管 In-Memory Database 服務,可以輕鬆地在 GCP 上建立 Redis 和 Memcached 等著名的開源 Caching-Engines,專門提供毫秒級的低延遲資料存取/寫入,並減輕管理 Database 的部署 deployment、Replica、容錯移轉等等維運事項。對應其他的雲端服務是 :

  • Amazon Web Services (AWS) : Amazon ElastiCache
  • Microsoft Azure : Azure Cache

Memorystore 也是屬於 NoSQL,由於常用於快取情境故也會被稱呼為快取資料庫。目前看起來主流是使用 Redis,故建議在大部份的使用場景上,優先考慮使用 Redis。

Continue reading

Cloud Spanner 是 Google 開發的一個完全託管關係型資料庫,屬於企業級 PaaS 解決方案,具有全球同步、全域事務、強一致性、可擴展、分散式和 Replica/Failover 功能,可保證 99.999% 可用性 SLA,使用者不需要多花心思在底層的基礎建設與管理。對應其他的雲端服務是 :

  • Amazon Web Services (AWS) : Amazon Aurora
  • Microsoft Azure : Azure SQL Database (SQL Server base)

Cloud Spanner 於 2012 年開始為 Google 內部的重量級產品如 Youtube、Gmail、Google PlayStore 等等提供服務,取代了 Google 的自定義 MySQL 且號稱是盡量滿足 CAP 理論限制。2020Q1 統計每月約 1 億活躍使用者,每天有高達 1800 萬次外送記錄的 Uber,是使用 CLOUD SPANNER 成功案例。

Continue reading

GCP - Cloud SQL 概述

Cloud SQL 是 GCP 提供針對 MySQL、PostgreSQL、SQL Server 推出的完全託管關係型資料庫服務,讓使用者能夠從資料庫的管理任務中解放出來,花更多時間在資料本身而非硬體維護。雲端資料庫只是在雲端上建置、部署和存取的資料庫而已,其底層操作和傳統地端資料庫完全一樣,對應其他的雲端服務是 :

  • Amazon Web Services (AWS) : Amazon RDS
  • Microsoft Azure : Azure SQL Database for MySQL/PostgreSQL

Cloud SQL 除了可快速啟用資料庫,還可以同時整合讀寫分離、同步、自動備份、監控等等,也讓我們能更安全便捷地整合 GCP 的其它雲端產品例如:「創建 Table 並從 Cloud Storage 導入 .sql 資料」、「使用 Cloud SQL Auth Proxy 連結到 Compute Engine」、「連接到 BigQuery 來使用聯合查詢」等等。

Continue reading

由於 Bigtable 在 Google 內部廣為使用,故有於 2006 年發表了它的論文介紹:Bigtable: A Distributed Storage System for Structured Data,然後在 2015/5 推出成為 GCP 雲端產品給大眾使用。 在 Google 官網上 Bigtable 的定義是一個 Sparsely-Populated-Table,其中 sparse 意思是如果某 Column 未在特定 Row 中使用,就不會佔用任何空間。

Bigtable 也可以輕鬆擴展到數十億 Rows 和數千個 Columns ,能夠存儲 PB 級的資料量,適合 High-Throughput 場景的服務,是個強大的服務。而個人也覺得 Bigtable 是對有使用 GCP 的人常被問有沒有使用過的一個雲端服務之一,故可以特別看一下這個服務。(第一名最常問的,我個人認為是 Bigquery)

Continue reading

Bigtable 並不是傳統 RDB 關係型資料庫,而是 GCP 提供的企業級 NoSQL Database,是一個支持大數據應用的分散式存儲系統,保證高可擴展、高可用性、高性能與高吞吐需求的服務,與現有 Apache Big Data 生態系統的開源軟體如 HBase 也有蠻好的整合。對應到其他的雲端服務是 :

  • Amazon Web Services (AWS) : DynamoDB
  • Microsoft Azure : Cosmos DB

Bigtable 優勢在於其強大的擴充性,效能完全和 cluster 中的 Node 數量成正比,該產品的強大性完全不用質疑,因為 Google 的很多重量級專案都有使用 Bigtable 來存儲資料例如: Youtube、Google Earth、Google 搜尋引擎、Google Map 等等,每個專案都為數十億活躍使用者提供穩定的服務。

Continue reading

Author's picture

李昀陽 YunYang Lee

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

Software Engineer

Taiwan