原创 番外:Golang 交叉編譯

知識點跨平臺編譯本文目標在 連載九 講解構建 Scratch 鏡像時,我們編譯可執行文件用了另外一個形式的命令,如下:$ CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -

原创 gRPC Streaming, Client and Server

前言本章節將介紹 gRPC 的流式,分爲三種類型:Server-side streaming RPC:服務器端流式 RPCClient-side streaming RPC:客戶端流式 RPCBidirectional streamin

原创 gRPC 基於 CA 的 TLS 證書認證

前言在上一章節中,我們提出了一個問題。就是如何保證證書的可靠性和有效性?你如何確定你 Server、Client 的證書是對的呢?CA爲了保證證書的可靠性和有效性,在這裏可引入 CA 頒發的根證書的概念。其遵守 X.509 標準根證書根

原创 讓你的服務同時提供 HTTP 接口

前言接口需要提供給其他業務組訪問,但是 RPC 協議不同無法內調,對方問能否走 HTTP 接口,怎麼辦?微信(公衆號、小程序)等第三方回調接口只支持 HTTP 接口,怎麼辦我相信你在實際工作中都會遇到如上問題,在 gRPC 中都是有解決

原创 gRPC TLS 證書認證

前言在前面的章節裏,我們介紹了 gRPC 的四種 API 使用方式。是不是很簡單呢 😀此時存在一個安全問題,先前的例子中 gRPC Client/Server 都是明文傳輸的,會不會有被竊聽的風險呢?從結論上來講,是有的。在明文通訊的情

原创 爲什麼容器內存佔用居高不下,頻頻 OOM(續)

在上週的文章《爲什麼容器內存佔用居高不下,頻頻 OOM》 中,我根據現狀進行了分析和說明,收到了很多讀者的建議和疑惑,因此有了這一篇文章,包含更進一步的說明和排查。疑問在出現系統內存過高的情況下,我們可以通過 free -m 來查看當前

原创 gRPC Unary and Stream interceptor

前言我想在每個 RPC 方法的前或後做某些事情,怎麼做?本章節將要介紹的攔截器(interceptor),就能幫你在合適的地方實現這些功能。有幾種方法在 gRPC 中,大類可分爲兩種 RPC 方法,與攔截器的對應關係是:普通方法:一元攔

原创 番外:請入門 Makefile

知識點寫一個 Makefile本文目標含一定複雜度的軟件工程,基本上都是先編譯 A,再依賴 B,再編譯 C...,最後才執行構建。如果每次都人爲編排,又或是每新來一個同事就問你項目 D 怎麼構建、重新構建需要注意什麼...等等情況,豈不

原创 gRPC Client and Server

前言本章節將使用 Go 來編寫 gRPC Server 和 Client,讓其互相通訊。在此之上會使用到如下庫:google.golang.org/grpcgithub.com/golang/protobuf/protoc-gen-go

原创 gRPC + Zipkin 分佈式鏈路追蹤

在實際應用中,你做了那麼多 Server 端,寫了 N 個 RPC 方法。想看看方法的指標,卻無處下手?本文將通過 gRPC + Opentracing + Zipkin 搭建一個分佈式鏈路追蹤系統來實現查看整個系統的鏈路、性能等指標。

原创 gRPC 對 RPC 方法做自定義認證

前言在前面的章節中,我們介紹了兩種(證書算一種)可全局認證的方法:TLS 證書認證基於 CA 的 TLS 證書認證Unary and Stream interceptor而在實際需求中,常常會對某些模塊的 RPC 方法做特殊認證或校驗。

原创 gRPC 超時控制

前言在前面的章節中,已經介紹了 gRPC 的基本用法。那你想想,讓它這麼裸跑真的沒問題嗎?那麼,肯定是有問題了。今天將介紹 gRPC Deadlines 的用法,這一個必備技巧。內容也比較簡單DeadlinesDeadlines 意指截

原创 Go Gin 系列六:編寫一個簡單的文件日誌

涉及知識點自定義 log。本文目標在上一節中,我們解決了 API's 可以任意訪問的問題,那麼我們現在還有一個問題,就是我們的日誌,都是輸出到控制檯上的,這顯然對於一個項目來說是不合理的,因此我們這一節簡單封裝log庫,使其支持簡單的文

原创 Go Gin 系列八:爲它加上Swagger

涉及知識點Swagger本文目標一個好的 API's,必然離不開一個好的API文檔,如果要開發純手寫 API 文檔,不存在的(很難持續維護),因此我們要自動生成接口文檔。安裝 swag$ go get -u github.com/swa

原创 Go Gin 系列十二:優化配置結構及實現圖片上傳

知識點重構、調整結構本文目標這個應用程序跑了那麼久了,越來越大,越來越壯,彷彿我們的產品一樣,現在它需要進行小範圍重構了,以便於後續的使用,這非常重要。前言一天,產品經理突然跟你說文章列表,沒有封面圖,不夠美觀,!)&¥*!&)#&¥*