日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jupiter 依赖_Jupiter 介绍

發(fā)布時(shí)間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jupiter 依赖_Jupiter 介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

# Jupiter 介紹

Jupiter 是斗魚開源的一套微服務(wù)治理框架,提供豐富的后臺(tái)功能,管理應(yīng)用的資源、配置,應(yīng)用的性能、配置等可視化。 Jupiter 是羅馬神話的眾神之神,在天界掌管諸神,在互聯(lián)網(wǎng)掌管所有微服務(wù)!

# 架構(gòu)圖

# 目標(biāo)

我們致力于將 Go 微服務(wù)框架標(biāo)準(zhǔn)化,統(tǒng)一錯(cuò)誤碼、日志、監(jiān)控、注冊(cè)、流控的 Schema。將微服務(wù)的各個(gè)模塊可觀測(cè)、可治理,管理微服務(wù)研發(fā)側(cè)的全套生命周期。

# 功能點(diǎn) gRPC:基于官方 gRPC 開發(fā),集成流控和多數(shù)據(jù)中心方式的服務(wù)注冊(cè),支持多種 roundrobin,p2c 等負(fù)載均衡策略;

配置:使用 toml、yaml 方式管理配置,規(guī)范化核心配置,結(jié)合遠(yuǎn)程配置中心,實(shí)現(xiàn)配置版本管理和更新,查看配置依賴關(guān)系;

日志:基于 zap 日志類庫,實(shí)現(xiàn)高性能日志庫,并對(duì)不同環(huán)境和條件,實(shí)現(xiàn)日志庫的自動(dòng)降級(jí),并對(duì)服務(wù)端,客戶端的慢日志通過配置條件,實(shí)現(xiàn)全部慢日志接入;

監(jiān)控:基于 prometheus go sdk 類庫,實(shí)現(xiàn)對(duì)服務(wù)端,客戶端的數(shù)據(jù)監(jiān)控,并與 prometheus、cond、etcd 數(shù)據(jù)打通,實(shí)現(xiàn)應(yīng)用自動(dòng)化數(shù)據(jù)采集;

數(shù)據(jù)庫:基于 gorm 的封裝,將數(shù)據(jù)庫的 trace,慢日志,監(jiān)控進(jìn)行了采集;

緩存:基于 go-redis 的封裝,將數(shù)據(jù)庫的 trace,慢日志,監(jiān)控進(jìn)行了采集,并實(shí)現(xiàn)了單個(gè) redis、多從庫 redis,客戶端 redis 分片,服務(wù)端 redis 分片的 api;

系統(tǒng)錯(cuò)誤碼:區(qū)分框架和業(yè)務(wù)的錯(cuò)誤碼,將框架錯(cuò)誤碼文檔自動(dòng)生成,自動(dòng)化的錯(cuò)誤碼 SRE 分析工具;

工程化:基于服務(wù)標(biāo)準(zhǔn)、創(chuàng)建、開發(fā)、運(yùn)行、治理等生命周期,完成了Jupiter對(duì)項(xiàng)目的工程化;

服務(wù)治理:基于監(jiān)控,etcd,配置中心,對(duì)服務(wù)實(shí)現(xiàn)了良好的可觀測(cè)性,可控制性;

# 快速開始

要求 Go version>=1.13 and GO111MODULE=on

# 安裝

# 理念

# 工程化

目前大部分框架側(cè)重點(diǎn)大部分在協(xié)議和編解碼,過度的關(guān)注于技術(shù)細(xì)節(jié),框架在投入生產(chǎn)環(huán)節(jié)會(huì)帶來一堆工程問題。

因此我們Jupiter瞄準(zhǔn)于企業(yè)級(jí)的工程化方案,將服務(wù)的標(biāo)準(zhǔn)、創(chuàng)建、開發(fā)、運(yùn)行、治理整個(gè)生命周期作為Jupiter的一部分,以工程效率、工程質(zhì)量、工程可靠性等為指標(biāo),解決了公司大量的工程化問題,降低了研發(fā)人員的開發(fā)成本。 制定標(biāo)準(zhǔn):制定了服務(wù)的配置、鏈路、監(jiān)控、header 頭等標(biāo)準(zhǔn);

腳手架:能夠通過命令行,實(shí)現(xiàn)服務(wù)的創(chuàng)建,升級(jí)等功能;

配套設(shè)施:實(shí)現(xiàn)程序的開發(fā),ci,運(yùn)行,治理,提升工程效率,質(zhì)量,可靠性;

