<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          阿里開源的10個神級項目

          共 8135字,需瀏覽 17分鐘

           ·

          2021-10-10 20:24

          大家好,我是蘇三,又跟大家見面了。

          前言

          最近趁著國慶節(jié)放假休息,特地整理了一下,阿里巴巴開源的10款神級項目。

          這些開源項目中的絕大多數(shù),我都在實際工作中用過,或者有同事用過。確實挺不錯,挺有價值的,現(xiàn)在推薦給大家。

          1. Druid

          Druid自稱是Java語言中最好的數(shù)據(jù)庫連接池,它能夠提供強大的監(jiān)控和擴展功能。監(jiān)控后臺如下圖所示:

          Druid的主要優(yōu)點如下:

          • 它能監(jiān)控數(shù)據(jù)庫訪問性能。
          • 它提供了WallFilter,它是基于SQL語義分析來實現(xiàn)防御SQL注入攻擊的。
          • 它提供了多種監(jiān)測連接泄漏的手段。
          • 它提供了數(shù)據(jù)庫密碼加密的功能。
          • 它能打印SQL執(zhí)行日志。

          github地址: https://github.com/alibaba/druid

          maven中央倉庫: https://mvnrepository.com/artifact/com.alibaba/druid

          配置maven依賴:


          ??com.alibaba
          ??druid
          ??${druid-version}

          2. fastjson

          fastjson是阿里巴巴的開源JSON解析庫,它可以解析JSON格式的字符串,支持將Java Bean序列化為JSON字符串,也可以從JSON字符串反序列化到JavaBean。

          fastjson的主要優(yōu)點如下:

          • 速度快,fastjson相對其他JSON庫的特點是快,從2011年fastjson發(fā)布1.1.x版本之后,其性能從未被其他Java實現(xiàn)的JSON庫超越。
          • 使用廣泛,fastjson在阿里巴巴大規(guī)模使用,在數(shù)萬臺服務(wù)器上部署,fastjson在業(yè)界被廣泛接受。在2012年被開源中國評選為最受歡迎的國產(chǎn)開源軟件之一。
          • 使用簡單,fastjson的API十分簡潔。
          //序列化
          String?text?=?JSON.toJSONString(obj);?
          //反序列化
          VO?vo?=?JSON.parseObject("{...}",?VO.class);?
          • 功能完備,支持泛型,支持流處理超大文本,支持枚舉,支持序列化和反序列化擴展。

          github地址: https://github.com/alibaba/fastjson

          maven中央倉庫: https://mvnrepository.com/artifact/com.alibaba/fastjson

          配置maven依賴:


          ????com.alibaba
          ????fastjson
          ????1.2.76

          3. Dubbo

          Apache Dubbo 是一款微服務(wù)開發(fā)框架,它提供了 RPC通信 與 微服務(wù)治理 兩大關(guān)鍵能力。這意味著,使用 Dubbo 開發(fā)的微服務(wù),將具備相互之間的遠(yuǎn)程發(fā)現(xiàn)與通信能力, 同時利用 Dubbo 提供的豐富服務(wù)治理能力,可以實現(xiàn)諸如服務(wù)發(fā)現(xiàn)、負(fù)載均衡、流量調(diào)度等服務(wù)治理訴求。

          同時 Dubbo 是高度可擴展的,用戶幾乎可以在任意功能點去定制自己的實現(xiàn),以改變框架的默認(rèn)行為來滿足自己的業(yè)務(wù)需求。它目前已交給Apache管理和維護(hù)。

          架構(gòu)圖如下:

          Dubbo的主要優(yōu)點如下:

          • 基于透明接口的RPC
          • 智能負(fù)載均衡
          • 自動服務(wù)注冊和發(fā)現(xiàn)
          • 高擴展性
          • 運行時流量路由
          • 可視化服務(wù)治理
          • 云原生友好

          github地址: https://github.com/apache/dubbo

          maven中央倉庫: https://mvnrepository.com/artifact/com.alibaba/dubbo/

          配置maven依賴:


          ????3.0.3



          ????
          ????????org.apache.dubbo
          ????????dubbo
          ????????${dubbo.version}
          ????

          ????
          ????????org.apache.dubbo
          ????????dubbo-dependencies-zookeeper
          ????????${dubbo.version}
          ????????pom
          ????


          4. Rocketmq

          Apache RocketMQ是一個分布式消息和流媒體平臺,具有低延遲、高性能和可靠性、萬億級容量和靈活的可擴展性。

          它提供了多種功能:

          • 消息傳遞模式,包括發(fā)布/訂閱、請求/回復(fù)和流媒體
          • 金融級交易消息
          • 基于DLedger的內(nèi)置容錯和高可用配置選項
          • 多種跨語言客戶端,如Java、C/C++、Python、Go
          • 可插拔傳輸協(xié)議,例如 TCP、SSL、AIO
          • 內(nèi)置消息追蹤能力,也支持opentracing
          • 多功能大數(shù)據(jù)和流媒體生態(tài)系統(tǒng)集成
          • 按時間或偏移量的消息追溯
          • 可靠的 FIFO 和同一隊列中的嚴(yán)格有序消息傳遞
          • 高效的拉推式消費模式
          • 單個隊列百萬級消息累積能力
          • 多種消息傳遞協(xié)議,如 JMS 和 OpenMessaging
          • 靈活的分布式橫向擴展部署架構(gòu)
          • 閃電般的批量消息交換系統(tǒng)
          • 各種消息過濾機制,例如 SQL 和 Tag
          • 用于隔離測試和云隔離集群的 Docker 鏡像
          • 用于配置、指標(biāo)和監(jiān)控的功能豐富的管理儀表板
          • 認(rèn)證和授權(quán)
          • 免費的開源連接器,用于源和接收器

          rocketmq后臺管理界面:

          github地址: https://github.com/apache/rocketmq

          maven中央倉庫: https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-spring-boot-starter

          rocketmq包含:服務(wù)端和客戶端,在我們的項目中主要關(guān)注客戶端的代碼即可。

          配置maven依賴:


          ????org.apache.rocketmq
          ????rocketmq-client
          ????4.3.0

          4. Arthas

          Arthas 是Alibaba開源的Java診斷工具,深受開發(fā)者喜愛。

          當(dāng)你遇到以下類似問題而束手無策時,Arthas可以幫助你解決:

          • 這個類從哪個 jar 包加載的?為什么會報各種類相關(guān)的 Exception?
          • 我改的代碼為什么沒有執(zhí)行到?難道是我沒 commit?分支搞錯了?
          • 遇到問題無法在線上 debug,難道只能通過加日志再重新發(fā)布嗎?
          • 線上遇到某個用戶的數(shù)據(jù)處理有問題,但線上同樣無法 debug,線下無法重現(xiàn)!
          • 是否有一個全局視角來查看系統(tǒng)的運行狀況?
          • 有什么辦法可以監(jiān)控到JVM的實時運行狀態(tài)?
          • 怎么快速定位應(yīng)用的熱點,生成火焰圖?
          • 怎樣直接從JVM內(nèi)查找某個類的實例?

          分析代碼消耗時間:Arthas支持JDK 6+,能夠運行在多種操作系統(tǒng)上,比如:Linux/Mac/Windows,采用命令行交互模式,同時提供豐富的 Tab 自動補全功能,進(jìn)一步方便進(jìn)行問題的定位和診斷。

          github地址: https://alibaba.github.io/arthas/

          maven中央倉庫: https://mvnrepository.com/artifact/com.taobao.arthas/arthas-spring-boot-starter

          在目標(biāo)機器執(zhí)行如下命令即可啟動arthas:

          curl?-O?https://arthas.aliyun.com/arthas-boot.jar
          java?-jar?arthas-boot.jar

          5. Nacos

          Nacos是一個易于使用的平臺,專為動態(tài)服務(wù)發(fā)現(xiàn)和配置以及服務(wù)管理而設(shè)計。它可以幫助您輕松構(gòu)建云原生應(yīng)用程序和微服務(wù)平臺。

          服務(wù)是Nacos的一等公民。Nacos 支持幾乎所有類型的服務(wù),例如Dubbo/gRPC 服務(wù)、Spring Cloud RESTFul 服務(wù)或Kubernetes 服務(wù)。

          Nacos 提供了四大功能。

          • 服務(wù)發(fā)現(xiàn)和服務(wù)健康檢查。Nacos 使服務(wù)通過 DNS 或 HTTP 接口注冊自己和發(fā)現(xiàn)其他服務(wù)變得簡單。Nacos 還提供服務(wù)的實時健康檢查,以防止向不健康的主機或服務(wù)實例發(fā)送請求。
          • 動態(tài)配置管理。動態(tài)配置服務(wù)允許您在所有環(huán)境中以集中和動態(tài)的方式管理所有服務(wù)的配置。Nacos 無需在更新配置時重新部署應(yīng)用程序和服務(wù),這使得配置更改更加高效和敏捷。
          • 動態(tài) DNS 服務(wù)。Nacos 支持加權(quán)路由,讓您更容易在數(shù)據(jù)中心內(nèi)的生產(chǎn)環(huán)境中實現(xiàn)中層負(fù)載均衡、靈活的路由策略、流量控制和簡單的 DNS 解析服務(wù)。它可以幫助您輕松實現(xiàn)基于 DNS 的服務(wù)發(fā)現(xiàn),并防止應(yīng)用程序耦合到特定于供應(yīng)商的服務(wù)發(fā)現(xiàn) API。
          • 服務(wù)和元數(shù)據(jù)管理。Nacos 提供了一個易于使用的服務(wù)儀表板,幫助您管理您的服務(wù)元數(shù)據(jù)、配置、kubernetes DNS、服務(wù)健康和指標(biāo)統(tǒng)計。

          Nacos 地圖:

          Nacos 生態(tài)圖:

          github地址: https://github.com/alibaba/nacos

          maven中央倉庫: https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery

          6. easyexcel

          Java解析、生成Excel比較有名的框架有Apache poi、jxl。但他們都存在一個嚴(yán)重的問題就是非常的耗內(nèi)存,poi有一套SAX模式的API可以一定程度的解決一些內(nèi)存溢出的問題,但POI還是有一些缺陷,比如07版Excel解壓縮以及解壓后存儲都是在內(nèi)存中完成的,內(nèi)存消耗依然很大。

          easyexcel重寫了poi對07版Excel的解析,一個3M的excel用POI sax解析依然需要100M左右內(nèi)存,改用easyexcel可以降低到幾M,并且再大的excel也不會出現(xiàn)內(nèi)存溢出;03版依賴POI的sax模式,在上層做了模型轉(zhuǎn)換的封裝,讓使用者更加簡單方便。

          64M內(nèi)存1分鐘內(nèi)讀取75M(46W行25列)的Excel

          github地址: https://github.com/alibaba/easyexcel

          maven中央倉庫: https://mvnrepository.com/artifact/com.alibaba/easyexcel

          配置maven依賴:


          ????com.alibaba
          ????easyexcel
          ????2.2.6

          7. Sentinel

          隨著分布式系統(tǒng)變得越來越流行,服務(wù)之間的可靠性變得比以往任何時候都更加重要。

          Sentinel以“流量”為切入點,在流量控制、 流量整形、熔斷、系統(tǒng)自適應(yīng)保護(hù)等多個領(lǐng)域開展工作,保障微服務(wù)的可靠性和彈性。

          Sentinel具有以下特點:

          • 豐富的適用場景:Sentinel在阿里巴巴得到了廣泛的應(yīng)用,幾乎覆蓋了近10年雙11(11.11)購物節(jié)的所有核心場景,比如需要限制突發(fā)流量的“秒殺”滿足系統(tǒng)容量、消息削峰填谷、下游不可靠業(yè)務(wù)斷路、集群流量控制等。
          • 實時監(jiān)控:Sentinel 還提供實時監(jiān)控能力。可以實時查看單臺機器的運行時信息,以及500個節(jié)點以下集群的運行時信息匯總。
          • 廣泛的開源生態(tài)系統(tǒng):Sentinel 提供與 Spring Cloud、Dubbo 和 gRPC 等常用框架和庫的開箱即用集成。您只需將適配器依賴項添加到您的服務(wù)即可輕松使用 Sentinel。
          • 多語言支持:Sentinel 為 Java、Go和C++提供了本機支持。
          • 豐富的SPI擴展:Sentinel提供簡單易用的SPI擴展接口,可以讓您快速自定義邏輯,例如自定義規(guī)則管理、適配數(shù)據(jù)源等。

          功能概述:

          生態(tài)系統(tǒng)景觀:

          github地址: https://github.com/alibaba/Sentinel

          maven中央倉庫: https://mvnrepository.com/artifact/com.alibaba.csp/sentinel-core

          配置maven依賴:


          ????com.alibaba.csp
          ????sentinel-core
          ????1.8.2

          8. otter

          阿里巴巴B2B公司,因為業(yè)務(wù)的特性,賣家主要集中在國內(nèi),買家主要集中在國外,所以衍生出了杭州和美國異地機房的需求,同時為了提升用戶體驗,整個機房的架構(gòu)為雙A,兩邊均可寫,由此誕生了otter這樣一個產(chǎn)品。

          otter第一版本可追溯到04~05年,此次外部開源的版本為第4版,開發(fā)時間從2011年7月份一直持續(xù)到現(xiàn)在,目前阿里巴巴B2B內(nèi)部的本地/異地機房的同步需求基本全上了otte4。

          目前同步規(guī)模:

          • 同步數(shù)據(jù)量6億
          • 文件同步1.5TB(2000w張圖片)
          • 涉及200+個數(shù)據(jù)庫實例之間的同步
          • 80+臺機器的集群規(guī)模

          otter能解決什么?

          • 異構(gòu)庫同步。mysql -> mysql/oracle. (目前開源版本只支持mysql增量,目標(biāo)庫可以是mysql或者oracle,取決于canal的功能)

          • 單機房同步 (數(shù)據(jù)庫之間RTT < 1ms)

            a. 數(shù)據(jù)庫版本升級

            b. 數(shù)據(jù)表遷移

            c. 異步二級索引

          • 異地機房同步 (比如阿里巴巴國際站就是杭州和美國機房的數(shù)據(jù)庫同步,RTT > 200ms,亮點)

            a. 機房容災(zāi)

          • 雙向同步

            a. 避免回環(huán)算法 (通用的解決方案,支持大部分關(guān)系型數(shù)據(jù)庫)

            b. 數(shù)據(jù)一致性算法 (保證雙A機房模式下,數(shù)據(jù)保證最終一致性,亮點)

          • 文件同步站點鏡像 (進(jìn)行數(shù)據(jù)復(fù)制的同時,復(fù)制關(guān)聯(lián)的圖片,比如復(fù)制產(chǎn)品數(shù)據(jù),同時復(fù)制產(chǎn)品圖片).

          工作原理圖:

          單機房復(fù)制示意圖:

          異地機房復(fù)制示意圖:

          github地址: https://github.com/alibaba/otter

          maven中央倉庫: https://mvnrepository.com/artifact/com.alibaba.otter/canal.client

          9. P3C

          P3C插件呈現(xiàn)了阿里巴巴 Java 編碼指南,它整合了阿里巴巴集團(tuán)技術(shù)團(tuán)隊多年來的最佳編程實踐。由于我們鼓勵重用和更好地理解彼此的程序,因此大量 Java 編程團(tuán)隊對跨項目的代碼質(zhì)量提出了苛刻的要求。

          阿里巴巴過去見過很多編程問題。例如,有缺陷的數(shù)據(jù)庫表結(jié)構(gòu)和索引設(shè)計可能會導(dǎo)致軟件架構(gòu)缺陷和性能風(fēng)險。另一個例子是混亂的代碼結(jié)構(gòu)難以維護(hù)。此外,未經(jīng)身份驗證的易受攻擊的代碼容易受到黑客的攻擊。為了解決這些問題,我們?yōu)榘⒗锇桶偷腏ava開發(fā)人員編寫了這份文檔。

          更多信息請參考阿里巴巴Java編碼指南:

          • 中文版:阿里巴巴Java開發(fā)手冊
          • 英文版:Alibaba Java Coding Guidelines

          該項目由3部分組成:

          • PMD 實現(xiàn)
          • IntelliJ IDEA 插件
          • Eclipse 插件

          四十九條規(guī)則是基于PMD實現(xiàn)的,更多詳細(xì)信息請參考P3C-PMD文檔。IDE 插件(IDEA 和 Eclipse)中實現(xiàn)的四個規(guī)則如下:

          • [Mandatory]禁止使用已棄用的類或方法。注意:例如,應(yīng)該使用 decode(String source, String encode) 而不是不推薦使用的方法 decode(String encodeStr)。一旦接口被棄用,接口提供者就有義務(wù)提供一個新的接口。同時,客戶端程序員有義務(wù)檢查它的新實現(xiàn)是什么。

          • [Mandatory]來自接口或抽象類的重寫方法必須用 @Override 注釋標(biāo)記。反例:對于 getObject() 和 get0bject(),第一個是字母“O”,第二個是數(shù)字“0”。為了準(zhǔn)確判斷覆蓋是否成功,需要一個@Override注解。同時,一旦抽象類中的方法簽名發(fā)生變化,實現(xiàn)類將立即報告編譯時錯誤。

          • [Mandatory] 靜態(tài)字段或方法應(yīng)直接通過其類名而不是其對應(yīng)的對象名來引用。

          • [Mandatory] hashCode 和 equals 的用法應(yīng)該遵循:

          1. 如果 equals 被覆蓋,則覆蓋 hashCode。
          2. 這兩個方法必須為 Set 重寫,因為它們用于確保不會在 Set 中插入重復(fù)的對象。
          3. 如果使用自定義對象作為 Map 的鍵,則必須覆蓋這兩個方法。注意:String 可以用作 Map 的鍵,因為這兩個方法已經(jīng)被重寫。

          使用p3c插件的效果:

          最新版阿里巴巴Java開發(fā)手冊下載地址:https://github.com/alibaba/p3c/blob/master/Java開發(fā)手冊(嵩山版).pdf

          github地址:https://github.com/alibaba/p3c/tree/master/idea-plugin

          10. Spring Cloud Alibaba

          Spring Cloud Alibaba 為分布式應(yīng)用開發(fā)提供一站式解決方案。它包含開發(fā)分布式應(yīng)用程序所需的所有組件,使您可以輕松地使用 Spring Cloud 開發(fā)應(yīng)用程序。

          使用Spring Cloud Alibaba,您只需添加一些注解和少量配置,即可將Spring Cloud應(yīng)用連接到阿里巴巴的分布式解決方案,并通過阿里巴巴中間件構(gòu)建分布式應(yīng)用系統(tǒng)。

          主要功能如下:

          • 流量控制和服務(wù)降級:默認(rèn)支持 HTTP 服務(wù)的流量控制。您還可以使用注釋自定義流量控制和服務(wù)降級規(guī)則。規(guī)則可以動態(tài)更改。
          • 服務(wù)注冊和發(fā)現(xiàn):可以注冊服務(wù),客戶端可以使用 Spring 管理的 bean,自動集成 Ribbon 來發(fā)現(xiàn)實例。
          • 分布式配置:支持分布式系統(tǒng)中的外化配置,配置變化時自動刷新。
          • 事件驅(qū)動:支持構(gòu)建與共享消息系統(tǒng)連接的高度可擴展的事件驅(qū)動微服務(wù)。
          • 分布式事務(wù):支持高性能、易用的分布式事務(wù)解決方案。
          • 阿里云對象存儲:海量、安全、低成本、高可靠的云存儲服務(wù)。支持隨時隨地在任何應(yīng)用程序中存儲和訪問任何類型的數(shù)據(jù)。
          • 阿里云SchedulerX:精準(zhǔn)、高可靠、高可用的定時作業(yè)調(diào)度服務(wù),響應(yīng)時間秒級。
          • 阿里云短信:覆蓋全球的短信服務(wù),阿里短信提供便捷、高效、智能的通訊能力,幫助企業(yè)快速聯(lián)系客戶。

          主要包含如下組件:

          • Sentinel:把流量作為切入點,從流量控制、熔斷降級、系統(tǒng)負(fù)載保護(hù)等多個維度保護(hù)服務(wù)的穩(wěn)定性。
          • Nacos:一個更易于構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺。
          • RocketMQ:一款開源的分布式消息系統(tǒng),基于高可用分布式集群技術(shù),提供低延時的、高可靠的消息發(fā)布與訂閱服務(wù)。
          • Dubbo:Apache Dubbo? 是一款高性能 Java RPC 框架。
          • Seata:阿里巴巴開源產(chǎn)品,一個易于使用的高性能微服務(wù)分布式事務(wù)解決方案。
          • Alibaba Cloud OSS: 阿里云對象存儲服務(wù)(Object Storage Service,簡稱 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存儲服務(wù)。您可以在任何應(yīng)用、任何時間、任何地點存儲和訪問任意類型的數(shù)據(jù)。
          • Alibaba Cloud SchedulerX: 阿里中間件團(tuán)隊開發(fā)的一款分布式任務(wù)調(diào)度產(chǎn)品,提供秒級、精準(zhǔn)、高可靠、高可用的定時(基于 Cron 表達(dá)式)任務(wù)調(diào)度服務(wù)。
          • Alibaba Cloud SMS: 覆蓋全球的短信服務(wù),友好、高效、智能的互聯(lián)化通訊能力,幫助企業(yè)迅速搭建客戶觸達(dá)通道。

          github地址: https://github.com/alibaba/spring-cloud-alibaba

          配置maven依賴:


          ????
          ????????
          ????????????com.alibaba.cloud
          ????????????spring-cloud-alibaba-dependencies
          ????????????2.2.6.RELEASE
          ????????????pom
          ????????????import
          ????????

          ????



          最后說一句(求關(guān)注,別白嫖我)

          如果這篇文章對您有所幫助,或者有所啟發(fā)的話,幫忙掃描下發(fā)二維碼關(guān)注一下,您的支持是我堅持寫作最大的動力。

          求一鍵三連:點贊、轉(zhuǎn)發(fā)、在看。

          關(guān)注公眾號:【蘇三說技術(shù)】,在公眾號中回復(fù):面試、代碼神器、開發(fā)手冊、時間管理有超贊的粉絲福利,另外回復(fù):加群,可以跟很多BAT大廠的前輩交流和學(xué)習(xí)。


          瀏覽 34
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产午夜一区 | 人妻丰满熟妇av无码区蜜桃 | 天天做天天爱天天高潮 | www.一区二区 | 婷婷五月综合久久 |