偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

推薦一些值得學(xué)習(xí)的開(kāi)源項(xiàng)目和框架

開(kāi)源
下面我來(lái)推薦一些我看過(guò)同時(shí)覺(jué)得不錯(cuò)的項(xiàng)目(幾乎都是我參與過(guò)的),由易到難,其中也會(huì)包含 Java 和 Go 的項(xiàng)目,包含主流的中間件和云原生項(xiàng)目。

今天收到球友的問(wèn)題,讓推薦一些值得看的開(kāi)源項(xiàng)目,覺(jué)得 netty 這些太復(fù)雜了不太好上手。

確實(shí)如此,我們?nèi)粘3S玫?Spring、Netty 確實(shí)由于發(fā)展了多年,看起來(lái)比較頭大。

下面我來(lái)推薦一些我看過(guò)同時(shí)覺(jué)得不錯(cuò)的項(xiàng)目(幾乎都是我參與過(guò)的),由易到難,其中也會(huì)包含 Java 和 Go 的項(xiàng)目,包含主流的中間件和云原生項(xiàng)目。

Java 項(xiàng)目

xxl-job

難度:???? 推薦指數(shù):??????

xxl-job 是一個(gè)很經(jīng)典的調(diào)度框架,目前在 GitHub 上也有 27k star 的關(guān)注,因?yàn)楣δ懿粡?fù)雜所以最近也沒(méi)有怎么更新了。

大家日常都會(huì)使用這類調(diào)度框架,所以理解難度非常低,加上他的實(shí)現(xiàn)也比較簡(jiǎn)單,比如:

  • 使用 MySQL 的鎖來(lái)簡(jiǎn)單粗暴的解決分布式鎖的問(wèn)題
  • 線程池的使用:因?yàn)槊總€(gè)任務(wù)的調(diào)度都需要盡可能的互相不影響,所以里面大量使用了線程池,同時(shí)對(duì)如何獲取異步任務(wù)結(jié)果也有一些最佳實(shí)踐。
  • RPC 調(diào)用:里面內(nèi)置了一個(gè) RPC 框架,也是作者編寫(xiě)的,其中的實(shí)現(xiàn)原理也不復(fù)雜,建議看看源碼,可以更好的理解我們?cè)诠ぷ髦杏玫?rpc 框架。

cim

難度:?????? 推薦指數(shù):?????? 

它具備 IM 即時(shí)通訊的基本功能,同時(shí)基于它可以實(shí)現(xiàn):

  • 即時(shí)通訊
  • 消息推送
  • IOT 消息平臺(tái)

通過(guò) cim 你可以學(xué)習(xí)到分布式系統(tǒng)中:

  • 元數(shù)據(jù)是如何存放和同步的。
  • RPC 調(diào)用如何實(shí)現(xiàn)。
  • 長(zhǎng)鏈接系統(tǒng)如何實(shí)現(xiàn)。
  • 復(fù)雜的分布式系統(tǒng)如何做集成測(cè)試等。

詳細(xì)的介紹可以查看項(xiàng)目首頁(yè)的 readme,發(fā)現(xiàn)有什么需要優(yōu)化的地方(其實(shí)還蠻多 todo 沒(méi)有做)都?xì)g迎提交 PR。

PowerJob

難度:?????? 推薦指數(shù):????????

PowerJob 也是一個(gè)調(diào)度框架,只是他有后發(fā)優(yōu)勢(shì),結(jié)合了市面上其他調(diào)度系統(tǒng)的優(yōu)點(diǎn)同時(shí)也新增了一些功能,以下是他功能的官方對(duì)比圖:

社區(qū)相對(duì)于 xxl-job 也更加活躍,目前剛發(fā)布了 5.1.0 版本,同時(shí)社區(qū)也整理許多學(xué)習(xí)的文章和資料:

它使用了 Akka 來(lái)實(shí)現(xiàn)遠(yuǎn)程通信,對(duì)這部分內(nèi)容感興趣的朋友不容錯(cuò)過(guò),可以看到一些最佳實(shí)踐。其中的代碼寫(xiě)的也很規(guī)范,一些類的設(shè)計(jì)很好,可擴(kuò)展性很高,比如常用的執(zhí)行器都是通過(guò)一個(gè)MapProcessor 擴(kuò)展而來(lái)的。

