比起 JSON 更方便、更快速、更簡短的 Protobuf 格式

Protocol Buffers 是由 Google 所推出的一格式(後台真硬),你可以把它想像成是 XML 或 JSON 格式,但是更小、更快,而且更簡潔。這能夠幫你節省網路與硬體資源,且你只需要定義一次資料結構,接著就會自動生成符合你程式語言的檔案,讓你能夠直接在你的程式上使用。 而且有趣的是一但你定義了資料結構,你就能在多個語言上使用,像是 C++、C#、Go、Java、

用 Golang 實作 Prometheus:服務效能測量監控系統

Prometheus 是一個基於 Golang 語言所撰寫的服務效能測量監控系統。實際上就只是把統計數據視覺化而已,這很適合用在大型系統、微服務上。你可以從 Prometheus 查看你所有服務的效能狀態等。 但這些事情可能沒有你想像的那麼自動,因為有些數據的加總、值的異動都需要自行在程式裡面處理,然後 Prometheus 會向你的程式要求這些資料。 1. 安裝與啟動 Prometheus Prometheus 這個單字好像有點難記,我自己是切分成「Prome-th-eus」來記。廢話不多說,

用 Golang 實作 NSQ:微服務訊息/事件傳遞系統

NSQ 是和 Event Sourcing 理念有所關聯的即時性分布式訊息傳遞系統,看到這裡你可能會以為是作即時通訊軟體用的,但實際上並不是。額外有趣的一點是 NSQ 也是以 Golang 所撰寫的。 我們會在文章中以實際情況、為什麼需要 NSQ 來解答疑惑並且實作一個真正的範例。 在閱讀本篇之前,也許你可以看看另一個相關的文章:「用 Golang 實作 Event Store:微服務事件儲藏中心」這篇文章提及到了為什麼我們應該用事件,

用 Golang 實作 Event Store:微服務事件儲藏中心

Event Store 是一個基於 CQRS 與 Event Sourcing 理念所衍生出來的新概念並由 C# 撰寫。這是一個微服務事件儲藏中心,這可能很難懂,但別緊張,這些都會在本文中得到答案。 在微服務結構中,每個服務都是獨立的,這意味著沒有服務該依賴另一個服務(無相依性),那麼我們應該要怎麼在服務之間互相溝通?一但有了這個問題就會開始陷入死循環,最終甚至會做出一個比傳統式單體應用程式還要糟糕的結構。 首先你要知道的是微服務應該自主。需要什麼資料的時候就應該自己處理,而不是發送請求到另一個服務然後等待回應。 實際案例

Golang 微服務相關工具

因為這些工具都十分地進階,所以在這裡僅稍微介紹並指引如何安裝,有趣的是這些全部都是用 Golang 撰寫的。 Go kit—微服務框架 https://github.com/go-kit/kit 當你要撰寫微服務時,你也許會需要一個框架。而 Go kit 就是 Golang 中目前知名度最高的微服務框架,接下來我們會以 Go kit 實作微服務架構的應用程式,