<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>

          微服務(wù)之間的最佳調(diào)用方式

          共 20311字,需瀏覽 41分鐘

           ·

          2021-06-22 16:41

          上一篇:3600萬中國人在抖音“上清華”

          0、2T架構(gòu)師學(xué)習(xí)資料干貨分享

          茉莉花,別名:茉莉,拉丁文名:Jasminum sambac (L.) Ait,木
          犀科、素馨屬直立或攀援灌木,高達3米。
          小枝圓柱形或稍壓扁狀,有時中空,疏被柔毛。葉對生,單葉,葉片紙質(zhì),圓形、橢圓形、卵狀橢圓形或倒卵形,兩端圓或鈍,基部有時微心形,在上面稍凹入或凹起,下面凸起,細脈在兩面常明顯,微凸起,除下面脈腋間常具簇毛外,其余無毛;裂片長圓形至近圓形,先端圓或鈍。果球形,呈紫黑色。花期5-8月,果期7-9月。
          茉莉的花極香,為著名的花茶原料及重要的香精原料;花、葉藥用治目赤腫痛,并有止咳化痰之效。
          吳王子子駒亡走閩越,怨東甌殺其父,常勸閩越擊東甌。至建元三年,閩越發(fā)兵圍東甌。東甌食盡,困,
          太史公曰:余每讀虞書,至於君臣相敕,維是幾安,而股肱不良,萬事墮壞,未嘗不流涕也。成王作頌,推己懲艾,悲彼家難,可不謂戰(zhàn)戰(zhàn)恐懼,善守善終哉?君子不為約則修德,滿則棄禮,佚能思初,安能惟始,沐浴膏澤而歌詠勤苦,非大德誰能如斯!傳曰“治定功成,禮樂乃興”。海內(nèi)人道益深,其德益至,所樂者益異。滿而不損則溢,盈而不持則傾。凡作樂者,所以節(jié)樂。君子以謙退為禮,以損減為樂,樂其如此也。以為州異國殊,情習(xí)不同,故博采風(fēng)俗,協(xié)比聲律,以補短移化,助流政教。天子躬於明堂臨觀,而萬民咸蕩滌邪穢,斟酌飽滿,以飾厥性。故云雅頌之音理而民正,嘄噭之聲興而士奮,鄭衛(wèi)之曲動而心淫。及其調(diào)和諧合,鳥獸盡感,而況懷五常,含好惡,自然之勢也?
            治道虧缺而鄭音興起,封君世辟,名顯鄰州,爭以相高。自仲尼不能與齊優(yōu)遂容於魯,雖退正樂以誘世,作五章以剌時,猶莫之化。陵遲以至六國,流沔沈佚,遂往不返,卒於喪身滅宗,并國於秦。
            秦二世尤以為娛。丞相李斯進諫曰:“放棄詩書,極意聲色,祖伊所以懼也;輕積細過,恣心長夜,紂所以亡也。”趙高曰:“五帝、三王樂各殊名,示不相襲。上自朝廷,下至人民,得以接歡喜,合殷勤,非此和說不通,解澤不流,亦各一世之化,度時之樂,何必華山之騄耳而后行遠乎?”二世然之。
            高祖過沛詩三侯之章,令小兒歌之。高祖崩,令沛得以四時歌鳷宗廟。孝惠、孝文、孝景無所增更,於樂府習(xí)常肄舊而已。
            至今上即位,作十九章,令侍中李延年次序其聲,拜為協(xié)律都尉。通一經(jīng)之士不能獨知其辭,皆集會五經(jīng)家,相與共講習(xí)讀之,乃能通知其意,多爾雅之文。
            漢家常以正月上辛祠太一甘泉,以昏時夜祠,到明而終。常有流星經(jīng)於祠壇上。使僮男僮女七十人俱歌。春歌青陽,夏歌硃明,秋歌西昚,冬歌玄冥。世多有,故不論。
            又嘗得神馬渥洼水中,復(fù)次以為太一之歌。曲曰:“太一貢兮天馬下,霑赤汗兮沫流赭。騁容與兮跇萬里,今安匹兮龍為友。”後伐大宛得千里馬,馬名蒲梢,次作以為歌。歌詩曰:“天馬來兮從西極,經(jīng)萬里兮歸有德。承靈威兮降外國,涉流沙兮四夷服。”中尉汲黯進曰:“凡王者作樂,上以承祖宗,下以化兆民。今陛下得馬,詩以為歌,協(xié)於宗廟,先帝百姓豈能知其音邪?”上默然不說。丞相公孫弘曰:“黯誹謗圣制,當(dāng)族。”
            凡音之起,由人心生也。人心之動,物使之然也。感於物而動,故形於聲;聲相應(yīng),故生變;變成方,謂之音;比音而樂之,及干戚羽旄,謂之樂也。樂者,音之所由生也,其本在人心感於物也。是故其哀心感者,其聲噍以殺;其樂心感者,其聲啴以緩;其喜心感者,其聲發(fā)以散;其怒心感者,其聲粗以厲;其敬心感者,其聲直以廉;其愛心感者,其聲和以柔。六者非性也,感於物而后動,是故先王慎所以感之。故禮以導(dǎo)其志,樂以和其聲,政以壹其行,刑以防其奸。禮樂刑政,其極一也,所以同民心而出治道也。
            凡音者,生人心者也。情動於中,故形於聲,聲成文謂之音。是故治世之音安以樂,其正和;亂世之音怨以怒,其正乖;亡國之音哀以思,其民困。聲音之道,與正通矣。宮為君,商為臣,角為民,徵為事,羽為物。五者不亂,則無怗懘之音矣。宮亂則荒,其君驕;商亂則搥,其臣壞;角亂則憂,其民怨;徵亂則哀,其事勤;羽亂則危,其財匱。五者皆亂,迭相陵,謂之慢。如此則國之滅亡無日矣。鄭衛(wèi)之音,亂世之音也,比於慢矣。桑間濮上之音,亡國之音也,其政散,其民流,誣上行私而不可止。
            凡音者,生於人心者也;樂者,通於倫理者也。是故知聲而不知音者,禽獸是也;知音而不知樂者,眾庶是也。唯君子為能知樂。是故審聲以知音,審音以知樂,審樂以知政,而治道備矣。是故不知聲者不可與言音,不知音者不可與言樂知樂則幾於禮矣。禮樂皆得,謂之有德。德者得也。是故樂之隆,非極音也;食饗之禮,非極味也。清廟之瑟,硃弦而疏越,一倡而三嘆,有遺音者矣。大饗之禮,尚玄酒而俎腥魚,大羹不和,有遺味者矣。是故先王之制禮樂也,非以極口腹耳目之欲也,將以教民平好惡而反人道之正也。
            人生而靜,天之性也;感於物而動,性之頌也。物至知知,然后好惡形焉。好惡無節(jié)於內(nèi),知誘於外,不能反己,天理滅矣。夫物之感人無窮,而人之好惡無節(jié),則是物至而人化物也。人化物也者,滅天理而窮人欲者也。於是有悖逆詐偽之心,有淫佚作亂之事。是故彊者脅弱,眾者暴寡,知者詐愚,勇者苦怯,疾病不養(yǎng),老幼孤寡不得其所,此大亂之道也。是故先王制禮樂,人為之節(jié):衰麻哭泣,所以節(jié)喪紀(jì)也;鐘鼓干戚,所以和安樂也;婚姻冠笄,所以別男女也;射鄉(xiāng)食饗,所以正交接也。禮節(jié)民心,樂和民聲,政以行之,刑以防之。禮樂刑政四達而不悖,則王道備矣。
            樂者為同,禮者為異。同則相親,異則相敬。樂勝則流,禮勝則離。合情飾貌者,禮樂之事也。禮義立,則貴賤等矣;樂文同,則上下和矣;好惡著,則賢不肖別矣;刑禁暴,爵舉賢,則政均矣。仁以愛之,義以正之,如此則民治行矣。
            樂由中出,禮自外作。樂由中出,故靜;禮自外作,故文。大樂必易,大禮必簡。樂至則無怨,禮至則不爭。揖讓而治天下者,禮樂之謂也。暴民不作,諸侯賓服,兵革不試,五刑不用,百姓無患,天子不怒,如此則樂達矣。合父子之親,明長幼之序,以敬四海之內(nèi)。天子如此,則禮行矣。
            大樂與天地同和,大禮與天地同節(jié)。和,故百物不失;節(jié),故祀天祭地。明則有禮樂,幽則有鬼神,如此則四海之內(nèi)合敬同愛矣。禮者,殊事合敬者也;樂者,異文合愛者也。禮樂之情同,故明王以相沿
          萬石君名奮,其父趙人也,姓石氏。趙亡,徙居溫。高祖東擊項籍,過河內(nèi),時奮年十五,為小吏,侍高祖。高祖與語,愛其恭敬,問曰:“若何有?”對曰:“奮獨有母,不幸失明。家貧。有姊,能鼓琴。”高祖曰:“若能從我乎?”曰:“原盡力。”於是高祖召其姊為美人,以奮為中涓,受書謁,徙其家長安中戚里,以姊為美人故也。其官至孝文時,積功勞至大中大夫。無文學(xué),恭謹(jǐn)無與比。
            文帝時,東陽侯張相如為太子太傅,免。選可為傅者,皆推奮,奮為太子太傅。及孝景即位,以為九卿;迫近,憚之,徙奮為諸侯相。奮長子建,次子甲,次子乙,次子慶,皆以馴行孝謹(jǐn),官皆至二千石。於是景帝曰:“石君及四子皆二千石,人臣尊寵乃集其門。”號奮為萬石君。
            孝景帝季年,萬石君以上大夫祿歸老于家,以歲時為朝臣。過宮門闕,萬石君必下車趨,見路馬必式焉。子孫為小吏,來歸謁,萬石君必朝服見之,不名。子孫有過失,不譙讓,為便坐,對案不食。然后諸子相責(zé),因長老肉袒固謝罪,改之,乃許。子孫勝冠者在側(cè),雖燕居必冠,申申如也。僮仆如也,唯謹(jǐn)。上時賜食於家,必稽首俯伏而食之,如在上前。其執(zhí)喪,哀戚甚悼。子孫遵教,亦如之。萬石君家以孝謹(jǐn)聞乎郡國,雖齊魯諸儒質(zhì)行,皆自以為不及也。
            建元二年,郎中令王臧以文學(xué)獲罪。皇太后以為儒者文多質(zhì)少,今萬石君家不言而躬行,乃以長子建為郎中令,少子慶為內(nèi)史。
            建老白首,萬石君尚無恙。建為郎中令,每五日洗沐歸謁親,入子舍,竊問侍者,取親中稖廁窬,身自浣滌,復(fù)與侍者,不敢令萬石君知,以為常。建為郎中令,事有可言,屏人恣言,極切;至廷見,如不能言者。是以上乃親尊禮之。
            萬石君徙居陵里。內(nèi)史慶醉歸,入外門不下車。萬石君聞之,不食。慶恐,肉袒請罪,不許。舉宗及兄建肉袒,萬石君讓曰:“內(nèi)史貴人,入閭里,里中長老皆走匿,而內(nèi)史坐車中自如,固當(dāng)!”乃謝罷慶。慶及諸子弟入里門,趨至家。
            萬石君以元朔五年中卒。長子郎中令建哭泣哀思,扶杖乃能行。歲馀,建亦死。諸子孫咸孝,然建最甚,甚於萬石君。
            建為郎中令,書奏事,事下,建讀之,曰:“誤書!‘馬’者與尾當(dāng)五,今乃四,不足一。上譴死矣!”甚惶恐。其為謹(jǐn)慎,雖他皆如是。
            萬石君少子慶為太仆,御出,上問車中幾馬,慶以策數(shù)馬畢,舉手曰:“六馬。”慶於諸子中最為簡易矣,然猶如此。為齊相,舉齊國皆慕其家行,不言而齊國大治,為立石相祠。
            元狩元年,上立太子,選群臣可為傅者,慶自沛守為太子太傅,七歲遷為御史大夫。
            元鼎五年秋,丞相有罪,罷。制詔御史:“萬石君先帝尊之,子孫孝,其以御史大夫慶為丞相,封為牧丘侯。”是時漢方南誅兩越,東擊朝鮮,北逐匈奴,西伐大宛,中國多事。天子巡狩海內(nèi),修上古神祠,封禪,興禮樂。公家用少,桑弘羊等致利,王溫舒之屬峻法,兒寬等推文學(xué)至九卿,更進用事,事不關(guān)決於丞相,丞相醇謹(jǐn)而已。在位九歲,無能有所匡言。嘗欲請治上近臣所忠、九卿咸宣罪,不能服,反受其過,贖罪。
            元封四年中,關(guān)東流民二百萬口,無名數(shù)者四十萬,公卿議欲請徙流民於邊以適之。上以為丞相老謹(jǐn),不能與其議,乃賜丞相告歸,而案御史大夫以下議為請者。丞相慚不任職,乃上書曰:“慶幸得待罪丞相,罷駑無以輔治,城郭倉庫空虛,民多流亡,罪當(dāng)伏斧質(zhì),上不忍致法。原歸丞相侯印,乞骸骨歸,避賢者路。”天子曰:“倉廩既空,民貧流亡,而君欲請徙之,搖蕩不安,動危之,而辭位,君欲安歸難乎?”以書讓慶,慶甚慚,遂復(fù)視事。
            慶文深審謹(jǐn),然無他大略,為百姓言。後三歲馀,太初二年中,丞相慶卒,謚為恬侯。慶中子德,慶愛用之,上以德為嗣,代侯。後為太常,坐法當(dāng)死,贖免為庶人。慶方為丞相,諸子孫為吏更至二千石者十三人。及慶死後,稍以罪去,孝謹(jǐn)益衰矣。
            建陵侯衛(wèi)綰者,代大陵人也。綰以戲車為郎,事文帝,功次遷為中郎將,醇謹(jǐn)無他。孝景為太子時,召上左右飲,而綰稱病不行。文帝且崩時,屬孝景曰:“綰長者,善遇之。”及文帝崩,景帝立,歲馀不噍呵綰,綰日以謹(jǐn)力。
            景帝幸上林,詔中郎將參乘,還而問曰:“君知所以得參乘乎?”綰曰:“臣從車士幸得以功次遷為中郎將,不自知也。”上問曰:“吾為太子時召君,君不肯來,何也?”對曰:“死罪,實病!”上賜之劍。綰曰:“先帝賜臣劍凡六,劍不敢奉詔。”上曰:“劍,人之所施易,獨至今乎?”綰曰:“具在。”上使取六劍,劍尚盛,未嘗服也。郎官有譴,常蒙其罪,不與他將爭;有功,常讓他將。上以為廉,忠實無他腸,乃拜綰為河間王太傅。吳楚反,詔綰為將,將河間兵擊吳楚有功,拜為中尉。三歲,以軍功,孝景前六年中封綰為建陵侯。
            其明年,上廢太子,誅栗卿之屬。上以為綰長者,不忍,乃賜綰告歸,而使郅都治捕栗氏。既已,上立膠東王為太子,召綰,拜為太子太傅。久之,遷為御史大夫。五歲,代桃侯舍為丞相,朝奏事如職所奏。然自初官以至丞相,終無可言。天子以為敦厚,可相少主,尊寵之,賞賜甚多。
            為丞相三歲,景帝崩,武帝立。建元年中,丞相以景帝疾時諸官囚多坐不辜者,而君不任職,免之。其後綰卒,子信代。坐酎金失侯。
            塞侯直不疑者,南陽人也。為郎,事文帝。其同舍有告歸,誤持同舍郎金去,已而金主覺,妄意不疑,不疑謝有之,買金償。而告歸者來而歸金,而前郎亡金者大慚,以此稱為長者。文帝稱舉,稍遷至太中大夫。朝廷見,人或毀曰:“不疑狀貌甚美,然獨無柰其善盜嫂何也!”不疑聞,曰:“我乃無兄。”然終不自明也。
            吳楚反時,不疑以二千石將兵擊之。景帝後元年,拜為御史大夫。天子修吳楚時功,乃封不疑為塞侯。武帝建元年中,
          諺曰“力田不如逢年,善仕不如遇合”,固無虛言。非獨女以色媚,而士宦亦有之。
            昔以色幸者多矣。至漢興,高祖至暴抗也,然籍孺以佞幸;孝惠時有閎孺。此兩人非有材能,徒以婉佞貴幸,與上臥起,公卿皆因關(guān)說。故孝惠時郎侍中皆冠鵕璘,貝帶,傅脂粉,化閎、籍之屬也。兩人徙家安陵。
            孝文時中寵臣,士人則鄧通,宦者則趙同、北宮伯子。北宮伯子以愛人長者;而趙同以星氣幸,常為文帝參乘;鄧通無伎能。鄧通,蜀郡南安人也,以濯船為黃頭郎。孝文帝夢欲上天,不能,有一黃頭郎從後推之上天,顧見其衣裻帶後穿。覺而之漸臺,以夢中陰目求推者郎,即見鄧通,其衣後穿,夢中所見也。召問其名姓,姓鄧氏,名通,文帝說焉,尊幸之日異。通亦愿謹(jǐn),不好外交,雖賜洗沐,不欲出。於是文帝賞賜通巨萬以十?dāng)?shù),官至上大夫。文帝時時如鄧通家游戲。然鄧通無他能,不能有所薦士,獨自謹(jǐn)其身以媚上而已。上使善相者相通,曰“當(dāng)貧餓死”。文帝曰:“能富通者在我也。何謂貧乎?”於是賜鄧通蜀嚴(yán)道銅山,得自鑄錢,“鄧氏錢”布天下。其富如此。
            文帝嘗病癰,鄧通常為帝唶吮之。文帝不樂,從容問通曰:“天下誰最愛我者乎?”通曰:“宜莫如太子。”太子入問病,文帝使唶癰,唶癰而色難之。已而聞鄧通常為帝唶吮之,心慚,由此怨通矣。及文帝崩,景帝立,鄧通免,家居。居無何,人有告鄧通盜出徼外鑄錢。下吏驗問,頗有之,遂竟案,盡沒入鄧通家,尚負責(zé)數(shù)巨萬。長公主賜鄧通,吏輒隨沒入之,一簪不得著身。於是長公主乃令假衣食。竟不得名一錢,寄死人家。
            孝景帝時,中無寵臣,然獨郎中令周文仁,仁寵最過庸,乃不甚篤。
            今天子中寵臣,士人則韓王孫嫣,宦者則李延年。嫣者,弓高侯孽孫也。今上為膠東王時,嫣與上學(xué)書相愛。及上為太子,愈益親嫣。嫣善騎射,善佞。上即位,欲事伐匈奴,而嫣先習(xí)胡兵,以故益尊貴,官至上大夫,賞賜擬於鄧通。時嫣常與上臥起。江都王入朝,有詔得從入獵上林中。天子車駕蹕道未行,而先使嫣乘副車,從數(shù)十百騎,騖馳視獸。江都王望見,以為天子,辟從者,伏謁道傍。嫣驅(qū)不見。既過,江都王怒,為皇太后泣曰:“請得歸國入宿衛(wèi),比韓嫣。”太后由此嗛嫣。嫣侍上,出入永巷不禁,以奸聞皇太后。皇太后怒,使使賜嫣死。上為謝,終不能得,嫣遂死。而案道侯韓說,其弟也,亦佞幸。
            李延年,中山人也。父母及身兄弟及女,皆故倡也。延年坐法腐,給事狗中。而平陽公主言延年女弟善舞,上見,心說之,及入永巷,而召貴延年。延年善歌,為變新聲,而上方興天地祠,欲造樂詩歌弦之。延年善承意,弦次初詩。其女弟亦幸,有子男。延年佩二千石印,號協(xié)聲律。與上臥起,甚貴幸,埒如韓嫣也。久之,浸與中人亂,出入驕恣。及其女弟李夫人卒後,愛弛,則禽誅延年昆弟也。
            自是之後,內(nèi)寵嬖臣大底外戚之家,然不足數(shù)也。衛(wèi)青、霍去病亦以外戚貴幸,然頗用材能自進。
            太史公曰:甚哉愛憎之時!彌子瑕之行,足以觀後人佞幸矣。雖百世可知也。
            傳稱令色,詩刺巧言。冠璘入侍,傅粉承恩。黃頭賜蜀,宦者同軒。新聲都尉,挾彈王孫。泣魚竊駕,著自前論。
          與丞相綰俱以過免。
            不疑學(xué)老子言。其所臨,為官如故,唯恐人知其為吏跡也。不好立名稱,稱為長者。不疑卒,子相如代。孫望,坐酎金失侯。
            郎中令周文者,名仁,其先故任城人也。以醫(yī)見。景帝為太子時,拜為舍人,積功稍遷,孝文帝時至太中大夫。景帝初即位,拜仁為郎中令。
            仁為人陰重不泄,常衣敝補衣溺袴,期為不絜清,以是得幸。景帝入臥內(nèi),於後宮祕戲,仁常在旁。至景帝崩,仁尚為郎中令,終無所言。上時問人,仁曰:“上自察之。”然亦無所毀。以此景帝再自幸其家。家徙陽陵。上所賜甚多,然常讓,不敢受也。諸侯群臣賂遺,終無所受。
            武帝立,以為先帝臣,重之。仁乃病免,以二千石祿歸老,子孫咸至大官矣。
            御史大夫張叔者,名歐,安丘侯說之庶子也。孝文時以治刑名言事太子。然歐雖治刑名家,其人長者。景帝時尊重,常為九卿。至武帝元朔四年,韓安國免,詔拜歐為御史大夫。自歐為吏,未嘗言案人,專以誠長者處官。官屬以為長者,亦不敢大欺。上具獄事,有可卻,卻之;不可者,不得已,為涕泣面對而封之。其愛人如此。
            老病篤,請免。於是天子亦策罷,以上大夫祿歸老于家。家於陽陵。子孫咸至大官矣。
            太史公曰:仲尼有言曰“君子欲訥於言而敏於行”,其萬石、建陵、張叔之謂邪?是以其教不肅而成,不嚴(yán)而治。塞侯微巧,而周文處讇,君子譏之,為其近於佞也。然斯可謂篤行君子矣!
            萬石孝謹(jǐn),自家形國。郎中數(shù)馬,內(nèi)史匍匐。綰無他腸,塞有陰德。刑名張歐,垂涕恤獄。敏行訥言,俱嗣芳躅。
          也。故事與時并,名與功偕。故鐘鼓管磬羽籥干戚,樂之器也;詘信俯仰級兆舒疾,樂之文也。簠簋俎豆制度文章,禮之器也;升降上下周旋裼襲,禮之文也。故知禮樂之情者能作,識禮樂之文者能術(shù)。作者之謂圣,術(shù)者之謂明。明圣者,術(shù)作之謂也。
            樂者,天地之和也;禮者,天地之序也。和,故百物皆化;序,故群物皆別。樂由天作,禮以地制。過制則亂,過作則暴。明於天地,然後能興禮樂也。論倫無患,樂之情也;欣喜驩愛,樂之也。中正無邪,禮之質(zhì)也;莊敬恭順,禮之制也。若夫禮樂之施於金石,越於聲音,用於宗廟社稷,事于山川鬼神,則此所以與民同也。
            王者功成作樂,治定制禮。其功大者其樂備,其治辨者其禮具。干戚之舞,非備樂也;亨孰而祀,非達禮也。五帝殊時,不相沿樂;三王異世,不相襲禮。樂極則憂,禮粗則偏矣。及夫敦樂而無憂,禮備而不偏者,其唯大圣乎?天高地下,萬物散殊,而禮制行也;流而不息,合同而化,而樂興也。春作夏長,仁也;秋斂冬藏,義也。仁近於樂,義近於禮。樂者敦和,率神而從天;禮者辨宜,居鬼而從地。故圣人作樂以應(yīng)天,作禮以配地。禮樂明備,天地官矣。
            天尊地卑,君臣定矣。高卑已陳,貴賤位矣。動靜有常,小大殊矣。方以類聚,物以群分,則性命不同矣。在天成象,在地成形,如此則禮者天地之別也。地氣上隮,天氣下降,陰陽相摩,天地相蕩,鼓之以雷霆,奮之以風(fēng)雨,動之以四時,暖之以日月,而百化興焉,如此則樂者天地之和也。
            化不時則不生,男女無別則亂登,此天地之情也。及夫禮樂之極乎天而蟠乎地,行乎陰陽而通乎鬼神,窮高極遠而測深厚,樂著太始而禮居成物。著不息者天也,著不動者地也。一動一靜者,天地之間也。故圣人曰“禮云樂云”。
          且降,乃使人告急天子。天子問太尉田蚡,蚡對曰:“越人相攻擊,固其常,又?jǐn)?shù)反覆,不足以煩中國往救也。自秦時棄弗屬。”於是中大夫莊助詰蚡曰:“特患力弗能救,德弗能覆;誠能,何故棄之?且秦舉咸陽而棄之,何乃越也!今小國以窮困來告急天子,天子弗振,彼當(dāng)安所告愬?又何以子萬國乎?”上曰:“太尉未足與計。吾初即位,不欲出虎符發(fā)兵郡國。”乃遣莊助以節(jié)發(fā)兵會稽。會稽太守欲距不為發(fā)兵,助乃斬一司馬,諭意指,遂發(fā)兵浮海救東甌。未至,閩越引兵而去。東甌請舉國徙中國,乃悉舉眾來,處江淮之間。
            至建元六年,閩越擊南越。南越守天子約,不敢擅發(fā)兵擊而以聞。上遣大行王恢出豫章,大農(nóng)韓安國出會稽,皆為將軍。兵未逾嶺,閩越王郢發(fā)兵距險。其弟馀善乃與相、宗族謀曰:“王以擅發(fā)兵擊南越,不請,故天子兵來誅。今漢兵眾彊,今即幸勝之,後來益多,終滅國而止。今殺王以謝天子。天子聽,罷兵,固一國完;不聽,乃力戰(zhàn);不勝,即亡入海。”皆曰“善”。即鏦殺王,使使奉其頭致大行。大行曰:“所為來者誅王。今王頭至,謝罪,不戰(zhàn)而耘,利莫大焉。”乃以便宜案兵告大農(nóng)軍,而使使奉王頭馳報天子。詔罷兩將兵,曰:“郢等首惡,獨無諸孫繇君丑不與謀焉。”乃使郎中將立丑為越繇王,奉閩越先祭祀。
            馀善已殺郢,威行於國,國民多屬,竊自立為王。繇王不能矯其眾持正。天子聞之,為馀善不足復(fù)興師,曰:“馀善數(shù)與郢謀亂,而後首誅郢,師得不勞。”因立馀善為東越王,與繇王并處。
            至元鼎五年,南越反,東越王馀善上書,請以卒八千人從樓船將軍擊呂嘉等。兵至揭揚,以海風(fēng)波為解,不行,持兩端,陰使南越。及漢破番禺,不至。是時樓船將軍楊仆使使上書,原便引兵擊東越。上曰士卒勞倦,不許,罷兵,1、伯庸。《離騷》:“朕皇考曰伯庸”。譬如作家馬伯庸……
          2、正則、靈均。《離騷》:“名余曰正則兮,字余曰靈均”。正則:公正而有法則。靈均:靈善而均調(diào)。屈原名平,字原,正則是對“平”字進行的解釋,靈均是對“原”字進行的解釋。
          3、修能。《離騷》:“又重之以修能”。修能:即美好的外表儀形。一釋為很強的才干和能力。
          4、騏、驥。《離騷》:“乘騏驥以馳騁兮”。騏驥:駿馬。
          5、峻茂。《離騷》:“冀枝葉之峻茂兮”。風(fēng)信子(學(xué)名:Hyacinthus orientalis L.):是多年草本球根類植物,鱗莖卵形,有膜質(zhì)外皮,皮膜顏色與花色成正相關(guān),未開花時形如大蒜,原產(chǎn)地中海沿岸及小亞細亞一帶,是研究發(fā)現(xiàn)的會開花的植物中最香的一個品種。喜陽光充足和比較濕潤的生長環(huán)境,要求排水良好和肥沃的沙壤土等。全世界風(fēng)信子的園藝品種約有
          單閼之歲兮,四月孟夏,庚子日施兮,服集予舍,止于坐隅,貌甚間暇。異物來集兮,私怪其故,發(fā)書占之兮,筴言其度。曰“野鳥入處兮,主人將去”。請問于服兮:“予去何之?吉乎告我,兇言其菑。淹數(shù)之度兮,語予其期。”服乃嘆息,舉首奮翼,口不能言,請對以意。
            萬物變化兮,固無休息。斡流而遷兮,或推而還。形氣轉(zhuǎn)續(xù)兮,變化而嬗。沕穆無窮兮,胡可勝言!禍兮福所倚,福兮禍所伏;憂喜聚門兮,吉兇同域。彼吳彊大兮,夫差以敗;越棲會稽兮,句踐霸世。斯游遂成兮,卒被五刑;傅說胥靡兮,乃相武丁。夫禍之與福兮,何異糾纆。命不可說兮,孰知其極?水激則旱兮,矢激則遠。萬物回薄兮,振蕩相轉(zhuǎn)。云蒸雨降兮,錯繆相紛。大專槃物兮,坱軋無垠。天不可與慮兮,道不可與謀。遲數(shù)有命兮,惡識其時?
            且夫天地為爐兮,造化為工;陰陽為炭兮,萬物為銅。合散消息兮,安有常則;千變?nèi)f化兮,未始有極。忽然為人兮,何足控摶;化為異物兮,又何足患!小知自私兮,賤彼貴我;通人大觀兮,物無不可。貪夫徇財兮,烈士徇名;夸者死權(quán)兮,品庶馮生。述迫之徒兮,或趨西東;大人不曲兮,億變齊同。拘士系俗兮,羖如囚拘;至人遺物兮,獨與道俱。眾人或或兮,好惡積意;真人淡漠兮,獨與道息。釋知遺形兮,超然自喪;寥廓忽荒兮,與道翱翔。乘流則逝兮,得坻則止;縱軀委命兮,不私與己。其生若浮兮,其死若休;澹乎若深淵之靜,氾乎若不系之舟。不以生故自寶兮,養(yǎng)空而浮;德人無累兮,知命不憂。細故粦兮,何足以疑!
            後歲馀,賈生徵見。孝文帝方受釐,坐宣室。上因感鬼神事,而問鬼神之本。賈生因具道所以然之狀。至夜半,文帝前席。既罷,曰:“吾久不見賈生,自以為過之,今不及也。”居頃之,拜賈生為梁懷王太傅。梁懷王,文帝之少子,愛,而好書,故令賈生傅之。
            文帝復(fù)封淮南厲王子四人皆為列侯。賈生諫,以為患之興自此起矣。賈生數(shù)上疏,言諸侯或連數(shù)郡,非古之制,可稍削之。文帝不聽。
            居數(shù)年,懷王騎,墮馬而死,無後。賈生自傷為傅無狀,哭泣歲馀,亦死。賈生之死時年三十三矣。及孝文崩,孝武皇帝立,舉賈生之孫二人至郡守,而賈嘉最好學(xué),世其家,與余通書。至孝昭時,列為九卿。
            太史公曰:余讀離騷、天問、招魂、哀郢,悲其志。適長沙,觀屈原所自沈淵,未嘗不垂涕,想見其為人。及見賈生吊之,又怪屈原以彼其材,游諸侯,何國不容,而自令若是。讀服烏賦,同死生,輕去就,又爽然自失矣。
            屈平行正,以事懷王。瑾瑜比潔,日月爭光。忠而見放,讒者益章。賦騷見志,懷沙自傷。百年之後,空悲吊湘。
          2000種以上,主要分為“荷蘭種”和“羅馬種”兩類。前者屬正宗品種,絕大多數(shù)每株只長1支花葶,體勢粗壯,花朵較大。而后者則多是變異的雜種,每株能著生二三支花葶,體勢幼弱,花朵較細,多數(shù)消費者喜購荷蘭風(fēng)信子。峻茂:猶繁茂。
          6、信芳。《離騷》:“茍余情其信芳”。如京劇表演藝術(shù)家周信芳。
          7、圣哲、茂行。《離騷》:“夫維圣哲以茂行兮”。圣哲:具有超人的道德才智的人。茂行:德行充盛。
          8、曼路。《離騷》:“路曼曼其修遠兮,吾將上下而求索”。
          9、望舒。《離騷》:“前望舒使先驅(qū)兮”。望舒:神話中為月駕車的神。如寫《雨巷》的詩人戴望舒。
          10、陸離。《離騷》:“斑陸離其上下”。陸離:光輝燦爛的樣子。我們對于該詞的認知多來自于成語“光怪陸離”,意指色彩繁雜、變化多端。
          11、珵美。《離騷》:“覽察草木其猶未得兮,豈珵美之能當(dāng)”。珵:美玉。
          12、云旗。《離騷》:“駕八龍之婉婉兮,載云旗之委蛇”。云旗:繪有云霓的旗幟。
          ===================九===歌===的===分===界===線=================== 
          1、辰良。《九歌·東皇太一》:“吉日兮辰良”。“辰良”系“良辰”之倒文,指好時光。易被讀作“乘涼”。
          2、玉鏘、璆鳴。《九歌·東皇太一》:“撫長劍兮玉珥,璆鏘鳴兮琳瑯”。詩曰:佩玉鏘鏘。璆(音求):美玉。
          3、安歌。《九歌·東皇太一》:“疏緩節(jié)兮安歌”。
          南越王尉佗者,真定人也,姓趙氏。秦時已并天下,略定楊越,置桂林、南海、象郡,以謫徙民,與越雜處十三歲。佗,秦時用為南海龍川令。至二世時,南海尉任囂病且死,召龍川令趙佗語曰:“聞陳勝等作亂,秦為無道,天下苦之,項羽、劉季、陳勝、吳廣等州郡各共興軍聚眾,虎爭天下,中國擾亂,未知所安,豪杰畔秦相立。南海僻遠,吾恐盜兵侵地至此,吾欲興兵絕新道,自備,待諸侯變,會病甚。且番禺負山險,阻南海,東西數(shù)千里,頗有中國人相輔,此亦一州之主也,可以立國。郡中長吏無足與言者,故召公告之。”即被佗書,行南海尉事。囂死,佗即移檄告橫浦、陽山、湟谿關(guān)曰:“盜兵且至,急絕道聚兵自守!”因稍以法誅秦所置長吏,以其黨為假守。秦已破滅,佗即擊并桂林、象郡,自立為南越武王。高帝已定天下,為中國勞苦,故釋佗弗誅。漢十一年,遣陸賈因立佗為南越王,與剖符通使,和集百越,毋為南邊患害,與長沙接境。
            高后時,有司請禁南越關(guān)市鐵器。佗曰:“高帝立我,通使物,今高后聽讒臣,別異蠻夷,隔絕器物,此必長沙王計也,欲倚中國,擊滅南越而并王之,自為功也。”於是佗乃自尊號為南越武帝,發(fā)兵攻長沙邊邑,敗數(shù)縣而去焉。高后遣將軍隆慮侯灶往擊之。會暑濕,士卒大疫,兵不能逾嶺。歲馀,高后崩,即罷兵。佗因此以兵威邊,財物賂遺閩越、西甌、駱,役屬焉,東西萬馀里。乃乘黃屋左纛,稱制,與中國侔。
            及孝文帝元年,初鎮(zhèn)撫天下,使告諸侯四夷從代來即位意,喻盛德焉。乃為佗親冢在真定,置守邑,歲時奉祀。召其從昆弟,尊官厚賜寵之。詔丞相陳平等舉可使南越者,平言好畤陸賈,先帝時習(xí)使南越。乃召賈以為太中大夫,往使。因讓佗自立為帝,曾無一介之使報者。陸賈至南越,王甚恐,為書謝,稱曰:“蠻夷大長老夫臣佗,前日高后隔異南越,竊疑長沙王讒臣,又遙聞高后盡誅佗宗族,掘燒先人冢,以故自棄,犯長沙邊境。且南方卑濕,蠻夷中間,其東閩越千人眾號稱王,其西甌駱裸國亦稱王。老臣妄竊帝號,聊以自娛,豈敢以聞天王哉!”乃頓首謝,原長為籓臣,奉貢職。於是乃下令國中曰:“吾聞兩雄不俱立,兩賢不并世。皇帝,賢天子也。自今以後,去帝制黃屋左纛。”陸賈還報,孝文帝大說。遂至孝景時,稱臣,使人朝請。然南越其居國竊如故號名,其使天子,稱王朝命如諸侯。至建元四年卒。
            佗孫胡為南越王。此時閩越王郢興兵擊南越邊邑,胡使人上書曰:“兩越俱為籓臣,毋得擅興兵相攻擊。今閩越興兵侵臣,臣不敢興兵,唯天子詔之。”於是天子多南越義,守職約,為興師,遣兩將軍往討閩越。兵未逾嶺,閩越王弟馀善殺郢以降,於是罷兵。
            天子使莊助往諭意南越王,胡頓首曰:“天子乃為臣興兵討閩越,死無以報德!”遣太子嬰齊入宿衛(wèi)。謂助曰:“國新被寇,使者行矣。胡方日夜裝入見天子。”助去後,其大臣諫胡曰:“漢興兵誅郢,亦行以驚動南越。且先王昔言,事天子期無失禮,要之不可以說好語入見。入見則不得復(fù)歸,亡國之勢也。”於是胡稱病,竟不入見。後十馀歲,胡實病甚,太子嬰齊請歸。胡薨,謚為文王。
            嬰齊代立,即藏其先武帝璽。嬰齊其入宿衛(wèi)在長安時,取邯鄲樛氏女,生子興。及即位,上書請立樛氏女為后,興為嗣。漢數(shù)使使者風(fēng)諭嬰齊,嬰齊尚樂擅殺生自恣,懼入見要用漢法,比內(nèi)諸侯,固稱病,遂不入見。遣子次公入宿衛(wèi)。嬰齊薨,謚為明王。
            太子興代立,其母為太后。太后自未為嬰齊姬時,嘗與霸陵人安國少季通。及嬰齊薨後,元鼎四年,漢使安國少季往諭王、王太后以入朝,比內(nèi)諸侯;令辯士諫大夫終軍等宣其辭,勇士魏臣等輔其缺,衛(wèi)尉路博德將兵屯桂陽,待使者。王年少,太后中國人也,嘗與安國少季通,其使復(fù)私焉。國人頗知之,多不附太后。太后恐亂起,亦欲倚漢威,數(shù)勸王及群臣求內(nèi)屬。即因使者上書,請比內(nèi)諸侯,三歲一朝,除邊關(guān)。於是天子許之,賜其丞相呂嘉銀印,及內(nèi)史、中尉、太傅印,馀得自置。除其故黥劓刑,用漢法,比內(nèi)諸侯。使者皆留填撫之。王、王太后飭治行裝重赍,為入朝具。
          安歌:神態(tài)安詳?shù)爻琛S幸痪涮圃娬f:“安歌送好音”。
          4、浩倡。《九歌·東皇太一》:“陳竽瑟兮浩倡”。“浩倡”又作“浩唱”,和上句“安歌”相對應(yīng)。取名時可改為“浩昌”。下文《九歌·少司命》中還有“浩歌”。令諸校屯豫章梅領(lǐng)待命。


          作者:倚天碼農(nóng)

          來源:blog.csdn.net/weixin_38748858/article/details/101062272

          在微服務(wù)架構(gòu)中,需要調(diào)用很多服務(wù)才能完成一項功能。服務(wù)之間如何互相調(diào)用就變成微服務(wù)架構(gòu)中的一個關(guān)鍵問題。

          服務(wù)調(diào)用有兩種方式,一種是RPC方式,另一種是事件驅(qū)動(Event-driven)方式,也就是發(fā)消息方式。

          消息方式是松耦合方式,比緊耦合的RPC方式要優(yōu)越,但RPC方式如果用在適合的場景也有它的一席之地。

          我們總在談耦合,那么耦合到底意味著什么呢?
          耦合的種類:

          時間耦合:客戶端和服務(wù)端必須同時上線才能工作。發(fā)消息時,接受消息隊列必須運行,但后臺處理程序暫時不工作也不影響。

          容量耦合:客戶端和服務(wù)端的處理容量必須匹配。發(fā)消息時,如果后臺處理能力不足也不要緊,消息隊列會起到緩沖的作用。

          接口耦合:RPC調(diào)用有函數(shù)標(biāo)簽,而消息隊列只是一個消息。例如買了商品之后要調(diào)用發(fā)貨服務(wù),如果是發(fā)消息,那么就只需發(fā)送一個商品被買消息。

          發(fā)送方式耦合:RPC是點對點方式,需要知道對方是誰,它的好處是能夠傳回返回值。消息既可以點對點,也可以用廣播的方式,這樣減少了耦合,但也使返回值比較困難。

          下面我們來逐一分析這些耦合的影響。第一,時間耦合,對于多數(shù)應(yīng)用來講,你希望能馬上得到回答,因此即使使用消息隊列,后臺也需要一直工作。

          第二,容量耦合,如果你對回復(fù)有時間要求,那么消息隊列的緩沖功能作用不大,因為你希望及時響應(yīng)。

          真正需要的是自動伸縮(Auto-scaling),它能自動調(diào)整服務(wù)端處理能力去匹配請求數(shù)量。第三和第四,接口耦合和發(fā)送方式耦合,這兩個確實是RPC方式的軟肋。


          事件驅(qū)動(Event-Driven)方式


          Martin Fowler把事件驅(qū)動分成四種方式(What do you mean by “Event-Driven”),簡化之后本質(zhì)上只有兩種方式。一種就是我們熟悉的的事件通知(Event Notification),另一種是事件溯源(Event Sourcing)。

          事件通知就是微服務(wù)之間不直接調(diào)用,而是通過發(fā)消息來進行合作。事件溯源有點像記賬,它把所有的事件都記錄下來,作為永久存儲層,再在它的基礎(chǔ)之上構(gòu)建應(yīng)用程序。

          實際上從應(yīng)用的角度來講,它們并不應(yīng)該分屬一類,它們的用途完全不同。事件通知是微服務(wù)的調(diào)用(或集成)方式,應(yīng)該和RPC分在一起。事件溯源是一種存儲數(shù)據(jù)的方式,應(yīng)該和數(shù)據(jù)庫分在一起。


          事件通知(Event Notification)方式


          讓我們用具體的例子來看一下。在下面的例子中,有三個微服務(wù),“Order Service”, “Customer Service” 和“Product Service”。

          先說讀數(shù)據(jù),假設(shè)要創(chuàng)建一個“Order”,在這個過程中需要讀取“Customer”的數(shù)據(jù)和“Product”數(shù)據(jù)。

          如果用事件通知的方式就只能在“Order Service”本地也創(chuàng)建只讀“Customer”和“Product”表,并把數(shù)據(jù)用消息的方式同步過來。

          再說寫數(shù)據(jù),如果在創(chuàng)建一個“Order”時需要創(chuàng)建一個新的“Customer”或要修改“Customer”的信息,那么可以在界面上跳轉(zhuǎn)到用戶創(chuàng)建頁面,然后在“Customer Service”創(chuàng)建用戶之后再發(fā)”用戶已創(chuàng)建“的消息,“Order Service”接到消息,更新本地“Customer”表。

          這并不是一個很好的使用事件驅(qū)動的例子,因為事件驅(qū)動的優(yōu)點就是不同的程序之間可以獨立運行,沒有綁定關(guān)系。但現(xiàn)在“Order Service”需要等待“Customer Service”創(chuàng)建完了之后才能繼續(xù)運行,來完成整個創(chuàng)建“Order”的工作。主要是因為“Order”和“Customer”本身從邏輯上來講就是緊耦合關(guān)系,沒有“Customer”你是不能創(chuàng)建“Order”的。

          在這種緊耦合的情況下,也可以使用RPC。你可以建立一個更高層級的管理程序來管理這些微服務(wù)之間的調(diào)用,這樣“Order Service”就不必直接調(diào)用“Customer Service”了。

          當(dāng)然它從本質(zhì)上來講并沒有解除耦合,只是把耦合轉(zhuǎn)移到了上一層,但至少現(xiàn)在“order Service”和“Customer Service”可以互不影響了。之所以不能根除這種緊耦合關(guān)系是因為它們在業(yè)務(wù)上是緊耦合的。

          再舉一個購物的例子。用戶選好商品之后進行“Checkout”,生成“Order”,然后需要“payment”,再從“Inventory”取貨,最后由“Shipment”發(fā)貨,它們每一個都是微服務(wù)。這個例子用RPC方式和事件通知方式都可以完成。

          當(dāng)用RPC方式時,由“Order”服務(wù)調(diào)用其他幾個服務(wù)來完成整個功能。用事件通知方式時,“Checkout”服務(wù)完成之后發(fā)送“Order Placed”消息,“Payment”服務(wù)收到消息,接收用戶付款,發(fā)送“Payment received”消息。

          “Inventory”服務(wù)收到消息,從倉庫里取貨,并發(fā)送“Goods fetched”消息。“Shipment”服務(wù)得到消息,發(fā)送貨物,并發(fā)送“Goods shipped”消息。

          對這個例子來講,使用事件驅(qū)動是一個不錯的選擇,因為每個服務(wù)發(fā)消息之后它不需要任何反饋,這個消息由下一個模塊接收來完成下一步動作,時間上的要求也比上一個要寬松。用事件驅(qū)動的好處是降低了耦合度,壞處是你現(xiàn)在不能在程序里找到整個購物過程的步驟。

          如果一個業(yè)務(wù)邏輯有它自己相對固定的流程和步驟,那么使用RPC或業(yè)務(wù)流程管理(BPM)能夠更方便地管理這些流程。在這種情況下選哪種方案呢?在我看來好處和壞處是大致相當(dāng)?shù)摹募夹g(shù)上來講要選事件驅(qū)動,從業(yè)務(wù)上來講要選RPC。不過現(xiàn)在越來越多的人采用事件通知作為微服務(wù)的集成方式,它似乎已經(jīng)成了微服務(wù)之間的標(biāo)椎調(diào)用方式。


          事件溯源(Event Sourcing)

          這是一種具有顛覆性質(zhì)的的設(shè)計,它把系統(tǒng)中所有的數(shù)據(jù)都以事件(Event)的方式記錄下來,它的持久存儲叫Event Store, 一般是建立在數(shù)據(jù)庫或消息隊列(例如Kafka)基礎(chǔ)之上,并提供了對事件進行操作的接口,例如事件的讀寫和查詢。事件溯源是由領(lǐng)域驅(qū)動設(shè)計(Domain-Driven Design)提出來的。

          DDD中有一個很重要的概念,有界上下文(Bounded Context),可以用有界上下文來劃分微服務(wù),每個有界上下文都可以是一個微服務(wù)。下面是有界上下文的示例。下圖中有兩個服務(wù)“Sales”和“Support”。

          有界上下文的一個關(guān)鍵是如何處理共享成員, 在圖中是“Customer”和“Product”。在不同的有界上下文中,共享成員的含義、用法以及他們的對象屬性都會有些不同,DDD建議這些共享成員在各自的有界上下文中都分別建自己的類(包括數(shù)據(jù)庫表),而不是共享。可以通過數(shù)據(jù)同步的手段來保持?jǐn)?shù)據(jù)的一致性。下面還會詳細講解。

          事件溯源是微服務(wù)的一種存儲方式,它是微服務(wù)的內(nèi)部實現(xiàn)細節(jié)。因此你可以決定哪些微服務(wù)采用事件溯源方式,哪些不采用,而不必所有的服務(wù)都變成事件溯源的。通常整個應(yīng)用程序只有一個Event Store, 不同的微服務(wù)都通過向Event Store發(fā)送和接受消息而互相通信。

          在公眾號互聯(lián)網(wǎng)架構(gòu)師后臺回復(fù)“2T”,獲取一份驚喜禮包。

          Event Store內(nèi)部可以分成不同的stream(相當(dāng)于消息隊列中的Topic), 供不同的微服務(wù)中的領(lǐng)域?qū)嶓w(Domain Entity)使用。

          事件溯源的一個短板是數(shù)據(jù)查詢,它有兩種方式來解決。第一種是直接對stream進行查詢,這只適合stream比較小并且查詢比較簡單的情況。

          查詢復(fù)雜的話,就要采用第二種方式,那就是建立一個只讀數(shù)據(jù)庫,把需要的數(shù)據(jù)放在庫中進行查詢。數(shù)據(jù)庫中的數(shù)據(jù)通過監(jiān)聽Event Store中相關(guān)的事件來更新。

          數(shù)據(jù)庫存儲方式只能保存當(dāng)前狀態(tài),而事件溯源則存儲了所有的歷史狀態(tài),因而能根據(jù)需要回放到歷史上任何一點的狀態(tài),具有很大優(yōu)勢。但它也不是一點問題都沒有。

          第一,它的程序比較復(fù)雜,因為事件是一等公民,你必須把業(yè)務(wù)邏輯按照事件的方式整理出來,然后用事件來驅(qū)動程序。第二,如果你要想修改事件或事件的格式就比較麻煩,因為舊的事件已經(jīng)存儲在Event Store里了(事件就像日志,是只讀的),沒有辦法再改。

          由于事件溯源和事件通知表面上看起來很像,不少人都搞不清楚它們的區(qū)別。事件通知只是微服務(wù)的集成方式,程序內(nèi)部是不使用事件溯源的,內(nèi)部實現(xiàn)仍然是傳統(tǒng)的數(shù)據(jù)庫方式。

          只有當(dāng)要與其他微服務(wù)集成時才會發(fā)消息。而在事件溯源中,事件是一等公民,可以不要數(shù)據(jù)庫,全部數(shù)據(jù)都是按照事件的方式存儲的。

          雖然事件溯源的踐行者有不同的意見,但有不少人都認為事件溯源不是微服務(wù)的集成方式,而是微服務(wù)的一種內(nèi)部實現(xiàn)方式。因此,在一個系統(tǒng)中,可以某些微服務(wù)用事件溯源,另外一些微服務(wù)用數(shù)據(jù)庫。

          當(dāng)你要集成這些微服務(wù)時,你可以用事件通知的方式。注意現(xiàn)在有兩種不同的事件需要區(qū)分開,一種是微服務(wù)的內(nèi)部事件,是顆粒度比較細的,這種事件只發(fā)送到這個微服務(wù)的stream中,只被事件溯源使用。

          另一種是其他微服務(wù)也關(guān)心的,是顆粒度比較粗的,這種事件會放到另外一個或幾個stream中,被多個微服務(wù)使用,是用來做服務(wù)之間集成的。這樣做的好處是限制了事件的作用范圍,減少了不相關(guān)事件對程序的干擾。詳見"Domain Events vs. Event Sourcing"。

          事件溯源出現(xiàn)已經(jīng)很長時間了,雖然熱度一直在上升(尤其是這兩年),但總的來說非常緩慢,談?wù)摰娜瞬簧伲a(chǎn)環(huán)境使用的不多。究其原因就是應(yīng)為它對現(xiàn)在的體系結(jié)構(gòu)顛覆太大,需要更改數(shù)據(jù)存儲結(jié)構(gòu)和程序的工作方式,還是有一定風(fēng)險的。

          另外,微服務(wù)已經(jīng)形成了一整套體系,從程序部署,服務(wù)發(fā)現(xiàn)與注冊,到監(jiān)控,服務(wù)韌性(Service Resilience),它們基本上都是針對RPC的,雖然也支持消息,但成熟度就差多了,因此有不少工作還是要自己來做。

          有意思的是Kafka一直在推動它作為事件驅(qū)動的工具,也取得了很大的成功。但它卻沒有得到事件溯源圈內(nèi)的認可。

          多數(shù)事件溯源都使用一個叫evenstore的開源Event Store,或是基于某個數(shù)據(jù)庫的Event Store,只有比較少的人用Kafka做Event Store。 

          但如果用Kafka實現(xiàn)事件通知就一點問題都沒有。總的來說,對大多數(shù)公司來講事件溯源是有一定挑戰(zhàn)的,應(yīng)用時需要找到合適的場景。如果你要嘗試的話,可以先拿一個微服務(wù)試水。

          雖然現(xiàn)在事件驅(qū)動還有些生澀,但從長遠來講,還是很看好它的。像其他全新的技術(shù)一樣,事件溯源需要大規(guī)模的適用場景來推動。例如容器技術(shù)就是因為微服務(wù)的流行和推動,才走向主流。

          事件溯源以前的適用場景只限于記賬和源代碼庫,局限性較大。區(qū)塊鏈可能會成為它的下一個機遇,因為它用的也是事件溯源技術(shù)。

          另外AI今后會滲入到具體程序中,使程序具有學(xué)習(xí)功能。而RPC模式注定沒有自適應(yīng)功能。事件驅(qū)動本身就具有對事件進行反應(yīng)的能力,這是自我學(xué)習(xí)的基礎(chǔ)。因此,這項技術(shù)長遠來講定會大放異彩,但短期內(nèi)(3-5年)大概不會成為主流。
          RPC方式

          RPC的方式就是遠程函數(shù)調(diào)用,像RESTFul,gRPC, DUBBO 都是這種方式。它一般是同步的,可以馬上得到結(jié)果。在實際中,大多數(shù)應(yīng)用都要求立刻得到結(jié)果,這時同步方式更有優(yōu)勢,代碼也更簡單。


          服務(wù)網(wǎng)關(guān)(API Gateway)

          熟悉微服務(wù)的人可能都知道服務(wù)網(wǎng)關(guān)(API Gateway)。當(dāng)UI需要調(diào)用很多微服務(wù)時,它需要了解每個服務(wù)的接口,這個工作量很大。

          于是就用服務(wù)網(wǎng)關(guān)創(chuàng)建了一個Facade,把幾個微服務(wù)封裝起來,這樣UI就只調(diào)用服務(wù)網(wǎng)關(guān)就可以了,不需要去對付每一個微服務(wù)。下面是API Gateway示例圖:

          服務(wù)網(wǎng)關(guān)(API Gateway)不是為了解決微服務(wù)之間調(diào)用的緊耦合問題,它主要是為了簡化客戶端的工作。其實它還可以用來降低函數(shù)之間的耦合度。 

          有了API Gateway之后,一旦服務(wù)接口修改,你可能只需要修改API Gateway, 而不必修改每個調(diào)用這個函數(shù)的客戶端,這樣就減少了程序的耦合性。


          服務(wù)調(diào)用

          可以借鑒API Gateway的思路來減少RPC調(diào)用的耦合度,例如把多個微服務(wù)組織起來形成一個完整功能的服務(wù)組合,并對外提供統(tǒng)一的服務(wù)接口。這種想法跟上面的API Gateway有些相似,都是把服務(wù)集中起來提供粗顆粒(Coarse Granular)服務(wù),而不是細顆粒的服務(wù)(Fine Granular)。

          但這樣建立的服務(wù)組合可能只適合一個程序使用,沒有多少共享價值。因此如果有合適的場景就采用,否側(cè)也不必強求。雖然我們不能降低RPC服務(wù)之間的耦合度,卻可以減少這種緊耦合帶來的影響。


          降低緊耦合的影響

          什么是緊耦合的主要問題呢?就是客戶端和服務(wù)端的升級不同步。服務(wù)端總是先升級,客戶端可能有很多,如果要求它們同時升級是不現(xiàn)實的。它們有各自的部署時間表,一般都會選擇在下一次部署時順帶升級。

          一般有兩個辦法可以解決這個問題:

          同時支持多個版本:這個工作量比較大,因此大多數(shù)公司都不會采用這種方式。

          服務(wù)端向后兼容:這是更通用的方式。例如你要加一個新功能或有些客戶要求給原來的函數(shù)增加一個新的參數(shù),但別的客戶不需要這個參數(shù)。這時你只好新建一個函數(shù),跟原來的功能差不多,只是多了一個參數(shù)。這樣新舊客戶的需求都能滿足。它的好處是向后兼容(當(dāng)然這取決于你使用的協(xié)議)。

          它的壞處是當(dāng)以后新的客戶來了,看到兩個差不多的函數(shù)就糊涂了,不知道該用那個。而且時間越長越嚴(yán)重,你的服務(wù)端可能功能增加的不多,但相似的函數(shù)卻越來越多,無法選擇。

          它的解決辦法就是使用一個支持向后兼容的RPC協(xié)議,現(xiàn)在最好的就是Protobuf gRPC,尤其是在向后兼容上。

          它給每個服務(wù)定義了一個接口,這個接口是與編程語言無關(guān)的中性接口,然后你可以用工具生成各個語言的實現(xiàn)代碼,供不同語言使用。函數(shù)定義的變量都有編號,變量可以是可選類型的,這樣就比較好地解決了函數(shù)兼容的問題。

          就用上面的例子,當(dāng)你要增加一個可選參數(shù)時,你就定義一個新的可選變量。由于它是可選的,原來的客戶端不需要提供這個參數(shù),因此不需要修改程序。

          而新的客戶端可以提供這個參數(shù)。你只要在服務(wù)端能同時處理這兩種情況就行了。這樣服務(wù)端并沒有增加新的函數(shù),但用戶的新需求滿足了,而且還是向后兼容的。


          微服務(wù)的數(shù)量有沒有上限?

          總的來說微服務(wù)的數(shù)量不要太多,不然會有比較重的運維負擔(dān)。有一點需要明確的是微服務(wù)的流行不是因為技術(shù)上的創(chuàng)新,而是為了滿足管理上的需要。單體程序大了之后,各個模塊的部署時間要求不同,對服務(wù)器的優(yōu)化要求也不同,而且團隊人數(shù)眾多,很難協(xié)調(diào)管理。

          把程序拆分成微服務(wù)之后,每個團隊負責(zé)幾個服務(wù),就容易管理了,而且每個團隊也可以按照自己的節(jié)奏進行創(chuàng)新,但它給運維帶來了巨大的麻煩。所以在微服務(wù)剛出來時,我一直覺得它是一個退步,弊大于利。但由于管理上的問題沒有其他解決方案,只有硬著頭皮上了。

          值得慶幸的是微服務(wù)帶來的麻煩都是可解的。直到后來,微服務(wù)建立了全套的自動化體系,從程序集成到部署,從全鏈路跟蹤到日志,以及服務(wù)檢測,服務(wù)發(fā)現(xiàn)和注冊,這樣才把微服務(wù)的工作量降了下來。

          雖然微服務(wù)在技術(shù)上一無是處,但它的流行還是大大推動了容器技術(shù),服務(wù)網(wǎng)格(Service Mesh)和全鏈路跟蹤等新技術(shù)的發(fā)展。不過它本身在技術(shù)上還是沒有發(fā)現(xiàn)任何優(yōu)勢。

          在公眾號互聯(lián)網(wǎng)架構(gòu)師后臺回復(fù)“2T”,獲取一份驚喜禮包。

          直到有一天,我意識到單體程序其實性能調(diào)試是很困難的(很難分離出瓶頸點),而微服務(wù)配置了全鏈路跟蹤之后,能很快找到癥結(jié)所在。看來微服務(wù)從技術(shù)來講也不全是缺點,總算也有好的地方。但微服務(wù)的顆粒度不宜過細,否則工作量還是太大。

          一般規(guī)模的公司十幾個或幾十個微服務(wù)都是可以承受的,但如果有幾百個甚至上千個,那么絕不是一般公司可以管理的。盡管現(xiàn)有的工具已經(jīng)很齊全了,而且與微服務(wù)有關(guān)的整個流程也已經(jīng)基本上全部自動化了,但它還是會增加很多工作。

          Martin Fowler幾年以前建議先從單體程序開始(詳見 MonolithFirst),然后再逐步把功能拆分出去,變成一個個的微服務(wù)。但是后來有人反對這個建議,他也有些松口了。

          如果單體程序不是太大,這是個好主意。可以用數(shù)據(jù)額庫表的數(shù)量來衡量程序的大小,我見過大的單體程序有幾百張表,這就太多了,很難管理。正常情況下,一個微服務(wù)可以有兩、三張表到五、六張表,一般不超過十張表。但如果要減少微服務(wù)數(shù)量的話,可以把這個標(biāo)準(zhǔn)放寬到不要超過二十張表。

          用這個做為大致的指標(biāo)來創(chuàng)建微程序,如果使用一段時間之后還是覺得太大了,那么再逐漸拆分。當(dāng)然,按照這個標(biāo)準(zhǔn)建立的服務(wù)更像是服務(wù)組合,而不是單個的微服務(wù)。不過它會為你減少工作量。只要不影響業(yè)務(wù)部門的創(chuàng)新進度,這是一個不錯的方案。

          到底應(yīng)不應(yīng)該選擇微服務(wù)呢?如果單體程序已經(jīng)沒法管理了,那么你別無選擇。如果沒有管理上的問題,那么微服務(wù)帶給你的只有問題和麻煩。其實,一般公司都沒有太多選擇,只能采用微服務(wù),不過你可以選擇建立比較少的微服務(wù)。如果還是沒法決定,有一個折中的方案,“內(nèi)部微服務(wù)設(shè)計”。


          內(nèi)部微服務(wù)設(shè)計

          這種設(shè)計表面上看起來是一個單體程序,它只有一個源代碼存儲倉庫,一個數(shù)據(jù)庫,一個部署,但在程序內(nèi)部可以按照微服務(wù)的思想來進行設(shè)計。它可以分成多個模塊,每個模塊是一個微服務(wù),可以由不同的團隊管理。

          用這張圖做例子。這個圖里的每個圓角方塊大致是一個微服務(wù),但我們可以把它作為一個單體程序來設(shè)計,內(nèi)部有五個微服務(wù)。

          每個模塊都有自己的數(shù)據(jù)庫表,它們都在一個數(shù)據(jù)庫中,但模塊之間不能跨數(shù)據(jù)庫訪問(不要建立模塊之間數(shù)據(jù)庫表的外鍵)。

          “User”(在Conference Management模塊中)是一個共享的類,但在不同的模塊中的名字不同,含義和用法也不同,成員也不一樣(例如,在“Customer Service”里叫“Customer”)。

          DDD(Domain-Driven Design)建議不要共享這個類,而是在每一個有界上下文(模塊)中都建一個新類,并擁有新的名字。

          雖然它們的數(shù)據(jù)庫中的數(shù)據(jù)應(yīng)該大致相同,但DDD建議每一個有界上下文中都建一個新表,它們之間再進行數(shù)據(jù)同步。

          這個所謂的“內(nèi)部微服務(wù)設(shè)計”其實就是DDD,但當(dāng)時還沒有微服務(wù),因此外表看起來是單體程序,但內(nèi)部已經(jīng)是微服務(wù)的設(shè)計了。

          它的書在2003就出版了,當(dāng)時就很有名。但它更偏重于業(yè)務(wù)邏輯的設(shè)計,踐行起來也比較困難,因此大家談?wù)摰煤芏啵嬲玫妮^少。

          直到十年之后,微服務(wù)出來之后,人們發(fā)現(xiàn)它其實內(nèi)部就是微服務(wù),而且微服務(wù)的設(shè)計需要用它的思想來指導(dǎo),于是就又重新煥發(fā)了青春,而且這次更猛,已經(jīng)到了每個談?wù)撐⒎?wù)的人都不得不談?wù)揇DD的地步。不過一本軟件書籍,在十年之后還能指導(dǎo)新技術(shù)的設(shè)計,非常令人欽佩。

          這樣設(shè)計的好處是它是一個單體程序,省去了多個微服務(wù)帶來的部署、運維的麻煩。但它內(nèi)部是按微服務(wù)設(shè)計的,如果以后要拆分成微服務(wù)會比較容易。至于什么時候拆分不是一個技術(shù)問題。

          如果負責(zé)這個單體程序的各個團隊之間不能在部署時間表,服務(wù)器優(yōu)化等方面達成一致,那么就需要拆分了。

          當(dāng)然你也要應(yīng)對隨之而來的各種運維麻煩。內(nèi)部微服務(wù)設(shè)計是一個折中的方案,如果你想試水微服務(wù),但又不愿意冒太大風(fēng)險時,這是一個不錯的選擇。


          結(jié)論

          微服務(wù)之間的調(diào)用有兩種方式,RPC和事件驅(qū)動。事件驅(qū)動是更好的方式,因為它是松耦合的。但如果業(yè)務(wù)邏輯是緊耦合的,RPC方式也是可行的(它的好處是代碼更簡單),而且你還可以通過選取合適的協(xié)議(Protobuf gRPC)來降低這種緊耦合帶來的危害。

          由于事件溯源和事件通知的相似性,很多人把兩者弄混了,但它們實際上是完全不同的東西。微服務(wù)的數(shù)量不宜太多,可以先創(chuàng)建比較大的微服務(wù)(更像是服務(wù)組合)。

          如果你還是不能確定是否采用微服務(wù)架構(gòu),可以先從“內(nèi)部微服務(wù)設(shè)計”開始,再逐漸拆分。


          看完這篇文章,你有什么收獲?歡迎在留言區(qū)與10w+Java開發(fā)者一起討論~

          關(guān)注微信公眾號:互聯(lián)網(wǎng)架構(gòu)師,在后臺回復(fù):2T,可以獲取我整理的教程,都是干貨。


          猜你喜歡

          1、GitHub 標(biāo)星 3.2w!史上最全技術(shù)人員面試手冊!FackBoo發(fā)起和總結(jié)

          2、如何才能成為優(yōu)秀的架構(gòu)師?

          3、從零開始搭建創(chuàng)業(yè)公司后臺技術(shù)棧

          4、程序員一般可以從什么平臺接私活?

          5、37歲程序員被裁,120天沒找到工作,無奈去小公司,結(jié)果懵了...

          6、滴滴業(yè)務(wù)中臺構(gòu)建實踐,首次曝光

          7、不認命,從10年流水線工人,到谷歌上班的程序媛,一位湖南妹子的勵志故事

          8、15張圖看懂瞎忙和高效的區(qū)別

          9、2T架構(gòu)師學(xué)習(xí)資料干貨分享


          瀏覽 41
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  日日夜夜久久视频久久视频 | 国产美女与美女日逼 | 国产熟女视频 豆花视频 | 欧美国产日本在线视频 | 久久久久黄色片 |