工程化的管理使得我們可以保質(zhì)保量的對(duì)項(xiàng)目進(jìn)行開發(fā),這種理念正是現(xiàn)在業(yè)界所缺少的。

# 服務(wù)治理

衡量一個(gè)框架的好壞,除了提供高性能 RPC 通信以外,還要包括提供優(yōu)質(zhì)的服務(wù)治理能力。

我們Jupiter經(jīng)歷了多個(gè)版本的迭代以后,目前的服務(wù)治理能力在業(yè)界內(nèi)是非常出色的。 更完善的服務(wù)監(jiān)控,從服務(wù)指標(biāo)上,我們依據(jù) Google SRE 文檔制定監(jiān)控指標(biāo)(延遲、流量、錯(cuò)誤和飽和度),并對(duì)各個(gè)指標(biāo)進(jìn)行了服務(wù)監(jiān)控;從應(yīng)用維度上,我們能夠看到應(yīng)用實(shí)例監(jiān)控、應(yīng)用大盤監(jiān)控、全部應(yīng)用大盤監(jiān)控、各種不同指標(biāo)的 top 榜,實(shí)時(shí)監(jiān)測(cè)服務(wù)質(zhì)量。

更有價(jià)值的錯(cuò)誤報(bào)警。我們對(duì)服務(wù)進(jìn)行了錯(cuò)誤收斂,規(guī)范系統(tǒng)錯(cuò)誤碼和業(yè)務(wù)錯(cuò)誤碼,并且能夠自動(dòng)生成對(duì)應(yīng)的錯(cuò)誤碼文檔,當(dāng)錯(cuò)誤發(fā)生時(shí),我們通過文檔就能準(zhǔn)確找到錯(cuò)誤的位置,提升錯(cuò)誤排查速度。

更全面的服務(wù)控制。我們利用配置中心和 etcd,將服務(wù)做到可控制性。

更全面的 SOP。我們通過全鏈路壓測(cè)、混沌工程等方式,提前解決掉系統(tǒng)中可能存在的嚴(yán)重問題,做好 SOP 手冊(cè),這樣當(dāng)問題真正來臨的時(shí)候,我們才會(huì)從容處理。

# 擁抱變化

Web 開發(fā)和運(yùn)維技術(shù)在不斷的發(fā)展,短短幾年已涌現(xiàn)出了非常多的計(jì)算形態(tài),如云計(jì)算、邊緣計(jì)算、容器化、網(wǎng)格化、Serverless 等。服務(wù)保障技術(shù)方面,異地多活、混沌工程也在不斷發(fā)展。

語言棧方面,很多公司也在從早期單一的 PHP、Java 棧擴(kuò)大到多語言棧并存的局面,特別是近年來 Golang 因在容器化和運(yùn)維效率上的優(yōu)勢(shì),越來越多的被應(yīng)用到 Web 服務(wù)開發(fā)。但每次技術(shù)迭代,享受效率提升的同時(shí),也在不斷經(jīng)歷應(yīng)用改造和遷移的痛苦。

以斗魚為例,從 2016 年底我們開始改造基礎(chǔ)設(shè)施,啟動(dòng)應(yīng)用服務(wù)化建設(shè)。短短三年就經(jīng)歷了公有云、異地多活、容器化部署等階段,目前也在部分業(yè)務(wù)中探索邊緣計(jì)算和 Serverless 等新的計(jì)算形態(tài)。2017 年開始,我們將語言棧從單一的 PHP 擴(kuò)展為以 Golang、Java、PHP 為主的多語言棧,隨之而來的是多 RPC 協(xié)議的混戰(zhàn),http1.1、dubbo、gRPC、私有 RPC 協(xié)議紛繁冗雜,聯(lián)調(diào)效率極低。經(jīng)過一段時(shí)間的迭代,目前已基本統(tǒng)一為外部調(diào)用以 http1.1 為主、內(nèi)部調(diào)用以 gRPC 為主,減少自定義 RPC 協(xié)議的使用。

從 Golang 應(yīng)用的角度來看,面臨的是一個(gè)在不斷變化的運(yùn)行環(huán)境和持續(xù)豐富的外部環(huán)境,這將不斷的產(chǎn)生新的問題,比如: 容器化有 IP 漂移的問題,傳統(tǒng)基于 IP 的服務(wù)注冊(cè)和運(yùn)維方式需要作出改變。

Serverless 的服務(wù)監(jiān)控問題,指標(biāo)采集以及鏈路追蹤等如何適配?

