首發特性:goproxy.cn 現已推出首個 Go 模塊代理統計數據 API

前言

這周很值得記念,首先是 goproxy.cn 已緩存的模塊版本總數突破了一百萬,這甚至比起 Go 官方的 proxy.golang.org 已緩存的還要多出很多。其次是 goproxy.cn 的日訪問量已穩定在千萬級,正在朝着億級進發,目前這在國內我瞭解到的別的幾個同類服務中是最多的了。另外尤其重要的一點是,通過咱們的不懈努力,甚至付出了兩次事故的代價(詳見:status.goproxy.cn),咱們終於使得 goproxy.cn 達到了零錯誤率!如今的 goproxy.cn 能夠說是很穩的了,你們能夠放心使用。git

剛剛在開頭稍微爲這一個月發生的事情作了個小總結。接下來講一下本次的重點,也就是 goproxy.cn 推出了 Go 模塊代理世界中的首個統計數據 API(文檔詳見:goproxy.cn/stats),這是個本來計劃在二月底就發佈的特性。統計數據 API 其實很早就開發完了(幾個月前就基本完工了),但卻遲遲未發佈,主要緣由是跟咱們前一陣子在探索零錯誤率相關,咱們想在一個完美的時間點把它介紹給你們。這一陣子有不少大佬催過我,好比光無聞大哥一人就已經催過我不少次了……在這裏統一道個歉……固然,遲到總比不到好,讓你們久等了!github

目前先推出了 4 種呼聲較高的 API,後續可能還會有其餘 API 被添加進來。golang

注意:目前 goproxy.cn 的統計數據 API 所展現的只是最近三個月的數據。json

API:獲取服務摘要

首先是一個用於獲取服務摘要信息的 API,經過調用這個 API 你能夠獲取到 goproxy.cn 中諸如全部模塊版本的總尺寸和總數等信息。緩存

獲取服務摘要 API 的 URL 是固定的,沒有路徑參數:goproxy.cn/stats/summarysvg

{
    "cacher_size": 2663405247231,
    "module_version_count": 1035421,
    "module_host_count": 1120,
    "top_10_module_hosts": [
        {"module_host": "github.com", "module_version_count": 921606},
        {"module_host": "k8s.io", "module_version_count": 24982},
        {"module_host": "gitlab.com", "module_version_count": 13172},
        {"module_host": "gopkg.in", "module_version_count": 10479},
        {"module_host": "golang.org", "module_version_count": 8000},
        {"module_host": "gitee.com", "module_version_count": 4650},
        {"module_host": "bitbucket.org", "module_version_count": 4177},
        {"module_host": "sigs.k8s.io", "module_version_count": 3280},
        {"module_host": "google.golang.org", "module_version_count": 2703},
        {"module_host": "istio.io", "module_version_count": 2487}
    ]
}

上面的示例響應中各字段的含義以下:gitlab

  • cacher_size:全部模塊版本的總尺寸,單位是「字節」
  • module_version_count:全部模塊版本的總數
  • module_host_count:模塊主機地址的總數
  • top_10_module_hosts:所擁有的模塊版本數排名前十的模塊主機地址
  • top_10_module_hosts.module_host:模塊主機地址
  • top_10_module_hosts.module_version_count:模塊主機地址所擁有的模塊版本總數

API:獲取模塊趨勢

而後呼聲蠻高的一個 API 就是獲取服務中的模塊趨勢,有不少人好奇本身的模塊在 goproxy.cn 中的活躍度排名到底是怎樣的。google

目前咱們提供了三類趨勢,它們均只返回一段時間內的最活躍的最多前 1000 個模塊:spa

  • goproxy.cn/stats/trends/latest:獲取最新趨勢
  • goproxy.cn/stats/trends/last-7-days:獲取最近 7 天的趨勢
  • goproxy.cn/stats/trends/last-30-days:獲取最近 30 天的趨勢
[
    {"module_path": "golang.org/x/sys", "download_count": 1822180},
    {"module_path": "golang.org/x/net", "download_count": 1713080},
    {"module_path": "golang.org/x/tools", "download_count": 1503522},
    {"module_path": "golang.org/x/crypto", "download_count": 1032270},
    {"module_path": "gopkg.in/yaml.v2", "download_count": 578120}
]

上面的示例響應中各字段的含義以下:代理

  • module_path:模塊路徑
  • download_count:模塊路徑對應的全部模塊版本的總下載次數

API:獲取模塊(版本)統計

固然,咱們支持獲取服務中指定模塊(版本)的統計,這也算是統計數據 API 的剛需了。

獲取模塊(版本)統計的 API 的 URL 格式爲 goproxy.cn/stats/<module-path>[@<module-version>]。如 goproxy.cn/stats/golang.org/x/text 表示獲取模塊路徑爲 golang.org/x/text 的模塊的全部模塊版本的總統計,而 goproxy.cn/stats/golang.org/x/text@v0.3.2 表示獲取該模塊的 v0.3.2 版本的統計。