推薦大家從任務(wù)調(diào)度那一塊開(kāi)始看:tech.powerjob.worker.actors.TaskTrackerActor#onReceiveServerScheduleJobReq

Pulsar

難度:???????? 推薦指數(shù):????????

Pulsar 是目前主流的云原生消息隊(duì)列中間件,現(xiàn)在使用的公司也非常多,通過(guò)他你可以學(xué)習(xí)到:

  • API 設(shè)計(jì):Pulsar 的 client 是直接面向開(kāi)發(fā)者的,在易用性的前提下每次迭代升級(jí)還要考慮到兼容性。
  • 異步調(diào)用:Pulsar 里幾乎所有的請(qǐng)求都是異步的,所以大量使用了異步?回調(diào)(雖然也有一些坑),可以學(xué)到一些高性能代碼的編寫(xiě)方式。
  • Netty 的最佳用法:消息收發(fā)的底層網(wǎng)絡(luò)框架也是 Netty 支撐的,Pulsar 對(duì)它做了封裝。
  • 基于 protocol 的多語(yǔ)言客戶端。
  • 因?yàn)?Pulsar 的通信編解碼使用的是 protocol,本身是可以基于它生成各種語(yǔ)言的 API,所以在此基礎(chǔ)上編寫(xiě)其他語(yǔ)言的客戶端就非常方便。

不過(guò)由于 Pulsar 本身的復(fù)雜性,上手起來(lái)門檻還是不低,推薦先從客戶端的代碼(Java 和  Go 的都可以)上手。

StarRocks

難度:?????????? 推薦指數(shù):????????

StarRocks 也是我最近才接觸到的 OLAP 數(shù)據(jù)庫(kù)項(xiàng)目,以前對(duì)這個(gè)領(lǐng)域的積累幾乎為零,所以也是從頭學(xué)習(xí)。

好在這段時(shí)間因?yàn)橛行枨笠步o它提交了幾個(gè) PR,逐漸熟悉起來(lái)了。

我接觸下來(lái)這些開(kāi)源項(xiàng)目,發(fā)現(xiàn) StarRocks 這類數(shù)據(jù)庫(kù)項(xiàng)目是最有前(錢)景的,畢竟和數(shù)據(jù)打交道的產(chǎn)品公司的付費(fèi)意愿會(huì)更高一些。

不過(guò)該項(xiàng)目確實(shí)對(duì)新手不太友好,最好是已經(jīng)接觸過(guò)大數(shù)據(jù)領(lǐng)域再學(xué)習(xí)會(huì)更合適一些,但也不要怕,我就是一個(gè)純小白,沒(méi)基礎(chǔ)就跟著代碼 debug,反正都是 Java 寫(xiě)的總能看懂。

OpenTelemetry

難度:???????? 推薦指數(shù):??????????

OpenTelemetry 現(xiàn)在作為云原生可觀測(cè)性的事實(shí)標(biāo)準(zhǔn),現(xiàn)在已經(jīng)逐步成為各大公司必備的技術(shù)棧了。

通過(guò)一個(gè) javaagent 就可以自動(dòng)采集應(yīng)用的 trace、metrics、logs 等數(shù)據(jù),這里先推薦 opentelemetry-java-instrumentation,因?yàn)槲覀內(nèi)粘J褂米疃嗟木褪腔谶@個(gè)項(xiàng)目打包出來(lái)的 javaagent,通過(guò)它可以學(xué)習(xí)到:

  • 如何編寫(xiě)任意函數(shù)的攔截器
  • trace 信息是如何在線程和進(jìn)程之間傳遞的
  • 一些常用框架是如何運(yùn)行的
  • 比如你需要了解 gRPC 的原理,就可以查看 OpenTelemetry 是如何對(duì)他埋點(diǎn)的,從而知曉他的核心原理。
  • 優(yōu)雅的 API 設(shè)計(jì)

同時(shí) OpenTelemetry 算是我看過(guò)最優(yōu)雅的代碼之一了,非常建議大家都看看。