Service Mesh 相對(duì)于傳統(tǒng)部署方式,服務(wù)注冊(cè)和發(fā)現(xiàn)的方式有很大變化。

多機(jī)房部署中,跨機(jī)房調(diào)用這種’弱網(wǎng)環(huán)境‘ 對(duì)服務(wù)超時(shí)、重試、熔斷、負(fù)載均衡等可用性策略有更高要求。

不同于傳統(tǒng) RPC 框架和微服務(wù)治理框架,Jupiter從一開始就以應(yīng)用為中心,定位為一個(gè)微服務(wù)應(yīng)用的運(yùn)行時(shí)。在歷次技術(shù)架構(gòu),如: 多機(jī)房建設(shè)

公有化

容器化

中,Jupiter有效的降低了應(yīng)用遷移和升級(jí)的成本,期間也積累了許多架構(gòu)經(jīng)驗(yàn)。未來也必將在 Service Mesh

Serverless

等計(jì)算形態(tài)中,發(fā)揮重要的作用。

# 提升開發(fā)效率

開發(fā)效率是基礎(chǔ)框架和類庫的核心關(guān)注點(diǎn)之一,Jupiter從一開始就挑選和使用了大量開源類庫,但也因此帶來了若干問題: 開源類庫質(zhì)量參差不齊。如果不加約束的引用開源類庫,類庫的缺陷就會(huì)不受限的在組織內(nèi)傳導(dǎo),修復(fù)的成本非常高。

許多類庫并未遵守版本規(guī)范,這將會(huì)產(chǎn)生兼容性問題,影響開發(fā)效率。

許多功能都有多個(gè)類庫可供選擇,不加約束將增加維護(hù)和溝通成本,也帶來了一定地風(fēng)險(xiǎn)。

不同類庫代碼風(fēng)格差異大,有一定溝通成本

不同類庫使用的錯(cuò)誤處理和錯(cuò)誤碼、日志、指標(biāo)采集、對(duì) Debug 模式的支持不盡相同,這既影響開發(fā)效率,也影響服務(wù)治理。

基于上述原因,我們?cè)诨A(chǔ)框架和類庫中,對(duì)主要應(yīng)用場(chǎng)景常用的類庫都增加了一層封裝,盡量減少對(duì)第三方類庫的直接使用。封裝的方法有: 利用 Golang 在語言層面上的一些機(jī)制進(jìn)行簡(jiǎn)易封裝:

type alias: type T = package2.T

variable binding: var Func = package2.Func

統(tǒng)一 New 方法,以簡(jiǎn)化創(chuàng)建過程,并達(dá)到配置驅(qū)動(dòng)的效果

通過 type embedding 擴(kuò)展類庫功能,為第三方庫擴(kuò)展如動(dòng)態(tài)配置、指標(biāo)收集、鏈路追蹤、統(tǒng)一日志、統(tǒng)一錯(cuò)誤碼等治理能力。

通過 interface 抽象限制調(diào)用行為。對(duì)于未穩(wěn)定的類庫,可以采用這種方式限制用戶的調(diào)用行為,以便將來進(jìn)行完善和替換。

基于以上方法,Jupiter既提高了開發(fā)效率,也有效的降低了開發(fā)風(fēng)險(xiǎn)。

同時(shí),Jupiter為封裝的第三方類庫和自研類庫提供了統(tǒng)一的治理能力,包括: 統(tǒng)一的指標(biāo)采集

鏈路追蹤

日志埋點(diǎn)

統(tǒng)一錯(cuò)誤處理

動(dòng)態(tài)配置

安全策略

Debug 模式

等,可以極大的提高應(yīng)用開發(fā)效率。

# 總結(jié)

Web 后臺(tái)技術(shù)在設(shè)計(jì)、開發(fā)、部署、運(yùn)維各個(gè)階段都在快速發(fā)展,微服務(wù)應(yīng)用架構(gòu)方法、運(yùn)行環(huán)境和治理環(huán)境也都在不斷變化。

基礎(chǔ)框架作為溝通業(yè)務(wù)邏輯和運(yùn)行環(huán)境、治理環(huán)境的媒介,是穩(wěn)定業(yè)務(wù)的重要手段。

Jupiter服務(wù)于整體技術(shù)架構(gòu),并緊隨業(yè)界技術(shù)趨勢(shì),三年我們對(duì)Jupiter的研發(fā),其具有超出同行很多優(yōu)秀的特性,詳情請(qǐng)見后文。

總結(jié)

以上是生活随笔為你收集整理的jupiter 依赖_Jupiter 介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。