Protobuf - 如何開發 codegen plugin
如果有在用 GRPC 方式在做傳輸的話,就一定會知道 Google 推出的 Protocol Buffers (Protobuf),其實它就是一種資料結構,現在 HTTP 傳輸大多使用 JSON 的格式來做資料傳輸,而 Protobuf 就是在做類似的事情。
如果有在用 GRPC 方式在做傳輸的話,就一定會知道 Google 推出的 Protocol Buffers (Protobuf),其實它就是一種資料結構,現在 HTTP 傳輸大多使用 JSON 的格式來做資料傳輸,而 Protobuf 就是在做類似的事情。
今天來講講滿常會用的 errGroup 的用法及適用情境,為什麼好用呢?一般我們在用 goroutine 的時候都不能夠 return value,你要將 goroutine 執行後的結果傳出去,通常就要使用 channel 的方式才可以,而 errGroup 的套件則適用於如果你想要知道你開的 goroutine 執行的時候如果遇到 error 就停止工作,並且我需要知道 error value 的情況。
今天來談談 replication 最後的主題就是 Leaderless Replication。前面所說的都會有所謂的 Leader 去接收 Client 的 Write 的需求在同步給 Follower。 Leaderless Replication 盛行於 Amazon 的 Dynamo System,之後 Riak, Cassandra and Voldemort 這些 open source 也採用 leaderless replication,這些類型的資料庫被叫做 Dynamo-style。
Leaderless Replication 每個 Node 都是獨立的,也可以進行讀寫,這樣的架構在乎的倒也不是資料一致性,而是集群的可用性。
今天來講講 Multi-Leader Replication 有哪些優缺點,以及如何處理 Write Conflicts。在前篇文章所提的 Leader-based replication,有個主要的缺點就是,如果這個 leader 掛了,所有的 writes 都無法進行了。因此這時候可以採用 multi-leader replication 的架構來解決這個問題,而每一個 leader 底下都會有各自的 follower。
今天來做 Replication 的筆記,主要是談在 Replication 中的模式,例如 Leaders and Followers 以及實現 Replication 有 Statement-based replication ,Logical replication,Physical replication 還有談談什麼是 Replication Lag 並造成了怎樣的影響。
今天來做 Modes of Dataflow 的筆記,重點圍繞著何謂 forward and backward compatibility,並且運用在 database,REST,RPC,Message-Passing 如何去克服向上相容及向下相容。
今天要來介紹的是 Copy Operation in Postgres 的用法,此外也比較與 Insert,Batch Insert 之間的速度比較。之所以想講這個是因為最近在工作上有需要大量 insert record 的需求,那因為是使用 Postgres 的關係,所以開始研究 Copy 的使用方式,並且深入探討了一下 Copy 使用 simple query 及 extended query protocol 請求方式的差別。這邊會透過 wireshark 來看封包分析一下~
再寫 Golang 的時候常常會需要封裝 struct 的操作,而通常會針對該 struct 做一個 New func 的操作,為的就是方便 inject 相對應的 dependency 進去。那麼就會碰到需要有 option 的時候,所謂 option 的時候,是指說有些欄位的設定是可以給 client 自由設定的,此外如果 client 沒有設定,會有所謂的預設值。那麼這樣的設計在 Golang 要怎麼去實作已經不同方式的優缺點在哪,來看一下吧。