6月16日,鵬博士舉辦“不止極簡(jiǎn) 更要極智”線上發(fā)布會(huì),正式發(fā)布新品“大麥小布丁”智能多媒體投屏播放器與“長(zhǎng)城TV”APP,立足于為互聯(lián)網(wǎng)家庭用戶帶來(lái)更加便捷、智能的視聽(tīng)體驗(yàn),提供外觀更精致、性能更優(yōu)異、功能更豐富的全新大麥產(chǎn)品,滿足家庭視聽(tīng)的多方面需求。
外觀方面,大麥小布丁為純白色方形圓潤(rùn)極簡(jiǎn)機(jī)身,線條優(yōu)美流暢,正面配有激光轉(zhuǎn)印的標(biāo)志,側(cè)面有唯一功能按鍵。產(chǎn)品尺寸為 64x64mm,僅有巴掌大小,相比大麥盒子1.0C,體積縮小將近30%。且不額外占用電源,整體外觀精美。
性能方面,大麥小布丁內(nèi)置64位CPU處理器+5核GPU處理器,讓視頻內(nèi)容加載更快、等待更短、畫質(zhì)清晰,網(wǎng)絡(luò)數(shù)據(jù)獲取和加載速度是現(xiàn)款大麥盒子的2倍;2.4/5GHz雙頻天線,信號(hào)獲取能力更強(qiáng)更穩(wěn)定,具有高速傳輸速度,滿足高清以及大數(shù)據(jù)無(wú)線傳輸需求;1GB內(nèi)存+8GB閃存空間,與市場(chǎng)同價(jià)位產(chǎn)品相比,可以將更多應(yīng)用盡收其中,給用戶更快體驗(yàn)。
功能方面,支持包含影視、音樂(lè)、游戲、應(yīng)用、學(xué)習(xí)和會(huì)議投屏等,電視與手機(jī)均可操作,享受大屏極致體驗(yàn)與小屏移動(dòng)便攜完美結(jié)合;AI智能語(yǔ)音輸入,并配有專屬藍(lán)牙遙控器,在范圍內(nèi)無(wú)需對(duì)準(zhǔn),便可隨意操作;支持游戲手柄、藍(lán)牙麥克風(fēng)唱K等更多外設(shè);手機(jī)可遙控,可搭載“長(zhǎng)城TV”APP,可退出當(dāng)前界面繼續(xù)刷微博、微信等其他操作,推送內(nèi)容不額外消耗電量,不占用手機(jī),也不消耗流量。
值得一提的是,本次大麥科技也對(duì)移動(dòng)端產(chǎn)品“長(zhǎng)城TV” APP進(jìn)行了重新規(guī)劃升級(jí),作為綜合性獨(dú)立產(chǎn)品進(jìn)行市場(chǎng)化迭代,打造了集合影音娛樂(lè)、購(gòu)物、商城為一體的綜合性APP,并新增內(nèi)容專區(qū),豐富了視聽(tīng)感受。
“大麥小布丁+長(zhǎng)城TV” 共享賬戶,暢看海量?jī)?nèi)容,包含:電影、電視劇、綜藝、少兒、動(dòng)漫等27個(gè)頻道和長(zhǎng)城Live等頻道專區(qū),及學(xué)而思、精銳教育、新東方在線等上千個(gè)精品教學(xué)課程,精彩內(nèi)容可投屏致大屏上播放,享受大屏觀影。同時(shí),長(zhǎng)城TV與大麥小布丁、大麥盒子賬號(hào)共享,自動(dòng)同步收藏、購(gòu)買、觀看歷史等行為,實(shí)現(xiàn)賬號(hào)統(tǒng)一,會(huì)員同享,內(nèi)容隨身,服務(wù)隨行。
閱讀之前,溫馨提醒您,本文僅供參考娛樂(lè),不可迷信!
“生死茫茫,夢(mèng)里相逢又何懼?”當(dāng)我們夢(mèng)見(jiàn)逝去的親人和朋友,或許是上天通過(guò)夢(mèng)境,給予我們一些隱秘的提示。
這些提示,如同隱藏在迷霧中的寶藏,等待我們?nèi)グl(fā)掘。
夢(mèng)境,自古以來(lái)便是人類心靈的另一片秘境,它以無(wú)盡的想象與深邃的情感,連接著過(guò)去與現(xiàn)在,生者與逝者。
戰(zhàn)國(guó)時(shí)期,道家學(xué)派的重要代表人物——莊子。一日,莊子午后小憩,夢(mèng)中化身為一只輕盈自由的蝴蝶,翩翩飛舞于花間草木之上,完全沉浸于蝶之樂(lè),忘卻了身為人的所有煩惱與束縛。在夢(mèng)里,花的芬芳、風(fēng)的輕柔、陽(yáng)光的溫暖,一切如此真切,仿佛那就是他全部的世界。
然而,當(dāng)莊子從夢(mèng)中醒來(lái),發(fā)現(xiàn)自己依然躺在床上,方才的一切美好不過(guò)是夢(mèng)中的幻象。他不禁陷入了深深的思索:剛剛夢(mèng)中,我確實(shí)是一只快樂(lè)的蝴蝶,可醒來(lái)后,我又是莊周。那么,究竟是莊周夢(mèng)到了成為蝴蝶,還是此刻作為莊周的我,其實(shí)是蝴蝶夢(mèng)中的一部分呢?
正如《莊子·齊物論》所言:“方其夢(mèng)也,不知其夢(mèng)也。”夢(mèng)中的世界,既虛幻又真實(shí),它以獨(dú)特的方式,向我們傳達(dá)著內(nèi)心深處的信息。
當(dāng)我們?cè)趬?mèng)中與逝去的親人和朋友重逢,這些夢(mèng)境不僅僅是偶然的腦電波舞蹈,它們或許正給予我們上天的“五點(diǎn)提示”,寓意深遠(yuǎn),指向大吉大利的未來(lái)。
一、珍惜當(dāng)下,活在當(dāng)下
“人生如夢(mèng)幻泡影,如露亦如電。”這古老的哲理,用佛家的語(yǔ)言,深刻地揭示了人生的短暫與無(wú)常。
當(dāng)我們?cè)趬?mèng)中與逝去的親友重逢,那份深深的懷念與不舍,仿佛在訴說(shuō)著一個(gè)永恒的主題——珍惜。
夢(mèng)回時(shí)分,與故人相遇,那份短暫的溫暖與美好,如同晨曦中的露珠,在陽(yáng)光的照耀下閃閃發(fā)光,卻又在轉(zhuǎn)瞬間消失無(wú)蹤。
這樣的夢(mèng)境,它告訴我們,生活中的每一個(gè)瞬間都是如此寶貴,需要我們用心去珍惜。
莎士比亞在《哈姆雷特》中借波洛涅斯之口所說(shuō):“把握當(dāng)下,切莫等待,因?yàn)榱紮C(jī)易逝,永不再來(lái)。”當(dāng)我們能夠真正地活在當(dāng)下,珍惜身邊的每一個(gè)人,珍惜生活中的每一個(gè)細(xì)節(jié),我們的人生才會(huì)更加豐富多彩。
《黃帝內(nèi)經(jīng)》強(qiáng)調(diào)“恬淡虛無(wú),真氣從之,精神內(nèi)守,病安從來(lái)”,這其中的“恬淡虛無(wú)”,便是一種超脫世俗,專注于當(dāng)下的生活態(tài)度。
能夠放下過(guò)去的執(zhí)著和未來(lái)的擔(dān)憂,真正地活在當(dāng)下,我們的身心才能得到真正的放松和滋養(yǎng)。
珍惜與身邊人的每一次相聚,珍惜工作中的每一次挑戰(zhàn),珍惜生活中的每一個(gè)細(xì)節(jié)。
二、釋懷與寬恕
在夢(mèng)的長(zhǎng)廊里,我們穿梭于現(xiàn)實(shí)與虛幻之間,與逝者對(duì)話,那些往日里未了的心結(jié)、未說(shuō)出口的話語(yǔ),似乎都在這幽暗而神秘的夢(mèng)境中找到了宣泄的出口。
正是這些夢(mèng)境,以其獨(dú)特的方式,教會(huì)我們?nèi)绾畏畔逻^(guò)往的怨懟與遺憾,如何學(xué)會(huì)寬恕他人,更是如何寬恕自己。
《楚辭》中說(shuō):“路漫漫其修遠(yuǎn)兮,吾將上下而求索。”人生之路漫長(zhǎng)且充滿未知,我們?cè)谶@條路上跌跌撞撞,難免會(huì)與他人產(chǎn)生摩擦和誤會(huì)。
如夢(mèng)境所揭示的那樣,這些摩擦和誤會(huì)并不應(yīng)成為我們前行的絆腳石,應(yīng)成為我們成長(zhǎng)路上的墊腳石,推動(dòng)我們不斷向前。
“人生不相見(jiàn),動(dòng)如參與商。今夕復(fù)何夕,共此燈燭光。”在夢(mèng)境中與逝者重逢,讓我們更加明白生命的無(wú)常與短暫,我們應(yīng)學(xué)會(huì)珍惜當(dāng)下,釋懷過(guò)往的恩怨糾葛,以一顆寬容的心去擁抱生活中的每一個(gè)人和事。
通過(guò)寬恕,我們可以減輕內(nèi)心的負(fù)擔(dān),避免進(jìn)一步的傷害和沖突。
在現(xiàn)實(shí)生活中,我們可以嘗試一些具體的做法來(lái)實(shí)踐寬恕。
首先,要正視過(guò)去的傷痛和怨恨,承認(rèn)自己的感受,并尋找合適的方式來(lái)宣泄和釋放這些情緒。
其次,嘗試換位思考,理解對(duì)方的立場(chǎng)和感受,從而培養(yǎng)一顆寬容的心。
最后,通過(guò)積極的溝通和行動(dòng)來(lái)化解矛盾,重建與他人的關(guān)系。
“寬恕是通向自由和幸福的必經(jīng)之路。”讓我們?cè)谶@條路上勇往直前,迎接更加美好的未來(lái)。
三、繼承遺志,勇往直前
在夢(mèng)境的深處,逝者以鼓勵(lì)的姿態(tài)出現(xiàn),他們的話語(yǔ)仿佛還在耳邊回響:“繼續(xù)前行,勿忘初心。”
他們雖已離我們而去,但他們的意志和夢(mèng)想?yún)s通過(guò)夢(mèng)境傳遞給我們,激勵(lì)我們?cè)谌松牡缆飞嫌峦鼻啊?/span>
《左傳》中的智慧也在此刻浮現(xiàn):“居安思危,思則有備,有備無(wú)患。”這句話同樣適用于我們每個(gè)人的生活,在夢(mèng)境的啟示下,我們更應(yīng)思考如何在平穩(wěn)的生活中未雨綢繆,提前做好準(zhǔn)備,以勇敢面對(duì)未來(lái)的挑戰(zhàn)。
而《鏡花緣》中的奇幻之旅,也讓我們明白人生的種種境遇都是一場(chǎng)修行。逝者在夢(mèng)中傳遞的勇氣和力量,正是我們?cè)诂F(xiàn)實(shí)生活中不斷前行的動(dòng)力。
“生活就是一場(chǎng)冒險(xiǎn),只有勇敢面對(duì),才能收獲成長(zhǎng)與喜悅。”這句話與逝者在夢(mèng)中的鼓勵(lì)不謀而合,都在告訴我們:只有勇往直前,才能不負(fù)此生。
四、反思與成長(zhǎng)
夢(mèng)境中的重逢,仿佛打開了一扇通往過(guò)去的窗戶,讓我們能夠重新審視那些逝去的時(shí)光。
在這神秘的夢(mèng)境里,我們與逝者再次相聚,共同回顧過(guò)去的生活片段,是一次心靈成長(zhǎng)的難得契機(jī)。
故事發(fā)生在戰(zhàn)國(guó)時(shí)期的趙國(guó),當(dāng)時(shí)的趙國(guó)雖地處中原邊緣,卻面臨北方游牧民族的頻繁侵?jǐn)_。傳統(tǒng)的中原戰(zhàn)車與重甲步兵,在機(jī)動(dòng)靈活的騎兵面前顯得笨拙而缺乏效率。面對(duì)這一困境,趙武靈王(趙雍)深刻意識(shí)到,若不進(jìn)行軍事改革,趙國(guó)將難以自保,更不用說(shuō)開疆拓土了。
于是,趙武靈王做出了一個(gè)驚世駭俗的決定——推行“胡服騎射”。這一政策要求趙國(guó)軍隊(duì)改穿短衣窄袖的胡服,學(xué)習(xí)游牧民族騎馬射箭的作戰(zhàn)方式。然而,這一變革遭到了朝中保守勢(shì)力的強(qiáng)烈反對(duì),他們認(rèn)為此舉是“舍棄華夏傳統(tǒng),效仿蠻夷”,是對(duì)祖宗之法的背叛。
面對(duì)重重阻力,趙武靈王堅(jiān)持己見(jiàn),他說(shuō):“圣人茍可以強(qiáng)國(guó),不法其故;茍可以利民,不循其禮。”他深知,只有順應(yīng)時(shí)代潮流,學(xué)習(xí)敵人之所長(zhǎng),才能在亂世中立于不敗之地。最終,趙武靈王憑借堅(jiān)定的決心與高超的政治手腕,成功推動(dòng)了胡服騎射的實(shí)施。
改革成效顯著,趙國(guó)軍隊(duì)的戰(zhàn)斗力得到大幅提升,不僅有效抵御了外敵侵?jǐn)_,還大大擴(kuò)展了疆域,一度成為戰(zhàn)國(guó)七雄之一的強(qiáng)盛國(guó)家。趙武靈王的遠(yuǎn)見(jiàn)卓識(shí),不僅鞏固了趙國(guó)的國(guó)防,更為后世留下了寶貴的精神財(cái)富,證明了勇于變革、敢于創(chuàng)新的重要性。
“前事不忘,后事之師。”趙武靈王胡服騎射的故事,警示后人:面對(duì)困難與挑戰(zhàn),應(yīng)當(dāng)從歷史中汲取經(jīng)驗(yàn),敢于打破常規(guī),勇于創(chuàng)新求變。
“前事不忘,后事之師。”通過(guò)回顧過(guò)去,我們可以從中汲取經(jīng)驗(yàn)教訓(xùn),為未來(lái)的人生之路提供寶貴的指引。
夢(mèng)境,正是這樣一個(gè)神奇的平臺(tái),讓我們有機(jī)會(huì)與逝者共同反思,一同成長(zhǎng)。
《論語(yǔ)》中的智慧在此刻熠熠生輝:“吾日三省吾身。”這句話教導(dǎo)我們每天都要反思自己的行為,檢查自己的過(guò)錯(cuò),從而不斷完善自我。
夢(mèng)境中的重逢,恰恰提供了這樣一個(gè)反思的契機(jī)。在夢(mèng)中,我們可以與逝者共同回顧過(guò)去的點(diǎn)點(diǎn)滴滴,從他們的生命經(jīng)歷中汲取智慧,反思自己的不足,進(jìn)而促進(jìn)個(gè)人的成長(zhǎng)與完善。
《增廣賢文》中也有言:“觀今宜鑒古,無(wú)古不成今。”這句話告訴我們,要善于從歷史和他人的經(jīng)驗(yàn)中汲取教訓(xùn),以此來(lái)指導(dǎo)我們的未來(lái)。
在夢(mèng)境中與逝者重逢,我們可以從他們的經(jīng)歷中汲取智慧,避免重蹈覆轍,更好地規(guī)劃自己的人生道路。
五、相信宇宙間的連結(jié)
夢(mèng),那如細(xì)語(yǔ)般的靈魂溝通,悄然在夜色中綻放,無(wú)聲地訴說(shuō)著生命的奧秘。它不受生死的束縛,自由地穿梭于宇宙間,像一根隱形的絲線,將我們與逝去的親人、歷史的長(zhǎng)河,乃至整個(gè)宇宙緊密相連。
這種連結(jié),早已被古人所覺(jué)察。《孝經(jīng)》有云:“身體發(fā)膚,受之父母,不敢毀傷,孝之始也。”這不僅是對(duì)肉身的珍視,更是對(duì)生命傳承與宇宙連結(jié)的一種敬畏。
當(dāng)我們?cè)趬?mèng)中與逝者相會(huì),那不僅僅是對(duì)親人的懷念,更是對(duì)生命奧秘的深刻體驗(yàn)。
它讓我們明白,盡管肉身會(huì)消逝,但愛(ài)與記憶卻如同那不可見(jiàn)的連結(jié),永遠(yuǎn)將我們與宇宙、與歷史、與親人緊密相連。
這種連結(jié),也讓我想起了古今中外的許多故事。比如那個(gè)古老的傳說(shuō),關(guān)于織女星與牛郎星的相思之情,每年七夕之夜,喜鵲搭橋,讓他們得以相會(huì)。這不正是宇宙間連結(jié)之美的一種體現(xiàn)嗎?又比如,當(dāng)我們仰望星空,想到那些遠(yuǎn)在天際的星辰,其實(shí)與我們共享著同一個(gè)宇宙,這種連結(jié)感便油然而生。
愛(ài)因斯坦曾言:“宇宙中最不可理解的事情是,它竟然是可以理解的。”這句話不僅表達(dá)了對(duì)宇宙神秘性的敬畏,也暗示了宇宙中存在著某種深層次的秩序和連結(jié)。
正是這種連結(jié),讓我們能夠在夢(mèng)中與逝者相會(huì),讓我們能夠感受到歷史的厚重和宇宙的浩渺。
綜上所述,夢(mèng)見(jiàn)逝去的親人和朋友,不僅僅是夜晚心靈的一場(chǎng)旅行,更是心靈深處的覺(jué)醒。
這“五點(diǎn)提示”如同夜空中最亮的星,引領(lǐng)我們走向更加明亮、積極的生活態(tài)度。
讓我們?cè)诂F(xiàn)實(shí)中,以行動(dòng)回應(yīng)夢(mèng)境的啟示,珍惜當(dāng)下,釋懷過(guò)去,勇往直前,不斷反思成長(zhǎng),并相信生命之間那份永恒的連結(jié)。
在生活的舞臺(tái)上,我們既是演員也是觀眾,用心演繹,用心感悟,讓生命的每一幕都充滿意義。
者| 阿里文娛高級(jí)技術(shù)專家 江新
責(zé)編 | 夕顏
出品 | CSDN(ID:CSDNnews)
2018年初,大麥決定將電商體系整體融入阿里電商平臺(tái),到目前大麥基于阿里共享電商平臺(tái)體系的商品占比89%,交易占比超過(guò)90%,全部熱門項(xiàng)目搶票已經(jīng)在跑在這個(gè)鏈路上,在這個(gè)時(shí)間點(diǎn)來(lái)從技術(shù)角度回顧一下整個(gè)變遷的過(guò)程。
“星環(huán)”是阿里的共享平臺(tái)接入不同業(yè)務(wù)方的產(chǎn)品技術(shù)體系,大麥的融入也正是基于星環(huán)的能力。
背景
首先來(lái)看下在項(xiàng)目啟動(dòng)之前的一些背景情況,主要是當(dāng)時(shí)大麥交易所處的一個(gè)狀態(tài),已經(jīng)我們?yōu)槭裁催x擇去做這件事情。
2017年底,大麥主交易流程已經(jīng)遷移到阿里巴巴技術(shù)體系內(nèi),在交易核心鏈路上替換了大麥原有的技術(shù)體系,大大的提升了交易體系穩(wěn)定性。上線后,交易方面以及大型搶票再也沒(méi)有出現(xiàn)過(guò)比較大的問(wèn)題了。但是從產(chǎn)品技術(shù)交易看依然存在很多問(wèn)題:
若干依賴服務(wù)(尤其是商品、庫(kù)存)依然在大麥機(jī)房,需要繼續(xù)遷移;
交易容量問(wèn)題,由于商品庫(kù)存仍然大麥機(jī)房,庫(kù)存扣減能力比較低,遇到周杰倫演唱會(huì)這樣的大型搶票,有比較大的提升空間;
與阿里的共享電商體系互相獨(dú)立,不利于未來(lái)的發(fā)展。
縱觀上述幾個(gè)問(wèn)題,如果我們讓大麥電商整體融入阿里共享電商技術(shù)體系,都會(huì)迎刃而解。尤其是第三個(gè)方面,面向未來(lái),如何借力阿里巴巴的商業(yè)生態(tài)元素來(lái)發(fā)展,成為大麥戰(zhàn)略上的重點(diǎn)。
我們一直相信,大麥電商體系融合到共享電商平臺(tái),是一個(gè)正確的發(fā)展方向。但是在最開始的階段,大家還是有一些猶豫的。大麥有一些來(lái)自飛豬的產(chǎn)品技術(shù)同學(xué)。飛豬所承載的旅行業(yè)務(wù)同樣是一個(gè)和淘寶、天貓差異很大的垂直電商。當(dāng)時(shí)飛豬也沒(méi)有融入到共享平臺(tái),可以看到原因肯定是多個(gè)方面,比如之前共享體系還沒(méi)有足夠好的開放能力來(lái)容納差異很大的業(yè)務(wù),其中一個(gè)典型的例子是,共享體系是不允許業(yè)務(wù)方隨意外調(diào)服務(wù)的。
到2018年,共享交易已經(jīng)逐步把平臺(tái)和業(yè)務(wù)的邊界逐步劃分開來(lái),建立了一套平臺(tái)提供基礎(chǔ)能力,業(yè)務(wù)自行擴(kuò)展實(shí)現(xiàn)差異化邏輯的標(biāo)準(zhǔn)。經(jīng)過(guò)實(shí)際調(diào)研看到這些進(jìn)展之后,更加堅(jiān)定了我們邁出融合這一步的信心。因此大麥正式啟動(dòng)了向阿里電商平臺(tái)融合的項(xiàng)目,大麥交易進(jìn)入一個(gè)全新的階段,整個(gè)大麥電商體系也完全進(jìn)入了一個(gè)新的紀(jì)元。
交易模塊化框架TMF與星環(huán)
2.1 基于TMF的交易定制
在項(xiàng)目剛啟動(dòng)的時(shí)候,星環(huán)尚未完全就緒。大麥業(yè)務(wù)的差異化定制,主要還是基于交易模塊化框架(TMF)在共享交易的各個(gè)應(yīng)用中做定制來(lái)實(shí)現(xiàn)的。
TMF的邏輯是,一次請(qǐng)求來(lái)到交易,首先識(shí)別業(yè)務(wù)身份,搞明白是誰(shuí)家的業(yè)務(wù),然后在業(yè)務(wù)流程運(yùn)行過(guò)程中,相應(yīng)的業(yè)務(wù)能力擴(kuò)展點(diǎn)被執(zhí)行,達(dá)到差異化定制的目的。業(yè)務(wù)身份的識(shí)別標(biāo)準(zhǔn)往往會(huì)是商品、類目或者其上的一些屬性。例如大麥的業(yè)務(wù)身份,對(duì)應(yīng)的識(shí)別標(biāo)準(zhǔn)是,商品上有一個(gè)標(biāo)。
基于TMF來(lái)定制,以交易下單服務(wù)buy2為例,我們需要實(shí)現(xiàn)一個(gè)擴(kuò)展包,其中的主要內(nèi)容是:
業(yè)務(wù)身份識(shí)別:大麥基于商品標(biāo)來(lái)識(shí)別;
擴(kuò)展點(diǎn)定制:例如大麥定制了資金流走即時(shí)到賬。
buy2的大概結(jié)構(gòu)是:
入口服務(wù)->業(yè)務(wù)流程(BPM)->業(yè)務(wù)活動(dòng)->業(yè)務(wù)能力->能力擴(kuò)展點(diǎn)。
大麥針對(duì)buy2的擴(kuò)展包,就是針對(duì)上述能力擴(kuò)展點(diǎn)的實(shí)現(xiàn),請(qǐng)求經(jīng)過(guò)業(yè)務(wù)身份識(shí)別確定是大麥業(yè)務(wù)后,大麥會(huì)走到這些相關(guān)的擴(kuò)展點(diǎn)實(shí)現(xiàn)。
這里其實(shí)會(huì)埋下一個(gè)伏筆,就是在商品查詢出來(lái)之前,其實(shí)是不知道業(yè)務(wù)身份的。這個(gè)會(huì)影響后面監(jiān)控、問(wèn)題排查等方面的一些做法。
2.2 星環(huán)與業(yè)務(wù)定制
星環(huán)是個(gè)很大的東西,涵蓋了需求溝通機(jī)制、業(yè)務(wù)定制、容器化、質(zhì)量保障多個(gè)方面。全面的只是還是要從星環(huán)的文檔和與星環(huán)團(tuán)隊(duì)的溝通中獲得。這里只是我們作為大麥一個(gè)業(yè)務(wù)方在使用過(guò)程中看到的一些側(cè)面。
TMF框架本身的開放性,已經(jīng)能夠支撐業(yè)務(wù)方在共享的體系下實(shí)現(xiàn)自己的定制,對(duì)想要借力共享體系,但是又有一定差異的業(yè)務(wù)來(lái)說(shuō),是非常好的。而后面的星環(huán)繼承和發(fā)展了這種開放性,在我看來(lái)主要針對(duì)以下幾個(gè)問(wèn)題:
TMF階段,業(yè)務(wù)方需要給各個(gè)共享應(yīng)用分別實(shí)現(xiàn)定制包;
因?yàn)樯鲜鲈颍瑯I(yè)務(wù)需要清楚的知道共享體系的內(nèi)部結(jié)構(gòu);
整體運(yùn)行在一套基礎(chǔ)資源上面,不同業(yè)務(wù)互相之間影響產(chǎn)生的穩(wěn)定性隱患。
市面上復(fù)雜的SAAS系統(tǒng),背后的物理結(jié)構(gòu)是非常復(fù)雜的,而使用者要定制一些邏輯的時(shí)候,是不需要理解其背后的物理結(jié)構(gòu)的。星環(huán)在擴(kuò)展方面也肩負(fù)著向這個(gè)方面演化的使命。在TMF時(shí)代電商體系每個(gè)應(yīng)用都有一套擴(kuò)展點(diǎn),每個(gè)業(yè)務(wù)方需要的話都要為多個(gè)共享應(yīng)用實(shí)現(xiàn)擴(kuò)展包。星環(huán)抽象了一個(gè)叫做”商業(yè)能力“的層次出來(lái),統(tǒng)一全部業(yè)務(wù)能力的擴(kuò)展點(diǎn),最終實(shí)現(xiàn)定制方基于一套擴(kuò)展點(diǎn)來(lái)定制一個(gè)包,部署到共享各個(gè)系統(tǒng)中這樣的效果。
具體來(lái)說(shuō),例如”基礎(chǔ)交易“是一個(gè)商業(yè)能力,它的定制點(diǎn),包含了商品、交易多個(gè)方面,很多擴(kuò)展點(diǎn)。涉及多個(gè)共享應(yīng)用。商業(yè)能力擴(kuò)展點(diǎn)這一層,包含了上述多個(gè)方面的擴(kuò)展點(diǎn),業(yè)務(wù)方通過(guò)這個(gè)統(tǒng)一的層次提供的語(yǔ)義來(lái)擴(kuò)展,而在其背后,星環(huán)的實(shí)現(xiàn)層會(huì)把原始的業(yè)務(wù)能力的擴(kuò)展點(diǎn),橋接到星環(huán)商業(yè)能力的擴(kuò)展點(diǎn)上來(lái)。
容器化與發(fā)布流程
星環(huán)里面一個(gè)重要的事情是容器化。按照星環(huán)網(wǎng)站上的說(shuō)法,目標(biāo)是四個(gè):
業(yè)務(wù)自治:業(yè)務(wù)方獨(dú)自完成業(yè)務(wù)的設(shè)計(jì)開發(fā)、測(cè)試和部署運(yùn)行;
業(yè)務(wù)隔離:業(yè)務(wù)與&業(yè)務(wù)/業(yè)務(wù)&平臺(tái)隔離再不擔(dān)心業(yè)務(wù)變更互相影響;
業(yè)務(wù)動(dòng)態(tài)部署:業(yè)務(wù)方可以在線進(jìn)行發(fā)布和部署,快速響應(yīng)業(yè)務(wù)需求;
業(yè)務(wù)快速恢復(fù):業(yè)務(wù)應(yīng)用發(fā)布上線平臺(tái)保留歷史版本,可在線版本回退。
這個(gè)事情涉及從系統(tǒng)邏輯結(jié)構(gòu),到發(fā)布方式的一系列變化。從這些變化里面可以了解到”容器“究竟是什么。
3.1 ClassLoader隔離
阿里共享業(yè)務(wù)平臺(tái)的應(yīng)用以交易下單服務(wù)為例,作為一個(gè)大容器,業(yè)務(wù)方例如大麥的定制包作為一個(gè)子應(yīng)用,就是一個(gè)子容器。每一個(gè)子容器都有自己獨(dú)立的ClassLoader。這個(gè)classLoader以平臺(tái)的ClassLoader為parentClassLoader,同時(shí),自己內(nèi)部基于配置知曉自己這個(gè)業(yè)務(wù)APP的jar包在哪里。
我們知道Tomcat作為一個(gè)容器是違背了雙親委派模型的,優(yōu)先加載應(yīng)用的類,從而實(shí)現(xiàn)WEB-INF/lib以及WEB-INF/classes類的優(yōu)先級(jí)更高,而星環(huán)的容器沒(méi)有這樣做,依然是原本的雙親委派模型。這樣做的結(jié)果是:
對(duì)于平臺(tái)已經(jīng)存在的類,會(huì)使用平臺(tái)公共的實(shí)例;
對(duì)于僅存在于業(yè)務(wù)APP包中的類,平臺(tái)層找不到,所以會(huì)加載業(yè)務(wù)APP中的類。
這個(gè)方式有優(yōu)有劣。優(yōu)點(diǎn)在于盡可能的共用了平臺(tái)層面所能提供的類定義,可以控制metaspace的大小。在另外一個(gè)方向上,阿里中間件的Pandora隔離容器使用類似tomcat的機(jī)制以插件的class優(yōu)先,從而做到各插件類路徑隔離,從2017年開始要求metaSpace要配置512M了。而且,星環(huán)容器所承載的業(yè)務(wù)方子容器量會(huì)遠(yuǎn)超過(guò)Pandora所加載的插件量,如果不做這個(gè)控制,諸如commons.lang下面的類也是一個(gè)容器一份,MetaSpace要的內(nèi)存簡(jiǎn)直無(wú)法接受。
上述優(yōu)勢(shì)從另外一個(gè)角度看恰好又成了一個(gè)潛在的威脅。各方APP所以依賴的一些公共的三方包,甚至公司內(nèi)部提供的二方包,具體在系統(tǒng)啟動(dòng)起來(lái)之后使用的版本,是有互相影響的。兩個(gè)APP使用了相同的三方包的場(chǎng)景下,實(shí)際上最終平臺(tái)是按照maven的就近原則來(lái)打包其中一個(gè)到war中,于是實(shí)際過(guò)程中,一個(gè)APP升級(jí)該三方包,也就影響到了另外一個(gè)APP。實(shí)際上導(dǎo)致容器隔離不徹底。當(dāng)然,這只是一個(gè)權(quán)衡。實(shí)際上如果真完全以Pandora模式,又會(huì)出現(xiàn)平臺(tái)export哪些類給到業(yè)務(wù)APP的細(xì)節(jié)問(wèn)題。
3.2 獨(dú)立的Spring子容器
Spring的容器也做了類似上述結(jié)構(gòu)的父子關(guān)系,不用擔(dān)心各個(gè)APP內(nèi)的bean之間的沖突。一個(gè)結(jié)果是,子容器里面僅包含業(yè)務(wù)APP中所定義的bean。那么,類似限流、降級(jí)這樣的平臺(tái)層自動(dòng)代理的一些事情,在子容器里面是沒(méi)有的。如果你的業(yè)務(wù)APP希望使用到限流、降級(jí),那么你需要在業(yè)務(wù)APP的spring文件中引入相關(guān)的bean定義。
3.3 自主熱發(fā)布
共享應(yīng)用由于結(jié)構(gòu)、業(yè)務(wù)及其復(fù)雜,發(fā)布一次的時(shí)間,非常長(zhǎng),這是一個(gè)極其痛苦的過(guò)程。以交易下單服務(wù)為例,一次構(gòu)建幾分鐘,一次部署要10幾分鐘到半個(gè)小時(shí)的時(shí)間。相比于業(yè)務(wù)方自己的小應(yīng)用一次構(gòu)建加部署5分鐘以內(nèi),這個(gè)時(shí)間的確是太長(zhǎng)了。
基于classLoader隔離和Spring子容器,整個(gè)業(yè)務(wù)APP的熱發(fā)布成為可能。所謂熱發(fā)布就是在不停tomcat的情況下,把一個(gè)業(yè)務(wù)的變更發(fā)布到線上。一次熱發(fā)布過(guò)程大約如下:
應(yīng)用offline 當(dāng)然要首先讓流量不再進(jìn)來(lái);
下載更新應(yīng)用的jar包,這個(gè)過(guò)程使用了目標(biāo)應(yīng)用的主干配置項(xiàng)來(lái)替換jar包中的引用;
容器銷毀-重建,過(guò)程中拋棄了原有的classLoader和spring子容器,創(chuàng)建了新的實(shí)例;
應(yīng)用online。
熱發(fā)布大大縮短了業(yè)務(wù)構(gòu)建部署的時(shí)間,基本上一次構(gòu)建部署5分鐘內(nèi)搞定。相比之前每次war部署,幸福的像是回到了伊甸園。
實(shí)際上平臺(tái)一次war發(fā)布經(jīng)常需要幾個(gè)小時(shí)的時(shí)間,這其中固然有分批的因素,但是本身應(yīng)用構(gòu)建、啟動(dòng)慢也是一個(gè)重要的原因。從穩(wěn)定行方面來(lái)講,線上發(fā)現(xiàn)一個(gè)問(wèn)題,如果改代碼、war發(fā)布,這樣的時(shí)間加起來(lái)幾乎足以似的問(wèn)題變成故障,小故障升級(jí)成大故障。有了熱發(fā)布,腰不酸了,腿不疼了,輕輕松松搞定發(fā)布。線上問(wèn)題發(fā)現(xiàn)到改動(dòng)、恢復(fù)時(shí)間也大大縮短。
但是熱發(fā)布的逐步完善過(guò)程還是很快的,最初有一些限制,后來(lái)都逐步優(yōu)化掉了:
靜態(tài)配置項(xiàng)變化,不能熱發(fā)布。目前已經(jīng)使用了對(duì)應(yīng)變更的配置項(xiàng)得以解決;
依賴包變化不能熱發(fā)布。這個(gè)事情曾經(jīng)想過(guò)用fatjar來(lái)解決,后來(lái)已經(jīng)支持附屬jar發(fā)布,大麥已經(jīng)在使用;
前端交互協(xié)議組件奧創(chuàng)的修改不能熱發(fā)布。這個(gè)事情使用新奧創(chuàng)得以解決,大麥19年完成了切換。
熱發(fā)布上線后,大麥不能熱發(fā)的場(chǎng)景,大多數(shù)是奧創(chuàng)改動(dòng)和依賴包改動(dòng)。現(xiàn)在正在解決依賴包的問(wèn)題。
目前,業(yè)務(wù)定制改動(dòng)后,發(fā)布的時(shí)候還是要勾選一下要發(fā)布的目標(biāo)系統(tǒng),例如buy2。未來(lái)的方向應(yīng)該是業(yè)務(wù)方不用關(guān)心改動(dòng)發(fā)布到共享的什么系統(tǒng)里面去。
3.4 獨(dú)立分組與環(huán)境隔離
大麥在buy2上劃分了獨(dú)立分組。后面飛豬等業(yè)務(wù)方也都是用了獨(dú)立分組。星環(huán)目前采用中間件提供的環(huán)境隔離方案把業(yè)務(wù)方的流量隔離到目標(biāo)獨(dú)立分組。
首先buy2給大麥劃分了一個(gè)獨(dú)立機(jī)器分組叫做buy2_damai_host。
然后,大麥的流量通過(guò)三種方式路由到大麥獨(dú)立分組:
nginx路由,部分流量在公共分組的nginx層可以識(shí)別到url參數(shù)或者Header,然后走到buy2_damai_host的Java;
Java兜底路由,部分流量只能在buy2host這個(gè)機(jī)器分組里面把商品查出來(lái)之后,才能識(shí)別到是大麥的業(yè)務(wù),此時(shí)再通過(guò)一次RPC調(diào)用,走到大麥分組;
RPC調(diào)用路由,大麥自己的Java應(yīng)用在調(diào)用buy2的RPC服務(wù)之前,可以通過(guò)設(shè)置路由相關(guān)的鷹眼標(biāo)來(lái)指定調(diào)用到大麥分組。
大麥最初采用獨(dú)立分組是基于物理隔離和降低運(yùn)維成本的考慮。發(fā)展到現(xiàn)在,獨(dú)立分組這個(gè)事情主要看到以下幾個(gè)點(diǎn)(包括優(yōu)勢(shì)和問(wèn)題):
優(yōu)勢(shì)一:獨(dú)立分組讓大麥只關(guān)心自己分組的機(jī)器,在遇到某些問(wèn)題的時(shí)候,處理起來(lái)比較方便。共享應(yīng)用動(dòng)輒幾千臺(tái)機(jī)器,查個(gè)問(wèn)題需要好久。但是,獨(dú)立分組大麥也就100多個(gè)機(jī)器,查問(wèn)題成本完全不是一個(gè)水位。
優(yōu)勢(shì)二:獨(dú)立分組讓大麥的監(jiān)控可以只關(guān)心大麥分組,這個(gè)事情詳細(xì)在下一小節(jié)來(lái)描述。
優(yōu)勢(shì)三:獨(dú)立分組帶來(lái)的物理隔離,讓大麥在自己的分組上開啟一些特殊的能力不用擔(dān)心影響別的業(yè)務(wù)方,具體參考下面的問(wèn)題排查小節(jié)。
優(yōu)勢(shì)四:獨(dú)立分組在平臺(tái)整體war發(fā)布的時(shí)候,可以自主控制發(fā)布節(jié)奏。一般來(lái)說(shuō)平臺(tái)整體的發(fā)布因?yàn)閼?yīng)用眾多,所以分批較多,而且間隔也經(jīng)常拉的很長(zhǎng),經(jīng)常跨天。一些需要快速生效的問(wèn)題修復(fù)場(chǎng)景,這個(gè)過(guò)程慢的讓人捉急。獨(dú)立分組對(duì)應(yīng)在應(yīng)用發(fā)布平臺(tái)上是一個(gè)獨(dú)立的環(huán)境,發(fā)布單也是獨(dú)立的,因而可以在保障穩(wěn)定的前提下繼續(xù)發(fā)布,提高發(fā)布效率。
同時(shí)獨(dú)立分組也帶來(lái)一些困擾,這也是目前大麥和共享同學(xué)還在想辦法優(yōu)化的一些事情:
一方面,共享的應(yīng)用都是單元化的,這個(gè)獨(dú)立分組也要保障多個(gè)單元的容量,在單元化流量調(diào)整的一些場(chǎng)景下,需要密切的做好溝通,避免特定單元容量不足引發(fā)問(wèn)題。
另外一方面,獨(dú)立分組還是帶來(lái)了一定的資源浪費(fèi)。大麥業(yè)務(wù)的流量有個(gè)特點(diǎn)是大型搶票來(lái)的時(shí)候(每周幾次)流量瞬間很高,而無(wú)大型搶票的時(shí)候流量低的不好意思說(shuō)。為了維持大搶容量,獨(dú)立分組必須有足夠的資源配置。
目前大麥僅在buy2上做了獨(dú)立分組,其他幾個(gè)應(yīng)用都還沒(méi)有做。飛豬和新零售做的多一些。
監(jiān)控
監(jiān)控部分,說(shuō)三個(gè)方面:
4.1 系統(tǒng)監(jiān)控
系統(tǒng)監(jiān)控說(shuō)的是cpu、load、網(wǎng)絡(luò)這些方面。對(duì)于做了獨(dú)立分組的應(yīng)用,可以在監(jiān)控平臺(tái)上針對(duì)這個(gè)分組配置一個(gè)虛擬應(yīng)用,看起來(lái)和其他應(yīng)用沒(méi)什么區(qū)別,看起來(lái)很方便。如果沒(méi)有獨(dú)立分組,那么系統(tǒng)監(jiān)控這個(gè)事情,基本上就只能是平臺(tái)層面關(guān)注了。
4.2 業(yè)務(wù)監(jiān)控
共享的主要應(yīng)用都會(huì)有統(tǒng)一的業(yè)務(wù)監(jiān)控以及對(duì)應(yīng)的大盤。但是這些大盤的視角都是平臺(tái)視角,大麥這樣一個(gè)小業(yè)務(wù)放在里面,典型的效果就是下單全部失敗,成功率曲線也看不出來(lái)明顯的下跌。
所以必須做業(yè)務(wù)線視角的監(jiān)控和大盤。因而大麥參考共享的監(jiān)控大盤配置了自己的業(yè)務(wù)監(jiān)控。包括渲染量、下單量以及相關(guān)的成功率、錯(cuò)誤碼等方面。
這里面有一個(gè)日志數(shù)據(jù)篩選的事情也經(jīng)歷了一些變化過(guò)程。早期,大麥?zhǔn)窃谌罩纠锩孢^(guò)濾有大麥業(yè)務(wù)身份的數(shù)據(jù),然后基于過(guò)濾出的日志內(nèi)容做監(jiān)控。后來(lái)發(fā)現(xiàn),對(duì)于走到業(yè)務(wù)身份識(shí)別邏輯之前就報(bào)錯(cuò)了的請(qǐng)求,在這些日志里面是不可能有業(yè)務(wù)身份數(shù)據(jù)的。所以就修改成了拿buy2_damai_host上的所有數(shù)據(jù)來(lái)做監(jiān)控。正好環(huán)境隔離方案上線后,大麥分組不再會(huì)有別的業(yè)務(wù)的流量,所以這樣做是完備的。
可以看出來(lái),上述邏輯嚴(yán)重依賴獨(dú)立分組。沒(méi)有獨(dú)立分組的業(yè)務(wù)或者應(yīng)用,會(huì)存在一個(gè)問(wèn)題,代碼走到業(yè)務(wù)身份識(shí)別之前出現(xiàn)的問(wèn)題,是很難做到業(yè)務(wù)方獨(dú)立的監(jiān)控里面的。
另外一個(gè)實(shí)踐是,對(duì)于大麥這樣一個(gè)小業(yè)務(wù),平時(shí)的請(qǐng)求量非常低。以渲染為例,平時(shí)1分鐘也就幾十個(gè)請(qǐng)求。渲染失敗的原因里面,類似庫(kù)存不足、超過(guò)限購(gòu)數(shù)量、相同身份證已經(jīng)購(gòu)買過(guò)之類的這樣的原因,如果都作為請(qǐng)求失敗來(lái)看的話,成功率的曲線會(huì)很難看。基本上跌的很多,真正的線上問(wèn)題會(huì)被淹沒(méi)。所以大麥在GOC監(jiān)控里面,會(huì)把類似庫(kù)存不足這樣的錯(cuò)誤碼排除出去,從而做到一個(gè)基本上維持100%成功率的曲線。
這樣做能夠達(dá)到根據(jù)這個(gè)曲線更加準(zhǔn)確的判斷系統(tǒng)運(yùn)行狀況。這不是一個(gè)完備的方案,但是實(shí)踐下來(lái)證明是有效的。
4.3 異常監(jiān)控
一個(gè)應(yīng)用的異常堆棧日志是應(yīng)用是否正常的重要表征。有新的異常出現(xiàn)或者某類異常大量飆升的時(shí)候,基本上可以判斷有問(wèn)題了。一個(gè)好的實(shí)踐是,系統(tǒng)異常打堆棧,業(yè)務(wù)異常(例如庫(kù)存不足)不打堆棧,這樣能夠讓應(yīng)用的異常量維持一個(gè)比較低的水平。大麥技術(shù)團(tuán)隊(duì)經(jīng)常會(huì)使用鷹眼團(tuán)隊(duì)提供的監(jiān)控產(chǎn)品來(lái)看共享應(yīng)用的異常信息。根據(jù)某一類型的異常突增這樣的信息來(lái)分析判斷問(wèn)題。
問(wèn)題排查工具
技術(shù)團(tuán)隊(duì)的工作里面,線上雜七雜八的問(wèn)題的排查工作,一直以來(lái)都是重要的組成部分,而通過(guò)工具建設(shè)來(lái)提升問(wèn)題排查效率也是技術(shù)團(tuán)隊(duì)一直追求的事情。這個(gè)方面大麥以往有一些實(shí)踐,融入共享之后也在共享的體系下共建了一些能力,這里分享出來(lái)。
這里描述的“問(wèn)題”,一般是指兩個(gè)方面,一個(gè)是用戶或者客服、業(yè)務(wù)同學(xué)反饋過(guò)來(lái)的一些問(wèn)題場(chǎng)景。例如某某用戶具有購(gòu)買資格但是下單提示不能購(gòu)買,或者某某訂單沒(méi)有用到一個(gè)優(yōu)惠。另外一個(gè)方面是業(yè)務(wù)監(jiān)控發(fā)現(xiàn)的,例如某一類錯(cuò)誤碼突增。
問(wèn)題排查過(guò)程要基于已知的這些少量的信息,去追蹤還原當(dāng)時(shí)的場(chǎng)景。典型的想法是去機(jī)器上找日志。但是這種方式效率比較低,而且會(huì)把這個(gè)工作局限在技術(shù)人員身上,無(wú)法給到上層。
阿里的鷹眼的業(yè)務(wù)日志是一個(gè)很好的工具,現(xiàn)在大家也經(jīng)常可以拿著訂單號(hào)、traceId來(lái)查詢一些鏈路上的日志。但是會(huì)有一些局限:一來(lái),沒(méi)有訂單號(hào)的場(chǎng)景,例如訂單確認(rèn)頁(yè)打開失敗,這種無(wú)從查起;二來(lái),很多時(shí)候是沒(méi)有traceId的……
大麥技術(shù)團(tuán)隊(duì)和阿里共享團(tuán)隊(duì)協(xié)同建立了一個(gè)基于業(yè)務(wù)日志的問(wèn)題排查工具,做到基于業(yè)務(wù)自己的場(chǎng)景打印相關(guān)日志,并指定自定義的索引字段來(lái)應(yīng)對(duì)問(wèn)題排查時(shí)候的查詢。
5.1 效果
我們做到可以根據(jù)一個(gè)錯(cuò)誤碼,查詢這個(gè)錯(cuò)誤碼產(chǎn)生的鏈路日志(利器),根據(jù)某一次請(qǐng)求失敗的日志詳情來(lái)判斷問(wèn)題的具體原因。可供查詢的日志數(shù)據(jù)里面實(shí)際上包含了3個(gè)部分的日志:
A. 交易下單應(yīng)用的入口服務(wù)和依賴服務(wù)的攔截日志;
B. 交易下單應(yīng)用的入口異常日志;
C. 業(yè)務(wù)擴(kuò)展包中自主打的一些日志。
業(yè)務(wù)APP可以自主打印一些指定格式的日志。日志內(nèi)容、索引都是自定義的。配
置采集之后即可在一個(gè)統(tǒng)一的頁(yè)面上查詢。
5.2 怎么實(shí)現(xiàn)的
上述日志最終都是通過(guò)一個(gè)通用的二方包打到磁盤上,然后通過(guò)日志采集服務(wù)采集投遞到了阿里云的日志服務(wù)SLS里面(需要各業(yè)務(wù)方自己提供LogStore,并承擔(dān)成本)。然后基于SLS的能力提供查詢。
5.3 更進(jìn)一步
大麥基于上述日志,做了一層格式化和語(yǔ)義轉(zhuǎn)換,把技術(shù)人員才能看懂的信息,轉(zhuǎn)換成為非技術(shù)同學(xué)也能看懂的說(shuō)法,從而把一部分問(wèn)題的排查交給了上層的非技術(shù)同學(xué)。
尾聲
大麥通過(guò)把整個(gè)電商融入阿里共享電商平臺(tái),穩(wěn)定性、性能上都得到了大幅的提升。在產(chǎn)品能力上也自然而然的可以低成本的借助阿里的各種基礎(chǔ)設(shè)施,在這個(gè)基礎(chǔ)上,大麥的業(yè)務(wù)也在逐步發(fā)展。過(guò)程中有很多抉擇、取舍,這篇文章也是希望從技術(shù)過(guò)程的角度嘗試對(duì)一個(gè)小業(yè)務(wù)如何融入大平臺(tái)做一個(gè)分享,希望有類似場(chǎng)景讀者,不論是做平臺(tái)還是做業(yè)務(wù),能夠有所收獲。