Go(云原生項(xiàng)目)

cprobe

難度:?????? 推薦指數(shù):??????

cprobe 屬于可觀測(cè)性項(xiàng)目,他的目的是可以把各種 exporter 都整合在一起,比如 kafka_exporter, nginx_exporter, mysql_exporter 等。

同時(shí)還做了上層抽象,可以統(tǒng)一管理各種監(jiān)控對(duì)象的配置,這樣就可以部署一個(gè)進(jìn)程監(jiān)控所有的應(yīng)用了。

通過(guò)這個(gè)項(xiàng)目可以學(xué)到:

  • 監(jiān)控體系的基礎(chǔ)知識(shí),比如 Prometheus 和 metrics 等
  • Go 語(yǔ)言的基本用法

VictoriaLogs

難度:???????? 推薦指數(shù):????????

這是一個(gè)屬于 VictoriaMetrics 的一個(gè)子項(xiàng)目,通過(guò)這個(gè)名字應(yīng)該會(huì)知道他主要用于處理日志,可以把他理解為 ElasticSearch 的簡(jiǎn)易版,雖然功能簡(jiǎn)單了但資源消耗也會(huì)比 ES 低很多,具體可以看下面的壓測(cè)圖:

通過(guò)這個(gè)項(xiàng)目可以學(xué)到:

  • 數(shù)據(jù)在磁盤中是如何存儲(chǔ)和查詢的
  • Go 語(yǔ)言中關(guān)于 goroutine 和 channel 的一些最佳實(shí)踐 目前的版本還比較早,所以代碼都不太復(fù)雜,建議大家可以從查詢的入口開(kāi)始看起。

總結(jié)

以上都是我正經(jīng)接觸過(guò)的項(xiàng)目,如果是想長(zhǎng)期耕耘同時(shí)搞錢的話,推薦 StarRocks,目前也很火。

如果只是想提升在 Java 領(lǐng)域的水平,那推薦 Pulsar 和 OpenTelemetry,都有很多代碼最佳實(shí)踐。

如果想要入坑云原生和 Go 項(xiàng)目,那 cprobe 是比較合適的。

當(dāng)然不管是哪個(gè)項(xiàng)目最主要的還是堅(jiān)持,很多項(xiàng)目如果只是偶爾看一下很容易忘記,起碼要做到真正運(yùn)行起來(lái)然后 debug 過(guò)代碼。

參考鏈接:

  • https://www.yuque.com/powerjob/guidence/wu2e93。
  • https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/lib/logstorage/storage_search.go。
  • https://crossoverjie.top/tags/OpenTelemetry/。
  • https://crossoverjie.top/2024/10/09/ob/StarRocks-dev-env-build/。
責(zé)任編輯:姜華 來(lái)源: crossoverJie
相關(guān)推薦

2019-08-15 14:33:26

2009-06-23 15:52:55

J2EE學(xué)習(xí)開(kāi)源項(xiàng)目

2011-04-18 17:28:58

J2EE

2015-08-27 10:49:43

JavaScript開(kāi)發(fā)框架

2023-11-13 07:54:54

.NET Core開(kāi)源框架

2015-03-18 10:46:04

Android框架開(kāi)源

2021-05-14 09:49:47

React HookReact應(yīng)用

2023-03-29 09:03:36

開(kāi)源前端

2015-11-17 09:35:26

開(kāi)源學(xué)習(xí)框架

2020-12-08 08:28:22

開(kāi)源heyui-adminGuns

2020-12-08 15:44:53

開(kāi)源開(kāi)發(fā)程序員

2024-09-18 06:20:00

2013-04-07 10:40:55

前端框架前端

2022-09-07 18:23:06

Permify開(kāi)源

2024-03-20 10:59:37

開(kāi)源

2022-08-02 15:18:00

React開(kāi)源項(xiàng)目

2023-10-31 07:39:36

2017-10-24 05:20:13

推薦系統(tǒng)數(shù)據(jù)算法

2014-05-13 09:55:13

iOS開(kāi)發(fā)工具

2014-03-17 10:10:58

CC++編程書(shū)籍
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)