{
    "download_count": 476705,
    "last_30_days": [
        {"date": "2020-03-25T00:00:00Z", "download_count": 15940},
        {"date": "2020-03-24T00:00:00Z", "download_count": 16884},
        {"date": "2020-03-23T00:00:00Z", "download_count": 15842},
        {"date": "2020-03-22T00:00:00Z", "download_count": 11232},
        {"date": "2020-03-21T00:00:00Z", "download_count": 11894},
        {"date": "2020-03-20T00:00:00Z", "download_count": 14968},
        {"date": "2020-03-19T00:00:00Z", "download_count": 11017},
        {"date": "2020-03-18T00:00:00Z", "download_count": 5209},
        {"date": "2020-03-17T00:00:00Z", "download_count": 5759},
        {"date": "2020-03-16T00:00:00Z", "download_count": 4166},
        {"date": "2020-03-15T00:00:00Z", "download_count": 2145},
        {"date": "2020-03-14T00:00:00Z", "download_count": 2218},
        {"date": "2020-03-13T00:00:00Z", "download_count": 4609},
        {"date": "2020-03-12T00:00:00Z", "download_count": 5503},
        {"date": "2020-03-11T00:00:00Z", "download_count": 5412},
        {"date": "2020-03-10T00:00:00Z", "download_count": 6453},
        {"date": "2020-03-09T00:00:00Z", "download_count": 4798},
        {"date": "2020-03-08T00:00:00Z", "download_count": 2323},
        {"date": "2020-03-07T00:00:00Z", "download_count": 2332},
        {"date": "2020-03-06T00:00:00Z", "download_count": 4806},
        {"date": "2020-03-05T00:00:00Z", "download_count": 6339},
        {"date": "2020-03-04T00:00:00Z", "download_count": 5858},
        {"date": "2020-03-03T00:00:00Z", "download_count": 5579},
        {"date": "2020-03-02T00:00:00Z", "download_count": 8862},
        {"date": "2020-03-01T00:00:00Z", "download_count": 2119},
        {"date": "2020-02-29T00:00:00Z", "download_count": 2053},
        {"date": "2020-02-28T00:00:00Z", "download_count": 4735},
        {"date": "2020-02-27T00:00:00Z", "download_count": 6578},
        {"date": "2020-02-26T00:00:00Z", "download_count": 4954},
        {"date": "2020-02-25T00:00:00Z", "download_count": 5318}
    ],
    "top_10_module_versions": [
        {"module_version": "v0.3.2", "download_count": 232795},
        {"module_version": "v0.3.0", "download_count": 146009},
        {"module_version": "v0.3.1-0.20180807135948-17ff2d5776d2", "download_count": 67096},
        {"module_version": "v0.3.1-0.20181227161524-e6919f6577db", "download_count": 11494},
        {"module_version": "v0.0.0-20160726164857-2910a502d2bf", "download_count": 11223},
        {"module_version": "v0.0.0-20170915032832-14c0d48ead0c", "download_count": 3991},
        {"module_version": "v0.3.1-0.20171227012246-e19ae1496984", "download_count": 1128},
        {"module_version": "v0.0.0-20170915090833-1cbadb444a80", "download_count": 937},
        {"module_version": "v0.3.1-0.20181030141323-6f44c5a2ea40", "download_count": 480},
        {"module_version": "v0.3.1", "download_count": 353}
    ]
}

上面的示例響應中各字段的含義以下:

  • download_count:模塊(版本)的總下載次數
  • last_30_days:模塊(版本)最近 30 天的統計
  • last_30_days.date:模塊(版本)統計的日期
  • last_30_days.downlaod_count:模塊(版本)單日的下載次數
  • top_10_module_versions:該字段僅在根據模塊路徑獲取其對應的全部模塊版本的總統計時纔會返回,表示其下載次數排行前十的模塊版本
  • top_10_module_versions.module_version:模塊版本
  • top_10_module_versions.download_count:模塊版本的下載次數

API:獲取模塊總下載次數徽章

爲了使模塊做者們能更好地展現本身的模塊在 goproxy.cn 的總下載次數,咱們支持了 SVG 徽章。

獲取模塊總下載次數徽章的 API 的 URL 格式爲 goproxy.cn/stats/<module-path>/badges/download-count.svg

你能夠經過下述 Markdown 語法輕鬆地將指定模塊的總下載次數徽章放入項目 README.md 中:

[![goproxy.cn](https://goproxy.cn/stats/<module-path>/badges/download-count.svg)](https://goproxy.cn)

好比 goproxy.cn/stats/golang.org/x/text/badges/download-count.svg

goproxy.cn

結語

因爲咱們是首家支持統計數據 API 的 Go 模塊代理,因此咱們預留了一段時間的功能探索期,在此期間內咱們歡迎你們隨時經過 goproxy.cn/stats 頁面中提到的聯繫方式來分享大家的意見建議,一塊兒爲我們中國 Go 語言社區的這個 Go 模塊代理打造出一個功能性良好的統計數據 API。

最後再強調一點,goproxy.cn 由七牛運營,服務於 Go 語言社區,它永久免費,也一如既往地不加以任何形式的帶寬限制、速率限制,你們能夠敞開了用、放心地用。有問題?問;有建議?提。咱們一直那裏,歡迎隨時來訪。

相關文章
相關標籤/搜索