本項(xiàng)目旨在使用golang 搭建一個(gè)微服務(wù)應(yīng)用。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供墾利網(wǎng)站建設(shè)、墾利做網(wǎng)站、墾利網(wǎng)站設(shè)計(jì)、墾利網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、墾利企業(yè)網(wǎng)站模板建站服務(wù),十年墾利做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
gin做api和rpc的客戶端 go-micro作為后臺微服務(wù)
···
// gin
Frame
- app // 控制器
- conf // 配置文件
- middleward // 中間件
- models // 模型
- routes // 路由
- services // 服務(wù)層
- uitl // 工具
- main.go // 入口
// app 目錄
app
- api
- v1
- goods.go
- v2
- route.go
- app.go
//conf目錄
conf
- config.ini
models
- models.go
services
- xxxService.go
util
- config.go
···
在完成 k8s 上快速部署 go 服務(wù) 和 k8s: istio 入門 后, 繼續(xù) 膨脹 , 使用 go 來實(shí)現(xiàn) istio 提供的 bookinfo 微服務(wù) demo
快速回顧之前的 blog:
涉及到的問題:
簡單實(shí)踐步驟:
先回顧一下 bookinfo 微服務(wù)應(yīng)用的端到端架構(gòu):
包含 4 個(gè)微服務(wù):
可以參考 k8s 上 go 服務(wù)實(shí)戰(zhàn): 使用 helm 快速構(gòu)建云原生應(yīng)用 快速部署 rating 服務(wù)
同理, 實(shí)現(xiàn) productpage detail 服務(wù)
istio 幾乎涵蓋了 服務(wù)治理/流量控制 的方方面面, 作為服務(wù)治理層的基礎(chǔ)設(shè)施 完全夠用 , 問題開始從 行不行 , 轉(zhuǎn)向 用哪些 , 讓 業(yè)務(wù)層/devops工作流/k8s基礎(chǔ)設(shè)施 用起來更爽
還需要解決的問題:
近幾年誕生了很多微服務(wù)框架,比如JAVA的Spring Cloud、Dubbo;Golang的GoKit和GoMicro以及NodeJs的Seneca。幾乎每種主流語言都有其對應(yīng)的微服務(wù)框架。
Go在微服務(wù)框架中有其獨(dú)特的優(yōu)勢,至于優(yōu)勢在哪,自行g(shù)oogle。
1、GoKit框架
這是一個(gè)工具包的集合,可以幫助攻城獅構(gòu)建強(qiáng)大、可靠和可維護(hù)的微服務(wù)。提供了用于實(shí)現(xiàn)系統(tǒng)監(jiān)控和彈性模式組件的庫,例如日志、跟蹤、限流、熔斷等。
基于這個(gè)框架的應(yīng)用程序架構(gòu)由三個(gè)主要的部分組成:
傳輸層:用于網(wǎng)絡(luò)通信,服務(wù)通常使用HTTP或者gRPC等網(wǎng)絡(luò)傳輸協(xié)議,或者使用NATS等發(fā)布訂閱系統(tǒng)相互通信。
接口層:是服務(wù)器和客戶端的基本構(gòu)建塊。每個(gè)對外提供的接口方法都會定義為一個(gè)Endpoint,一遍在服務(wù)器和客戶端之間進(jìn)行網(wǎng)絡(luò)通信,每個(gè)端點(diǎn)使用傳輸層通過HTTP或gRPC等具體通信模式對外提供服務(wù)
服務(wù)成:具體的業(yè)務(wù)邏輯實(shí)現(xiàn)
2、GoMicro框架
這是一個(gè)基于Go語言實(shí)現(xiàn)的插件化RPC微服務(wù)框架。提供了服務(wù)發(fā)現(xiàn)、負(fù)載均衡、同步傳輸、異步通信以及事件驅(qū)動等機(jī)制,嘗試簡化分布式系統(tǒng)之間的通信,讓開發(fā)者更專注于自身業(yè)務(wù)邏輯的開發(fā)。
GoMicro的設(shè)計(jì)哲學(xué)是可插拔的架構(gòu)理念,提供了可快速構(gòu)建系統(tǒng)的組件,并且可以根據(jù)自身的需求對GoMicro提供的默認(rèn)實(shí)現(xiàn)進(jìn)行定制。所有插件都可在倉庫github.com/micro/go-plugins 中找到。
近期啟動一個(gè)項(xiàng)目,業(yè)務(wù)端使用的python,要爬取多維度的數(shù)據(jù)。有兩個(gè)業(yè)務(wù)模塊使用的多進(jìn)程(發(fā)現(xiàn)python多線程有弊端),其他業(yè)務(wù)打算利用go(線程和協(xié)程)的特性,以微服務(wù)的模式實(shí)現(xiàn)。其實(shí)直接go buildmode也可以實(shí)現(xiàn),經(jīng)團(tuán)隊(duì)討論還是采用了微服務(wù)方案,更有長遠(yuǎn)意義
持續(xù)補(bǔ)充...
Go語言由Google公司開發(fā),并于2009年開源,相比Java/Python/C等語言,Go尤其擅長并發(fā)編程,性能堪比C語言,開發(fā)效率肩比Python,被譽(yù)為“21世紀(jì)的C語言”。
Go語言在云計(jì)算、大數(shù)據(jù)、微服務(wù)、高并發(fā)領(lǐng)域應(yīng)用應(yīng)用非常廣泛。BAT大廠正在把Go作為新項(xiàng)目開發(fā)的首選語言。
Go語言能干什么?
1、服務(wù)端開發(fā):以前你使用C或者C++做的那些事情,用Go來做很合適,例如日志處理、文件系統(tǒng)、監(jiān)控系統(tǒng)等;
2、DevOps:運(yùn)維生態(tài)中的Docker、K8s、prometheus、grafana、open-falcon等都是使用Go語言開發(fā);
3、網(wǎng)絡(luò)編程:大量優(yōu)秀的Web框架如Echo、Gin、Iris、beego等,而且Go內(nèi)置的 net/http包十分的優(yōu)秀;
4、Paas云平臺領(lǐng)域:Kubernetes和Docker Swarm等;
5、分布式存儲領(lǐng)域:etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;
6、區(qū)塊鏈領(lǐng)域:區(qū)塊鏈里面有兩個(gè)明星項(xiàng)目以太坊和fabric都使用Go語言;
7、容器虛擬化:大名鼎鼎的Docker就是使用Go語言實(shí)現(xiàn)的;
8、爬蟲及大數(shù)據(jù):Go語言天生支持并發(fā),所以十分適合編寫分布式爬蟲及大數(shù)據(jù)處理。