阿里妹導(dǎo)讀:自從2011年宣布第一波開源項目以來,阿里技術(shù)人一直積極參與開源社區(qū)共建。開源項目數(shù)量每年都有所增長,目前阿里巴巴已經(jīng)有150+個開源項目,其中數(shù)個項目 star ?破萬。相關(guān)的 GitHub 2017年數(shù)據(jù)統(tǒng)計顯示,阿里巴巴是唯一一家入圍 GitHub 頂尖貢獻名單的中國公司。
在開源中國舉行的“2017年度最受歡迎中國開源軟件Top20”的評選中,阿里巴巴占據(jù)五席位。
其實,阿里巴巴并沒有開源項目的KPI考核,各個團隊都是發(fā)自內(nèi)心地將踩過的坑和總結(jié)的經(jīng)驗融入到開源項目中,供業(yè)界所有人使用,希望幫助他人解決問題。這正是社區(qū)一致的開源精神,大家都可以站在巨人的肩膀上,每個人都可以既是老師又是學(xué)生,這或許可以解釋為什么IT技術(shù)的發(fā)展能如此充滿活力。
本文總結(jié)整理了2017年阿里巴巴九個重要的新開源項目和在開源中國評選中五個備受歡迎的項目,希望能對大家有所幫助。
構(gòu)建高性能的分布式系統(tǒng)
我們見證了從大型機到分布式系統(tǒng)的趨勢轉(zhuǎn)變。大型機部署簡單,無需多個節(jié)點配置,但是售價高、維護困難、單點依賴較高;而小型機組建的分布式系統(tǒng)則在降低成本的同時提高整體的并發(fā)量、擴展性和可靠性。相信不少人都聽說過數(shù)據(jù)庫連接池?Druid,json?解析?fastjson,消息中間件RocketMQ,分布式?RPC Dubbo這幾個開源項目;今年還有剛開源的飛天緩存?ApsaraCache,自研富容器技術(shù)?Pouch?和文件分發(fā)系統(tǒng)Dragonfly。
分布式服務(wù)治理框架?Dubbo?重大升級
Dubbo?一個基于?Java?的高性能RPC框架,早在2012年開源,自開源以來深受國內(nèi)友商和開源愛好者的青睞,雖然一直陸續(xù)在維護,但是由于用戶群體龐大,日常維護根本無法完全滿足社區(qū)的旺盛需求。隨著阿里技術(shù)的發(fā)展,在保證集團內(nèi)部和客戶服務(wù)之外,如今可以抽調(diào)更多經(jīng)歷將技術(shù)賦能全社會。
今年?Dubbo?重啟維護并進行了重大升級,Dubbo2?的設(shè)計原則強調(diào)擴展性、使用輕量及對開源外圍系統(tǒng)和協(xié)議的適配,它不僅修復(fù)了優(yōu)雅停機、注解配置等一些框架缺陷,還新增了通信模塊和線程堆棧特性等,框架穩(wěn)定性有了大幅提升。
具體而言,Dubbo?今年發(fā)布了?2.5.4, 2.5.5, 2.5.6, 2.5.7, 2.5.8?等五個版本,主要修復(fù)、合并了社區(qū)呼聲最高的?issue?和Pull Request,另外主要做了以下的增強:對Netty 4?的支持、annotation?的增強、Java 8?的支持、docker?的支持。Dubbo?還會繼續(xù)完善,如Dubbo Spring Boot starter、RESTful?支持,優(yōu)雅部署,容錯增強,路由策略增強以及異步化增強等。
除了框架本身,Dubbo?團隊還重建了官網(wǎng)(日均?PV 3500+),更新了文檔。為了進一步的擴大影響力,對官網(wǎng)、文檔、代碼開始英文化的工作,并初見成效,著名的技術(shù)博客?baeldung?發(fā)表了對Dubbo?的深度介紹? Introduction to Dubbo,并參與了開源中國、InfoQ的訪談和宣講等活動,并入選開源中國?2017?年度最受歡迎開源軟件Top20。
Dubbo之所以進行了重大升級,是因為觀察到與RPC?特別相關(guān)領(lǐng)域的技術(shù)趨勢,未來主要會著重向?Cloud Native、多語言增強、微服務(wù)支持等幾個方向演進,同時?Dubbo?還會不斷建設(shè)生態(tài)系統(tǒng)和社區(qū)以及打造國際影響力。
歡迎大家來和Dubbo的開發(fā)團隊一起探討:
https://gitter.im/alibaba/dubbo
https://github.com/alibaba/dubbo
分布式消息中間件?RocketMQ
今年9月,Apache?軟件基金會官方宣布,阿里巴巴捐贈給?Apache?社區(qū)的開源項目?RocketMQ?從?Apache?社區(qū)正式畢業(yè),成為?Apache?頂級項目(TLP)。自此,Apache RocketMQ?成為國內(nèi)首個非?Hadoop?生態(tài)體系、國內(nèi)首個互聯(lián)網(wǎng)中間件的?Apache?頂級項目。今年,RocketMQ?還斬獲了第十二屆中日韓開源軟件技術(shù)優(yōu)勝獎和開源中國的“2017年度最受歡迎中國開源軟件Top20”。
RocketMQ?是阿里巴巴在2012年開源的第三代分布式消息中間件,商用版MQ可在阿里云上獲得。歷年雙11,RocketMQ?都承載著阿里巴巴生產(chǎn)系統(tǒng)100%的消息流轉(zhuǎn),以去年雙11為例的,?RocketMQ?完成了1.2萬億消息精準(zhǔn)低延遲投遞,交易峰值高達17萬筆/秒。
RocketMQ?來自于中國,但已經(jīng)引起了全世界范圍的關(guān)注。RocketMQ?不僅斬獲2015年中日韓開源論壇的?CJKOSS?大獎,并且已經(jīng)進入歐美主流開源門戶網(wǎng)站的視野,目前100多家公司和科研機構(gòu)正在使用RocketMQ。值得一提的是目前美國是?RocketMQ?全球第二大訪問國。
作為一款分布式消息引擎,RocketMQ?有如下特性:
低延遲、高并發(fā):99.6%以上的響應(yīng)延遲在1毫秒以內(nèi)
面向金融:滿足跟蹤和審計的高可用性
工業(yè)級適用:可確保萬億量級的消息發(fā)送
中立性:支持多種消息傳遞協(xié)議,如?JMS?和?OpenMessaging
性能可靠:給予足夠的磁盤空間,消息可以累積存放而沒有性能損失。
相關(guān)鏈接:
https://rocketmq.apache.org/????
https://github.com/alibaba/rocketmq
數(shù)據(jù)庫連接池?Druid?和JSON庫?Fastjson
Druid?是阿里唯一使用的數(shù)據(jù)庫連接池,支持雙十一等最嚴(yán)苛的使用場景。Druid?有一句slogan是“為監(jiān)控而生的數(shù)據(jù)庫連接池”。經(jīng)過六年開源積累,已經(jīng)相對成熟的?Druid?收獲了不小的知名度與口碑,并陸續(xù)成為很多技術(shù)團隊解決方案中的關(guān)鍵環(huán)節(jié)。
Fastjson?在服務(wù)端開發(fā)、Android客戶端中廣泛使用,阿里幾乎每個Java應(yīng)用都用到了fastjson。
這是一個高性能功能完善的?JSON?庫,通過“假定有序快速匹配”的算法,把JSON Parse的性能提升到極致,堪稱目前Java語言中最快的JSON庫。Fastjson接口簡單易用,已經(jīng)被廣泛使用在緩存序列化、協(xié)議交互、Web輸出、Android?客戶端等多種應(yīng)用場景。
這兩個相對而言比較成熟的項目,今年并沒有大的功能變更,都是每個月根據(jù)社區(qū)中反饋的?issue?發(fā)布小版本。未來,Druid?后續(xù)會增強監(jiān)控功能,監(jiān)控功能和阿里云相關(guān)監(jiān)控產(chǎn)品對接。其中的?Parser?模塊會剝離出做一個項目大力發(fā)展。
相關(guān)鏈接:
https://github.com/alibaba/druid
https://github.com/alibaba/fastjson
云數(shù)據(jù)庫?Redis?分支?ApasaraCache
ApsaraCache(飛天緩存)是云數(shù)據(jù)庫?Redis?版所使用的?Redis?分支,是在社區(qū)?2.8?版本基礎(chǔ)上開始維護的分支,并?backport?了部分?3.0?分支的功能,該版本主要解決了云上用戶對穩(wěn)定性、性能、災(zāi)備和平滑升級體驗的訴求。
據(jù)了解,其實在?ApsaraCache?開源前,該方案就已經(jīng)擁有很多成功的客戶案例,其中既有視頻直播行業(yè)的秒拍、一直播、映客、中國網(wǎng)絡(luò)電視臺;也有游戲行業(yè)的陌陌游戲、龍淵網(wǎng)絡(luò)、中情龍圖、暢游;同時還有民生類的新聞如今日頭條、交通如高德導(dǎo)航、金融如螞蟻金服、其他如大疆創(chuàng)新,可以說,應(yīng)用范圍和場景非常廣泛。
ApsaraCache?已經(jīng)有很多成功的客戶案例了,為什么要開源呢?原因在于:
1. Redis?在中國的用戶群體和使用方式都發(fā)生著深刻的變化,遵循極簡哲學(xué)設(shè)計的?Redis?在某些場景下的穩(wěn)定性和性能都受到新的挑戰(zhàn),另外很多云上客戶在使用?Redis?的過程中也碰到了各種各樣的問題,基于這些問題和挑戰(zhàn),ApsaraCache?對?Redis?進行了大量的重構(gòu)和改造,為了賦能?Redis?用戶,也為了讓?Redis?開發(fā)愛好者能夠更好地參與進來,我們決定對ApsaraCache?進行開源。
2. Redis?是BSD License,相對比較自由;最新版本?Redis 4.0?支持?Redis Module?功能,而?Redis Module?屬于?AGPL License,ApsaraCache?后續(xù)也會支持?Redis Module?機制并開源功能?Module?代碼。所以?ApsaraCache?開源也是對開源協(xié)議的尊重與遵守。
3. ApsaraCache?一直在等待?Redis 4.0 Release?版本的發(fā)布,待該版本發(fā)布之后會積極推動兩邊?feature?的融合,爭取?merge?到社區(qū)主干。
Redis?創(chuàng)始人?Salvatore?認(rèn)為,ApsaraCache?項目開源是一件非常好的事情,將能夠吸引全世界更多?Redis?核心專家參與,進一步提升產(chǎn)品的穩(wěn)定性和可用性。同時,也表明阿里巴巴擁有?Redis?產(chǎn)品開發(fā)的能力,希望未來我們一起努力提升產(chǎn)品的各種功能和特性,給?Redis?帶來更多更好的改進。
ApsaraCache?于今年10月份正式開源,據(jù)悉,其即將發(fā)布新版本會新增兩個功能:解決了AOF Rewrite?頻繁造成的主機穩(wěn)定性瓶頸,且支持精確到秒級的按時間點恢復(fù);解決了原生內(nèi)核在弱網(wǎng)條件下容易復(fù)制中斷導(dǎo)致的全量同步問題。
相關(guān)鏈接:
https://github.com/alibaba/ApsaraCache
自研富容器技術(shù)?Pouch?和文件分發(fā)系統(tǒng)?Dragonfly
Pouch?是阿里內(nèi)部自研容器技術(shù),目前數(shù)據(jù)中心運行有數(shù)十萬個Pouch容器,大規(guī)模支撐內(nèi)部離線在線業(yè)務(wù)的混部。
首先,Pouch?是一種富容器技術(shù),內(nèi)部應(yīng)用體驗類似虛擬機,擁有?init?進程,富含多種系統(tǒng)服務(wù);其次,通過內(nèi)核加固與輕量級虛擬機支持,Pouch?提供豐富的安全隔離保障和隔離維度;在鏡像分發(fā)上,特別是超大規(guī)模場景下可通過P2P的方式緩解網(wǎng)絡(luò)負載;在內(nèi)核兼容性方面,更加符合企業(yè)現(xiàn)狀,考慮到大部分企業(yè)IT系統(tǒng)內(nèi)核的升級緩慢、版本較低,最大限度適配現(xiàn)有底層基礎(chǔ)設(shè)施。
Pouch與Dragonfly使用架構(gòu)圖
以往大家常用傳統(tǒng)的方式來下載文件,這帶來兩個問題:首先如果遇到特別大的文件,下載失敗就要重試,效率低下;其次如果客戶端進行大規(guī)模下載,會把文件源壓垮。
Dragonfly?中文名“蜻蜓”,蜻蜓是通過P2P方式來下載文件,有效的緩解了文件源的壓力,?同時還支持?jǐn)帱c續(xù)傳,即使因網(wǎng)絡(luò)環(huán)境導(dǎo)致失敗,也無需反復(fù)下載文件。蜻蜓的另外一個特點是與?Docker、Pouch?等技術(shù)的集成,它具備鏡像預(yù)熱等功能,Docker?原生的下載鏡像速度慢,而采用P2P技術(shù)的蜻蜓很好地解決了這個問題。
蜻蜓P2P容器鏡像分發(fā)示意圖
蜻蜓可以滿足?Docker?或者?Pouch?使用者的較大下載量(如大鏡像文件)需求。而對于具備海外節(jié)點,蜻蜓也可以節(jié)約跨國帶寬的。
據(jù)悉蜻蜓有兩個版本:開源版,支持?Apache 2.0?協(xié)議,可用于P2P文件分發(fā)、容器鏡像分發(fā)、局部限速、磁盤容量預(yù)檢;企業(yè)版則還具備斷點續(xù)傳、全局限速、鏡像預(yù)熱、支持內(nèi)存文件系統(tǒng)、智能網(wǎng)絡(luò)流控、智能動態(tài)壓縮、智能調(diào)度策略等功能,該版本內(nèi)置在云效、阿里云容器服務(wù)(公共云、專有云)之中。
相關(guān)鏈接:
https://github.com/alibaba/pouch??
https://github.com/alibaba/Dragonfly
互聯(lián)時代的用戶端
隨著Web2.0、Web3.0時代交迭,無線端硬件性能的提升與用戶體驗理念的倡導(dǎo),Web?站點與應(yīng)用變得越來越重要與復(fù)雜。這一點可以從JavaScript?的熱度變化看出來:JavaScript、?Java、PHP同樣誕生于1995年,但是三者卻經(jīng)歷了不同的發(fā)展曲線。JavaScript?不斷發(fā)展,熱度漸漲聲名鵲起,GitHub?的?JavaScript?語言編寫的開源項目共計23萬個位列第一,是第二名Python開源項目的2.3倍,并且遠超?Java?和?PHP?開源項目總和。JavaScript?被越來越多使用,AJAX?使得它在前端編程中大放異彩,而?Node.js?也讓人開始關(guān)注?JavaScript?在服務(wù)器端開發(fā)的能力。
阿里巴巴向社區(qū)貢獻了兩款企業(yè)級開源項目:UI設(shè)計語言和React實現(xiàn)項目Ant Design、Web基礎(chǔ)框架Egg.js。
Ant Design,前端的美好呈現(xiàn)
Ant Design提煉自螞蟻金服的中后臺設(shè)計經(jīng)驗:在產(chǎn)品交互和視覺風(fēng)格上,它秉承“微小?·?確定?·?幸福”的理念,追求提升用戶和設(shè)計者的使用體驗;積累了豐富、靈活、使用的基礎(chǔ)組件,并準(zhǔn)備了常見問題的解決方案;使用?TypeScript?支持完整的類型定義,采用高質(zhì)量React組件可以開箱即用,并且基于npm + webpack + dva?的企業(yè)級開發(fā)框架。
回顧2017年,Ant Design主要做了三件事情:
1、Ant Design 2.x?版本持續(xù)迭代,版本從?2.6.0?迭代到?2.13.11。
2、10?月推出了?Ant Design Pro?的前端腳手架,對中后臺常用的場景提供了最佳實踐。
3、12月初發(fā)布了?Ant Design 3.0,帶來了全新的設(shè)計體系和大量新特性。
發(fā)布日志可見:
https://medium.com/ant-design/announcing-ant-design-3-0-70e3e65eca0c
在開源兩年多的時間里,Ant Design一直通過收集設(shè)計和研發(fā)的需求進行不斷改進。設(shè)計師團隊不斷優(yōu)化和改進Ant Design的設(shè)計規(guī)范,視覺效果整體調(diào)整也體現(xiàn)在本次3.0新版本中。而研發(fā)層面則會聽取內(nèi)部與外部的各種業(yè)務(wù)需求:向社區(qū)公開項目開發(fā)的長期規(guī)劃,尤其是主要目標(biāo)和破壞性改動,并且日常性地通過釘釘群和?GitHub?中收集大量新需求和問題報告,與社區(qū)保持密切互動。項目有小版本研發(fā)的固定周期,每周都會發(fā)布bugfix版本,每月發(fā)布?minor?版本。
Ant Design是?React?社區(qū)最流行的?UI?組件庫之一,除了阿里巴巴集團,還有騰訊、百度、美團、滴滴和餓了么等公司在使用。目前Ant Design在GitHub上擁有21485顆?star,是開源中國評選的2017年度Top20最受歡迎中國開源軟件。
Ant Design負責(zé)人偏右表示,在此次發(fā)布?AntDesign 3.0之后,項目已經(jīng)相對成熟,會進進入較長的持續(xù)維護階段,暫時預(yù)計不會有巨大的變化;團隊將在視覺布局和主題配置、國際化、集成化上補齊?Ant Design Pro?的功能,推動其實踐落地。
相關(guān)鏈接:
http://ant.design/
http://pro.ant.design/???
https://github.com/ant-design/ant-design
企業(yè)級Web基礎(chǔ)框架Egg
企業(yè)開始采用微服務(wù)架構(gòu),這涉及到服務(wù)顆粒、API接口、開發(fā)維護等具體任務(wù),前端與后端不得不面對“應(yīng)該更考慮用戶側(cè)的靈活體驗,還是更加配合后端服務(wù)的通用性”的爭執(zhí)。Node.js?在近幾年的蓬勃發(fā)展中,慢慢改進了很多被人詬病的黑點:生態(tài)上npm包數(shù)量冠絕全球,改進單線程問題,借助ES規(guī)范逃離回調(diào)地獄,成熟的?TypeScript?帶來類型系統(tǒng),性能也得以持續(xù)優(yōu)化。
但是,非常遺憾的是,Node.js?的基建成熟度與生態(tài)熱度并不匹配,Node.js?本質(zhì)上依然似個新生兒:工業(yè)界的Web框架實踐寥寥無幾;社區(qū)重復(fù)造輪子,而且缺乏統(tǒng)一參考規(guī)范,帶來很多重復(fù)、不合理使用的問題;相比應(yīng)用,Node.js?的基礎(chǔ)技術(shù)研究依然很少,如何保證高可用成為重要問題。
阿里的?Node.js?應(yīng)用始于2011年,經(jīng)歷了重復(fù)造輪子等上述困擾之后,開始認(rèn)真思考起來“如何既能統(tǒng)一生態(tài)共建,又能支持差異化定制”。于是,Egg?應(yīng)運而生,其名寓意“孕育”,是期望成為一個Web開發(fā)基礎(chǔ)框架,以幫助各團隊在Egg之上搭建適配業(yè)務(wù)的上層框架。Egg?沉淀自大規(guī)模企業(yè)應(yīng)用的工程實踐經(jīng)驗,包括多年穩(wěn)定支撐天貓雙11大促;也經(jīng)歷了三年四個版本的微內(nèi)核打磨。
Egg?基于?Koa,但又完全有別于?Sails /LoopBack?等上層框架,?Egg?位于它們之間的中間層,提供『微內(nèi)核?+?插件機制?+?框架定制能力』,提供了一套統(tǒng)一的約定,為上層框架服務(wù)。Egg?是漸進式開發(fā),極具伸縮性,因此既適合個人小項目快速開發(fā),也適合企業(yè)級的團隊開發(fā)協(xié)作。
雖然剛剛開源一年,但是?Egg?已經(jīng)收到500+(主庫272)Pull Request,并處理了1200+個issue,發(fā)布了40+篇共計10萬余字的官方文檔。在GitHub上收獲6k+ star,Egg官網(wǎng)PV近萬。在阿里巴巴內(nèi)部,Egg服務(wù)了500+前端開發(fā)者和1000+應(yīng)用;而在外部,Egg?收到了來自百度、騰訊、全民直播、丁香園等多家公司共計90多位技術(shù)人員的改進反饋,甚至收到了Node TSC Director Rog Vagg在?Twitter?上的關(guān)注與轉(zhuǎn)發(fā)?。
未來,Egg會將重心放在開發(fā)者體驗方面的優(yōu)化上,并且分享更多的最佳實踐。
這里還需要濃墨重彩地講講阿里的?Node?技術(shù)積淀:除了阿里內(nèi)部的1000+應(yīng)用,阿里技術(shù)人同樣進行了?Node.js?底層排坑工作,也與Intel探討如何進一步提高Node.js性能。此外,阿里最近剛剛發(fā)布?Node.js?性能平臺,作為企業(yè)級性能解決方案,它提供免費的?Node.js?運行時?+?監(jiān)控診斷服務(wù)。
相關(guān)鏈接:
https://eggjs.org/ ?
https://node.console.aliyun.com/
自2007年蘋果推出iPhone以來,智能手機的普及開啟了移動開發(fā)時代,App開始承載越來越多的業(yè)務(wù)場景,但這也同樣給開發(fā)帶來了不小的挑戰(zhàn)。
靈活的?Android?開發(fā)框架?Atlas
和大部分開源項目一樣,Altas?也是為了解決阿里自身遇到的問題。伴隨著手機淘寶的不斷發(fā)展,研發(fā)團隊規(guī)模擴大,功能愈發(fā)復(fù)雜,需要端側(cè)業(yè)務(wù)的快速迭代;而開發(fā)、運行和運維中遇到的問題不斷增多,也需要及時進行線上bug修復(fù)。于是手淘團隊開始思考如何將復(fù)雜事情簡單化,如何進行動態(tài)部署,提升團隊的移動開發(fā)效率。
Atlas?以容器化思路解決大規(guī)模團隊協(xié)作問題,適用于Android4.x以上系統(tǒng)版本的大小型?App開發(fā),并且支持動態(tài)發(fā)版。一般而言,業(yè)界常用解法是插件化框架,但是考慮到復(fù)用性,Atlas?采用的組件化模式,將業(yè)務(wù)拆開并復(fù)用公共部分。項目借鑒服務(wù)端的?OSGI?思想,將業(yè)務(wù)拆出來獨立成bundle,隔離解耦運行,從而實現(xiàn)并行開發(fā)、快速迭代和動態(tài)部署。
?Altas源自阿里巴巴移動團隊五年的研發(fā)積累,進行了靜態(tài)組件化和動態(tài)組件化的技術(shù)準(zhǔn)備。在今年正式開源之后,Altas?基本上保持了每兩個月發(fā)布一次大版本,同時做到內(nèi)部和社區(qū)使用同一套代碼。Altas?完善了穩(wěn)定性、工具鏈升級及?dexpatch?等方面,具體而言,三個重大的功能點是:動態(tài)部署新增?component?支持;dexpatch?功能;bundle?間的view?復(fù)用。
作為初來乍到的開源項目,老實說,Altas?最初并沒有做的盡善盡美,由于項目具有較高的門檻,再加上文檔不夠完善,Demo?簡陋,所以遭遇了較多吐槽。Altas?隨即緊急決定建立一個釘釘群,一邊幫助開發(fā)者更快的理解和接入Atlas?,一邊完善文檔和?Demo。據(jù)悉,目前基本上內(nèi)部很多安卓App都使用了Altas(如天貓、淘寶、蝦米、優(yōu)酷、阿里云),而外部至少有三款接入?Altas?的App上線,這是令?Altas?團隊非常開心的事情。
Atlas?的愿景是“帶你重返A(chǔ)pp開發(fā)的田園時代”。未來,Altas?將繼續(xù)完善文檔、升級工具鏈,降低接入成本、提升穩(wěn)定性與兼容性,并且還會推出配套的?Emas for Atlas?商業(yè)服務(wù),并便于服務(wù)端的發(fā)布。
相關(guān)鏈接:
http://atlas.taobao.org/??
https://github.com/alibaba/atlas
源自最佳實踐的參考規(guī)范
《阿里巴巴?Java?開發(fā)規(guī)約》
程序員的交流是通過代碼,代碼的質(zhì)量好壞與工程、團隊效能息息相關(guān)。
阿里眾多資深技術(shù)專家與代碼規(guī)約人員共同潛心研制了一套?Java?規(guī)約守則,并將對應(yīng)規(guī)則研發(fā)了自動化檢測工具(DE檢測插件(IDEA、Eclipse))。如此可以使得開發(fā)者更加方便、快速將規(guī)范推動并實行起來。
該插件在掃描代碼后,將不符合規(guī)約的代碼按Blocker/Critical/Major三個等級顯示在下方,甚至在IDEA上,我們還基于Inspection機制提供了實時檢測功能,編寫代碼的同時也能快速發(fā)現(xiàn)問題所在。對于歷史代碼,部分規(guī)則實現(xiàn)了批量一鍵修復(fù)的功能。
Java?代碼規(guī)約正式以插件形式公開走向業(yè)界,并引領(lǐng)?Java?語言的規(guī)范之路。目前,插件已在云效公有云產(chǎn)品中集成。
阿里巴巴P3C項目組會長期更新與維護插件,團隊也希望更多的人參與進來,除了發(fā)現(xiàn)和解決已實現(xiàn)的檢測規(guī)則以外,能夠?qū)崿F(xiàn)更多有益的規(guī)則,讓插件變得更加完善并且?guī)椭礁嗟拈_發(fā)者。
相關(guān)鏈接:
https://github.com/alibaba/p3c
分布式消息領(lǐng)域的國際標(biāo)準(zhǔn)標(biāo)準(zhǔn)?OpenMessaging
OpenMessaging?項目由阿里巴巴發(fā)起,與雅虎、滴滴出行、Streamlio?公司共同參與創(chuàng)立,項目意在創(chuàng)立廠商無關(guān)、平臺無關(guān)的分布式消息及流處理領(lǐng)域的應(yīng)用開發(fā)標(biāo)準(zhǔn)。據(jù)發(fā)起人介紹,隨著標(biāo)準(zhǔn)的不斷演進,會有更多的互聯(lián)網(wǎng)、云計算廠商參與到該項目以及生態(tài)體系中來。
OpenMessaging?的價值有哪些呢?
在云計算時代,消息通訊已經(jīng)成為現(xiàn)代數(shù)據(jù)驅(qū)動架構(gòu)的關(guān)鍵環(huán)節(jié),消息中間件可以連接數(shù)據(jù)源、數(shù)據(jù)處理引擎和應(yīng)用程序。然而,全球范圍內(nèi),消息領(lǐng)域仍然存在兩大問題:一是缺乏供應(yīng)商中立的行業(yè)標(biāo)準(zhǔn),導(dǎo)致各種消息中間件的高復(fù)雜性和不兼容性,相應(yīng)地造成了公司的產(chǎn)品低效、混亂和供應(yīng)商鎖定等問題。二是目前已有的方案框架并不能很好地適配云架構(gòu),即非云原生架構(gòu),因此無法有效地對大數(shù)據(jù)、流計算和物聯(lián)網(wǎng)等新興業(yè)務(wù)需求提供技術(shù)支持。
OpenMessaging?拋棄歷史包袱,輕裝上陣,期望能解決這些弊端。除了做到可以鏈接跨平臺、跨語言、跨產(chǎn)品和跨云的標(biāo)準(zhǔn)之外,OpenMessaging?將提供?Cloud Native?的能力,面向云計算、混合云架構(gòu),實現(xiàn)多云平臺無縫遷移,致力于提供金融、電子商務(wù)、IoT及大數(shù)據(jù)等領(lǐng)域的一站式解決方案。
相關(guān)鏈接:
https://github.com/openmessaging/openmessaging-java/
物聯(lián)網(wǎng)時代
早在1982年,卡內(nèi)基梅隆大學(xué)就在探討智能設(shè)備的聯(lián)網(wǎng),這可以算作IoT早期概念的誕生,不過其普及流行還是近些年的事情,2005年國際電信聯(lián)盟發(fā)布了《ITU互聯(lián)網(wǎng)報告2005:物聯(lián)網(wǎng)》,其中指出“物聯(lián)網(wǎng)”時代的來臨。Gartner?統(tǒng)計數(shù)據(jù)顯示2016年IoT設(shè)備使用數(shù)量是64億,并預(yù)計該數(shù)據(jù)在2020年上升至204.1億。
新一代物聯(lián)網(wǎng)操作系統(tǒng)?AliOS Things
作為一個相對新興的領(lǐng)域,物聯(lián)網(wǎng)相關(guān)技術(shù)的發(fā)展依然可圈可點。操作系統(tǒng)市場呈現(xiàn)高度碎片化,很多人采用傳統(tǒng)嵌入式的?RTOS?,也有人研發(fā)新的物聯(lián)網(wǎng)操作系統(tǒng),但是這兩者存在不少的痛點:開發(fā)維護成本高,硬件生態(tài)/開發(fā)工具/功能組件不豐富,系統(tǒng)安全和可靠性無保證,云端一體應(yīng)用開發(fā)部署難實現(xiàn)等。
AliOS Things?是針對上述痛點而研發(fā)的新一代物聯(lián)網(wǎng)操作系統(tǒng):通過提供安全、可靠、可擴展和高度優(yōu)化的基礎(chǔ)OS,豐富而有差異化的功能特性和開發(fā)工具,云端一體化的應(yīng)用框架,致力于為廣大物聯(lián)網(wǎng)開發(fā)者賦能增效。
AliOS Things?是業(yè)界中最廣泛應(yīng)用的輕量級消費類、連接類和控制類MCU的物聯(lián)網(wǎng)操作系統(tǒng)。值得一提的是,AliOS Things?依托阿里云,基于生活、城市、工業(yè)等所有主要物聯(lián)網(wǎng)應(yīng)用領(lǐng)域等IoT開放平臺,實現(xiàn)了安全設(shè)備管理和升級、語音識別、云端一體開發(fā)和全鏈路優(yōu)化等高階應(yīng)用。目前,AliOS Things?已經(jīng)被移植到包括意法半導(dǎo)體(STMicroelectronics)、樂鑫(Espressif)、博通(Beken)等17家國內(nèi)外芯片廠商的21款芯片之中。
AliOS Things?自今年十月份開源以來已經(jīng)推出3個主要版本,并長期保持穩(wěn)定的更新節(jié)奏;項目有豐富的文檔和活躍的開發(fā)者社區(qū),目前項目官方網(wǎng)站日均PV 1500+,收到了大量的反饋。AliOS Things?目前已經(jīng)作為阿里云所有物聯(lián)網(wǎng)業(yè)務(wù)設(shè)備端上能力的集成平臺推出,并在多個業(yè)務(wù)項目成功落地。
相關(guān)鏈接:
https://github.com/alibaba/AliOS-Things
輕量化操作系統(tǒng)AliOS Lite
繼?AliOS Things?開源,AliOS?還有將開源?AliOS Lite?。AliOS Lite?是面向IoT領(lǐng)域的輕量化操作系統(tǒng),支持更多任務(wù)處理,支持語音交互、視覺計算等智能處理,適用于CPU性能和內(nèi)存需求較低(最低支持256MB)的IoT設(shè)備,例如智能音箱、智能手表、智能攝像頭等。
同時由于IoT設(shè)備種類繁多、硬件能力差別較大,業(yè)界尚不能找到一個兼容性較好而且低開發(fā)門檻的操作系統(tǒng),也很難有足夠的機器智能和安全防護能力支持。
具體而言AliOS Lite解決了以下痛點:
1)?可伸縮的系統(tǒng)設(shè)計適應(yīng)低至?256 MB?內(nèi)存的智能設(shè)備,可配置剪裁的設(shè)計適應(yīng)能力不同的各類設(shè)備,保證在?API?(應(yīng)用編程接口)層次上一致的行為;還通過服務(wù)依賴流水線、快速渲染、后臺程序統(tǒng)一托管等一系列機制提升系統(tǒng)效率。
2)整合阿里巴巴機器智能能力,如人臉識別、圖像分類等,以?API?的形式提供給開發(fā)者;支持主流機器學(xué)習(xí)框架,例如?Tensorflow、Caffe。
3)強化加固其安全內(nèi)核,提供輕量快捷的安全升級機制。
4)在低開發(fā)門檻同時,保障系統(tǒng)運行輕快高效。應(yīng)用開發(fā)語言JavaScript,提供了完善高效的集成開發(fā)環(huán)境和工具。創(chuàng)新地支持輕量的多線程編程,使能多核硬件、支持預(yù)編譯和靜態(tài)類型,提速應(yīng)用運行速度?35%,降低應(yīng)用內(nèi)存消耗?20%。
總體而言,AliOS Lite的特點是智能、輕量、可擴展、高效和安全等,并具備可配置裁剪的可伸縮設(shè)計和高效?JavaScript?引擎,應(yīng)用模型無需安裝即可使用,并具備獨特的生命周期管理功能。