阿里妹導(dǎo)讀:自從2011年宣布第一波開源項目以來傍念,阿里技術(shù)人一直積極參與開源社區(qū)共建矫夷。開源項目數(shù)量每年都有所增長,目前阿里巴巴已經(jīng)有150+個開源項目憋槐,其中數(shù)個項目 star ?破萬口四。相關(guān)的 GitHub 2017年數(shù)據(jù)統(tǒng)計顯示,阿里巴巴是唯一一家入圍 GitHub 頂尖貢獻(xiàn)名單的中國公司秦陋。
在開源中國舉行的“2017年度最受歡迎中國開源軟件Top20”的評選中,阿里巴巴占據(jù)五席位治笨。
其實驳概,阿里巴巴并沒有開源項目的KPI考核,各個團(tuán)隊都是發(fā)自內(nèi)心地將踩過的坑和總結(jié)的經(jīng)驗融入到開源項目中旷赖,供業(yè)界所有人使用顺又,希望幫助他人解決問題。這正是社區(qū)一致的開源精神等孵,大家都可以站在巨人的肩膀上稚照,每個人都可以既是老師又是學(xué)生,這或許可以解釋為什么IT技術(shù)的發(fā)展能如此充滿活力俯萌。
本文總結(jié)整理了2017年阿里巴巴九個重要的新開源項目和在開源中國評選中五個備受歡迎的項目果录,希望能對大家有所幫助。
構(gòu)建高性能的分布式系統(tǒng)
我們見證了從大型機到分布式系統(tǒng)的趨勢轉(zhuǎn)變咐熙。大型機部署簡單弱恒,無需多個節(jié)點配置,但是售價高棋恼、維護(hù)困難返弹、單點依賴較高锈玉;而小型機組建的分布式系統(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ù)在維護(hù)鬼雀,但是由于用戶群體龐大,日常維護(hù)根本無法完全滿足社區(qū)的旺盛需求蛙吏。隨著阿里技術(shù)的發(fā)展源哩,在保證集團(tuán)內(nèi)部和客戶服務(wù)之外,如今可以抽調(diào)更多經(jīng)歷將技術(shù)賦能全社會鸦做。
今年?Dubbo?重啟維護(hù)并進(jìn)行了重大升級励烦,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?團(tuán)隊還重建了官網(wǎng)(日均?PV 3500+)刹枉,更新了文檔。為了進(jìn)一步的擴大影響力屈呕,對官網(wǎng)微宝、文檔、代碼開始英文化的工作虎眨,并初見成效蟋软,著名的技術(shù)博客?baeldung?發(fā)表了對Dubbo?的深度介紹? Introduction to Dubbo,并參與了開源中國嗽桩、InfoQ的訪談和宣講等活動岳守,并入選開源中國?2017?年度最受歡迎開源軟件Top20。
Dubbo之所以進(jìn)行了重大升級碌冶,是因為觀察到與RPC?特別相關(guān)領(lǐng)域的技術(shù)趨勢湿痢,未來主要會著重向?Cloud Native、多語言增強扑庞、微服務(wù)支持等幾個方向演進(jìn)譬重,同時?Dubbo?還會不斷建設(shè)生態(tài)系統(tǒng)和社區(qū)以及打造國際影響力。
歡迎大家來和Dubbo的開發(fā)團(tuán)隊一起探討:
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)低延遲投遞俩檬,交易峰值高達(dá)17萬筆/秒萎胰。
RocketMQ?來自于中國,但已經(jīng)引起了全世界范圍的關(guān)注棚辽。RocketMQ?不僅斬獲2015年中日韓開源論壇的?CJKOSS?大獎技竟,并且已經(jīng)進(jìn)入歐美主流開源門戶網(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ù)團(tuán)隊解決方案中的關(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ǔ)上開始維護(hù)的分支,并?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?進(jìn)行了大量的重構(gòu)和改造,為了賦能?Redis?用戶楼眷,也為了讓?Redis?開發(fā)愛好者能夠更好地參與進(jìn)來铲汪,我們決定對ApsaraCache?進(jìn)行開源。
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?核心專家參與扰藕,進(jìn)一步提升產(chǎn)品的穩(wěn)定性和可用性缓苛。同時,也表明阿里巴巴擁有?Redis?產(chǎn)品開發(fā)的能力,希望未來我們一起努力提升產(chǎn)品的各種功能和特性未桥,給?Redis?帶來更多更好的改進(jìn)笔刹。
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?進(jìn)程精拟,富含多種系統(tǒng)服務(wù);其次虱歪,通過內(nèi)核加固與輕量級虛擬機支持蜂绎,Pouch?提供豐富的安全隔離保障和隔離維度;在鏡像分發(fā)上笋鄙,特別是超大規(guī)模場景下可通過P2P的方式緩解網(wǎng)絡(luò)負(fù)載师枣;在內(nèi)核兼容性方面,更加符合企業(yè)現(xiàn)狀局装,考慮到大部分企業(yè)IT系統(tǒng)內(nèi)核的升級緩慢坛吁、版本較低,最大限度適配現(xiàn)有底層基礎(chǔ)設(shè)施铐尚。
Pouch與Dragonfly使用架構(gòu)圖
以往大家常用傳統(tǒng)的方式來下載文件拨脉,這帶來兩個問題:首先如果遇到特別大的文件,下載失敗就要重試宣增,效率低下玫膀;其次如果客戶端進(jìn)行大規(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倍,并且遠(yuǎn)超?Java?和?PHP?開源項目總和漏隐。JavaScript?被越來越多使用喧半,AJAX?使得它在前端編程中大放異彩,而?Node.js?也讓人開始關(guān)注?JavaScript?在服務(wù)器端開發(fā)的能力青责。
阿里巴巴向社區(qū)貢獻(xiàn)了兩款企業(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ā)的需求進(jìn)行不斷改進(jìn)。設(shè)計師團(tuán)隊不斷優(yōu)化和改進(jìn)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?組件庫之一夭谤,除了阿里巴巴集團(tuán)棺牧,還有騰訊、百度朗儒、美團(tuán)颊乘、滴滴和餓了么等公司在使用参淹。目前Ant Design在GitHub上擁有21485顆?star,是開源中國評選的2017年度Top20最受歡迎中國開源軟件乏悄。
Ant Design負(fù)責(zé)人偏右表示浙值,在此次發(fā)布?AntDesign 3.0之后,項目已經(jīng)相對成熟檩小,會進(jìn)進(jìn)入較長的持續(xù)維護(hù)階段开呐,暫時預(yù)計不會有巨大的變化;團(tuán)隊將在視覺布局和主題配置规求、國際化筐付、集成化上補齊?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ā)維護(hù)等具體任務(wù)较解,前端與后端不得不面對“應(yīng)該更考慮用戶側(cè)的靈活體驗,還是更加配合后端服務(wù)的通用性”的爭執(zhí)赴邻。Node.js?在近幾年的蓬勃發(fā)展中哨坪,慢慢改進(jìn)了很多被人詬病的黑點:生態(tài)上npm包數(shù)量冠絕全球,改進(jìn)單線程問題乍楚,借助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ǔ)框架寒跳,以幫助各團(tuán)隊在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?是漸進(jìn)式開發(fā)誓琼,極具伸縮性检激,因此既適合個人小項目快速開發(fā),也適合企業(yè)級的團(tuán)隊開發(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ù)人員的改進(jìn)反饋砸泛,甚至收到了Node TSC Director Rog Vagg在?Twitter?上的關(guān)注與轉(zhuǎn)發(fā)?。
未來蛆封,Egg會將重心放在開發(fā)者體驗方面的優(yōu)化上唇礁,并且分享更多的最佳實踐。
這里還需要濃墨重彩地講講阿里的?Node?技術(shù)積淀:除了阿里內(nèi)部的1000+應(yīng)用惨篱,阿里技術(shù)人同樣進(jìn)行了?Node.js?底層排坑工作垒迂,也與Intel探討如何進(jìn)一步提高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ā)團(tuán)隊規(guī)模擴大坤按,功能愈發(fā)復(fù)雜,需要端側(cè)業(yè)務(wù)的快速迭代馒过;而開發(fā)臭脓、運行和運維中遇到的問題不斷增多,也需要及時進(jìn)行線上bug修復(fù)腹忽。于是手淘團(tuán)隊開始思考如何將復(fù)雜事情簡單化来累,如何進(jìn)行動態(tài)部署,提升團(tuán)隊的移動開發(fā)效率窘奏。
Atlas?以容器化思路解決大規(guī)模團(tuán)隊協(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源自阿里巴巴移動團(tuán)隊五年的研發(fā)積累,進(jìn)行了靜態(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?團(tuán)隊非常開心的事情昭齐。
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ì)量好壞與工程虹统、團(tuán)隊效能息息相關(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項目組會長期更新與維護(hù)插件苔严,團(tuán)隊也希望更多的人參與進(jìn)來定枷,除了發(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)的不斷演進(jì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ā)維護(hù)成本高,硬件生態(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),也很難有足夠的機器智能和安全防護(hù)能力支持梁肿。
具體而言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)用模型無需安裝即可使用境析,并具備獨特的生命周期管理功能囚枪。