中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

企業項目如何遷移go-zero

發布時間:2021-10-20 09:28:31 來源:億速云 閱讀:136 作者:iii 欄目:編程語言

本篇內容介紹了“企業項目如何遷移go-zero”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

起源

聊聊與go-zero結緣

最先接觸go-zero是2020年10月國慶假期,說來也巧,看到有人在go-micro群中問go-zero情況,當時go-zero作者在群中就大概回答了一下,引起了我的好奇,當時公司用的go-micro1.x,因為go-micro版本真的太混亂了,2還沒多少人用明白,現在又搞了個3,而且這幾個大版本之間高度不兼容,簡直一團糟。我抱著好奇心去github.com查看了go-zero,當時并沒有因為它的star數、文檔少而放棄,哈哈,抱著試玩的心態去go get它,從此發現了新大陸,并加入了go-zero群,開始了go-zero之旅。

選擇它的幾點原因

  • 微服務:在現在這個大環境下,單體服務詬病已經越來越多了,項目大起來之后 “牽一發而動全身” 的教訓比比皆是,維護越來越困難,測試測起來也是很頭疼,構建速度慢等等,在這樣趨勢下擁抱微服務成為了大趨勢,go-zero就是一個微服務框架并且能為我解決很多實際項目中遇到的痛點、難點

  • 穩定性:內外同源。穩定性是我很看重的,他們公司內外同源勢必保證了此框架的穩定性。

  • 高并發:經歷了2020年疫情期間,“曉黑板” 輕松獲得支撐千萬日活服務

  • 工作效率:說到工作效率,必須要提的就是goctl,goctl配合go-zero所有代碼基本都是可以通過這個工具生成,只需要關心自己的業務邏輯即可,包括一鍵生成dockerfile,k8s的yaml文件,簡直不要太爽,大大提高了工作效率

  • 代碼質量:大概看了一些go-zero的源碼,代碼質量上感覺還是沒得噴的,至少感覺比我自己寫的好很多,哈哈,這個每個人看法不同,大家可以去親自看一下。

  • 團隊:當時加了go-zero作者微信,感覺他為人很謙和,無論問一些比較基礎的東西還是一些線上實戰經驗,也總是會耐心給我解答、意見,在使用期間我也提了一些bug,go-zero團隊都能及時的解決,迭代速度真的讓我驚艷。大家應該都知道,在國內做開源有多么不容易。

  • 對比go其他微服務框架:go的微服務框架大概我玩過go-micro、go-kit、kratos、rpcx、go-zero。

    • go-micro我開始就說了是版本真心有點混亂

    • go-kit也不錯但是資料相對來說較少

    • kratos經過b站源碼泄漏大家應該都知道它了,前一段時間都斷更了,差點安樂死,毛神在issue中說太忙了,不過他們在出2.0版本了,還是很期待

    • rpcx 玩了一下玩的不多,但是他們宣傳是“好未來”也在用,go-zero就是“好未來”的呀,哈哈

    • go-zero 上面我都說過了,就不再提了。

設計架構

在介紹go-zero實際使用前,先說一下整體架構,更方便理解

企業項目如何遷移go-zero

CI/CD

Step1:本地deveploer開發好代碼之后提交到gitlab(這里分支就不詳細說明了)

Step2:jenkins,使用pipline方式部署

  • 從gitlab拉取代碼

  • docker build ,基于最新gitlab上的code構建鏡像

  • docker push,將構建好的鏡像推送到鏡像倉庫(當然一般都是有自己私有鏡像倉庫比如harbor,用阿里云的也可以)

  • kubectl apply -f xxx.yaml :使用kubectl 部署到k8s中 (阿里云k8s容器服務那么好用,不用豈不可惜?)

kubectl部署之后,k8s就會根據你的service中的yaml定義的鏡像來你的鏡像倉庫拉取剛才你打包的最新鏡像,so~~上線成功啦!

嗯,有的同學說,阿里云k8s好用是好用,可是我不會寫or不想寫Dockerfile,不會寫k8s的yaml or 不想寫,沒關系,goctl說放開它,讓我來

生成 Dockerfile

$ goctl docker -go user.go

生成k8s yaml

$ goctl kube deploy -name user-api -namespace blog -image user:v1 -o user.yaml -port 2233

所以,就是這么簡單

訪問流程

app/web/pc 透過防火墻,首先訪問到阿里云的負載均衡SLB,同時SLB可以將你的后端服務器ip隱藏起來,同時可以預防DDOS攻擊,雖然有額度的,但是好過沒有~~,然后SLB訪問到前面的nginx,nginx作為代理使用,k8s中的service通過 nodeport方式暴露出來在nignx中代理到該service,同時在nginx中上報日志到kafka,然后api可以在etcd中拿到多個rpc節點,調用多個后端rpc服務,rpc負責跟db交互、或者調用其他rpc獲取數據(當然api、rpc之間是通過etcd動態發現的)返回給api,api就是聚合數據,然后層層返回到客戶端。

整體架構都是高可用高可用

項目設計

項目地址:https://github.com/Mikaelemmmm/gozerobasic

go的項目比較靈活不像java已經形成統一標準化了,所以對于不同項目的結構都不一樣,我的做法是如下:

企業項目如何遷移go-zero

整個項目使用的一個大倉,項目fishtwo根目錄下:

  • app : 應用內部程序

  • build:構建、以及腳本等

  • lib:應用程序用到的內部庫

  • app下分為3個模塊:

    • gateway:api服務

    • services: rpc服務

    • jobs:日常要處理的任務(這個可以使用 go-zero 作者的 go-queue ,測試了下很好用,哈哈,后面搞好也會寫進來)

“企業項目如何遷移go-zero”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祥云县| 奇台县| 湘阴县| 梓潼县| 邵阳县| 鹤岗市| 礼泉县| 东阳市| 成安县| 武宁县| 赫章县| 和林格尔县| 景德镇市| 乐东| 阿巴嘎旗| 临武县| 韩城市| 西盟| 柞水县| 涞水县| 九龙城区| 桓台县| 鹤峰县| 新乡市| 连城县| 尚义县| 洛南县| 雅安市| 平江县| 洮南市| 抚远县| 万山特区| 公主岭市| 当雄县| 陆河县| 江孜县| 兴和县| 福鼎市| 彭州市| 大渡口区| 视频|