支撐億級用戶的架構(gòu):從0到1演化全過程

本文從以下2個方向蛀序,對互聯(lián)網(wǎng)系統(tǒng)架構(gòu)演化進(jìn)行了一個綜述:

1.大型互聯(lián)網(wǎng)架構(gòu)目前面臨的挑戰(zhàn)及其解決思路

2.大型互聯(lián)網(wǎng)系統(tǒng)架構(gòu)演化過程堪置,包含了所有的現(xiàn)在主要的互聯(lián)網(wǎng)架構(gòu)的考量點吞获、技術(shù)方案琐鲁、要解決的問題等。

建議用10min閱讀,可以了解互聯(lián)網(wǎng)架構(gòu)的全貌唱歧。


一、架構(gòu)演進(jìn)面臨的挑戰(zhàn)及解決思路

互聯(lián)網(wǎng)主要面對的技術(shù)挑戰(zhàn)粒竖,用一句話概括:就是用戶不斷上升產(chǎn)生的并發(fā)訪問壓力以及數(shù)據(jù)存儲壓力颅崩,所以系統(tǒng)需要更強的處理能力才能解決這些問題。

而系統(tǒng)處理能力提升温圆,主要有兩種途徑:

1.垂直伸縮:

提升單臺服務(wù)器的處理能力挨摸,比如用更快頻率的cpu,用更多核的cpu岁歉,用更大的內(nèi)存得运,用更快的網(wǎng)卡,用更多的磁盤組成一臺服務(wù)器锅移,使單臺服務(wù)器的處理能力得到提升熔掺,通過這種手段提升系統(tǒng)的處理能力。

缺點如下:

a.當(dāng)垂直伸縮達(dá)到一定程度以后非剃,繼續(xù)增加計算需要花費更多的錢置逻。

b.垂直伸縮是有物理極限的,即使是大型機备绽,也有自己的物理極限券坞,它不可能無限地伸縮下去的。

c.操作系統(tǒng)的設(shè)計或者應(yīng)用程序的設(shè)計制約著垂直伸縮肺素,最多只能達(dá)到一個點無法繼續(xù)提高恨锚。

在大型互聯(lián)網(wǎng)出現(xiàn)之前,傳統(tǒng)的軟件倍靡,比如銀行猴伶、電信這些企業(yè)的軟件系統(tǒng),主要是使用垂直伸縮這種手段實現(xiàn)系統(tǒng)能力提升的,在服務(wù)器上增強他挎,提升服務(wù)器的硬件水平筝尾。當(dāng)某種類型的服務(wù)器能力提升到了瓶頸以后,就會用更強大的服務(wù)器办桨,比如說從服務(wù)器升級到小型機筹淫,從小型機提升到中型機,從中型機提升到大型機呢撞,服務(wù)器越來越強大贸街,處理能力越來越強大,當(dāng)然價格也越來越昂貴狸相,運維越來越復(fù)雜。


2.水平伸縮:

單機的處理能力并不提升捐川,也不使用更昂貴的更快的更厲害的硬件脓鹃,而是通過更多的服務(wù)器,將這些服務(wù)器構(gòu)成一個分布式集群古沥,通過這個集群瘸右,統(tǒng)一對外提供服務(wù),以此來提高系統(tǒng)整體的處理能力岩齿。

水平伸縮優(yōu)點:

a.只要架構(gòu)合理太颤,能夠添加服務(wù)器到集群中,你的系統(tǒng)就是永遠(yuǎn)可以正常運行盹沈。

b.它沒有極限龄章,它的成本也不會說到了某個臨界點就突然增加。而且逐漸的增加服務(wù)器乞封,獲得相同的計算處理能力做裙,只會比以前的服務(wù)器更便宜,不會更貴肃晚,因為硬件的價格總是在不斷地下降的锚贱。

c.應(yīng)用程序運行在一個服務(wù)器上,是為單一服務(wù)器而設(shè)計的关串,而增加服務(wù)器的話只是讓程序部署在更多的服務(wù)器上拧廊,所以也不需要對應(yīng)用程序進(jìn)行太多的改變,應(yīng)用程序不會受到硬件制約晋修。

在互聯(lián)網(wǎng)行業(yè)中多采用水平伸縮的手段吧碾。


二、大型互聯(lián)網(wǎng)系統(tǒng)架構(gòu)演化過程

要讓更多的服務(wù)器構(gòu)成一個整體飞蚓,需要在架構(gòu)上進(jìn)行設(shè)計滤港,讓這些服務(wù)器成為整體系統(tǒng)中的一個部分,有效地組織起來,統(tǒng)一提升系統(tǒng)的處理能力溅漾。

以下將通過大型互聯(lián)網(wǎng)系統(tǒng)架構(gòu)的演進(jìn)過程山叮,來詳細(xì)理解如何通過以上兩種伸縮方式逐步提升系統(tǒng)處理能力的。

這個過程對外看起來是一個業(yè)務(wù)演進(jìn)過程添履,也就是用戶量不斷增長的一個過程屁倔。

實際上大型互聯(lián)網(wǎng)整個的技術(shù)驅(qū)動就是因為用戶量不斷地在增加,數(shù)據(jù)量不斷增加暮胧,導(dǎo)致并發(fā)訪問壓力持續(xù)增大锐借,產(chǎn)生了一系列技術(shù)挑戰(zhàn)。為了應(yīng)對這個挑戰(zhàn)往衷,要不斷地增強系統(tǒng)的技術(shù)處理能力钞翔,優(yōu)化系統(tǒng)的架構(gòu)。

最早的時候是單機系統(tǒng)席舍,這時候可以滿足少量用戶的使用布轿;

隨著數(shù)據(jù)量提升,需要進(jìn)行應(yīng)用服務(wù)器與數(shù)據(jù)庫分離来颤,這個時候可以滿足萬級用戶的使用汰扭;

再然后需要通過分布式緩存和服務(wù)器集群提升系統(tǒng)性能,這時候可以滿足10萬級的用戶福铅,之后需要進(jìn)行反向代理萝毛,CDN加速還需要數(shù)據(jù)庫讀寫分離,以滿足百萬用戶級的訪問滑黔;

隨著數(shù)據(jù)量爆發(fā)式增長笆包,使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng),以滿足千萬級用戶的訪問略荡;

最后使用搜索引擎色查、NoSQL、消息隊列撞芍、分布式服務(wù)等更復(fù)雜的技術(shù)方案秧了,以滿足億級用戶的訪問。


1.單機系統(tǒng)

在最早的時候序无,系統(tǒng)因為用戶量比較少验毡,可能只是有限的幾個用戶,這個階段系統(tǒng)主要是用來驗證技術(shù)以及業(yè)務(wù)模式是否可行的帝嗡,系統(tǒng)也不需要太復(fù)雜晶通,有限的幾個主要功能。

開發(fā)完應(yīng)用程序以后哟玷,部署在應(yīng)用服務(wù)器上狮辽,一個應(yīng)用訪問自己服務(wù)器上的數(shù)據(jù)庫一也,訪問自己服務(wù)器的文件系統(tǒng),構(gòu)成了一個單機系統(tǒng)喉脖,這個系統(tǒng)就可以滿足少量用戶使用了椰苟。

如果這個系統(tǒng)被證明是可行的,是有價值的树叽,好用的舆蝴,如Google 最早就是部署在斯坦福的實驗室里面,給實驗室的同學(xué)和老師使用的题诵。這些同學(xué)和老師使用后發(fā)現(xiàn)Google的搜索引擎比以前的搜索引擎(比如像Yahoo這樣的搜索引擎)要好用的多洁仗,很快這個消息就擴散出去了。整個斯坦福大學(xué)的老師同學(xué)可能都過來訪問這個服務(wù)器性锭。這個時候服務(wù)器就不能夠承受訪問壓力了赠潦,需要進(jìn)行第一次升級,數(shù)據(jù)庫與應(yīng)用分離草冈。


2祭椰、數(shù)據(jù)庫與應(yīng)用程序分離

前面單機的時候,數(shù)據(jù)庫和應(yīng)用程序是部署在一起的疲陕。

進(jìn)行第一次分離的時候,應(yīng)用程序钉赁、數(shù)據(jù)庫蹄殃、文件系統(tǒng)分別部署在不同的服務(wù)器上,從1臺服務(wù)器變成了3臺服務(wù)器你踩,那么相應(yīng)的處理能力就提升了3倍诅岩。

這種分離幾乎是不需要花什么技術(shù)成本的,只需要把數(shù)據(jù)庫文件系統(tǒng)進(jìn)行遠(yuǎn)程部署带膜,進(jìn)行遠(yuǎn)程訪問就可以了吩谦,這個時候的處理能力提升了3倍。


3膝藕、使用緩存改善性能

隨著用戶進(jìn)一步的增加式廷,更多的用戶過來訪,3臺服務(wù)器也不能夠承受這樣的壓力了芭挽,那么就需要使用緩存改善性能滑废。

緩存主要有分布式緩存和本地緩存兩種。

分布式緩存可以構(gòu)成一個集群袜爪,存儲更多的緩存數(shù)據(jù)蠕趁,通過使用緩存一則應(yīng)用程序不需要去訪問數(shù)據(jù)庫,因為數(shù)據(jù)庫的數(shù)據(jù)是存在磁盤上的辛馆,訪問數(shù)據(jù)庫需要花費更多的時間俺陋,而緩存中的數(shù)據(jù)只是存儲在內(nèi)存中的,訪問時間更短。

另一方面腊状,數(shù)據(jù)庫中的數(shù)據(jù)是以原始數(shù)據(jù)的形式存在的诱咏,而緩存中的數(shù)據(jù)通常是以結(jié)果形式存在,如果說已經(jīng)構(gòu)建成某個對象寿酌,緩存的就是這個對象胰苏,不需要進(jìn)行對象的計算,這樣就減少了計算的時間醇疼,同時也減少了CPU的壓力硕并。

這樣不管是對計算資源的節(jié)約,還是對訪問時間的節(jié)約秧荆,都會得到比較大的提升倔毙。通過使用緩存可以極大的改善性能。


4乙濒、應(yīng)用服務(wù)集群化

雖然通過數(shù)據(jù)庫分離和使用緩存陕赃,加快了系統(tǒng)的響應(yīng)時間,減少了系統(tǒng)的計算壓力颁股,但是隨著用戶的進(jìn)一步增加么库,應(yīng)用服務(wù)器可能會成為瓶頸,一臺應(yīng)用服務(wù)器連接大量的并發(fā)用戶的訪問可能會成為一個瓶頸點甘有,這時候就需要對應(yīng)用服務(wù)器進(jìn)行升級诉儒。

解決辦法就是通過負(fù)載均衡服務(wù)器,將應(yīng)用服務(wù)器部署為一個集群亏掀,添加更多的應(yīng)用服務(wù)去處理用戶的訪問忱反。


5、數(shù)據(jù)庫讀寫分離

雖然通過負(fù)載均衡可以不斷的添加應(yīng)用服務(wù)器滤愕,為更多的用戶提供系統(tǒng)訪問服務(wù)温算。但是這個時候數(shù)據(jù)庫會再一次成為整個系統(tǒng)的瓶頸點。

因為大量的用戶過來訪問间影,他們的主要操作都需要落在數(shù)據(jù)庫上注竿。雖然緩存可以緩存一部分的數(shù)據(jù)庫讀操作,但是還是有一部分讀操作在緩存中找不到魂贬,還需要訪問數(shù)據(jù)庫蔓搞,而且所有的寫操作幾乎都要訪問數(shù)據(jù)庫,這時候數(shù)據(jù)庫就會成為瓶頸随橘。

單一的數(shù)據(jù)庫不能夠承受這么大的訪問壓力喂分。

這時候的解決辦法就是數(shù)據(jù)庫的讀寫分離,將一個數(shù)據(jù)庫通過數(shù)據(jù)復(fù)制的方式机蔗,分裂為兩個數(shù)據(jù)庫蒲祈,主數(shù)據(jù)庫主要負(fù)責(zé)數(shù)據(jù)的寫操作甘萧,所有的寫操作都復(fù)制到從數(shù)據(jù)庫上,保證從數(shù)據(jù)庫的數(shù)據(jù)和主數(shù)據(jù)庫數(shù)據(jù)一致梆掸,而從數(shù)據(jù)庫主要提供數(shù)據(jù)的讀操作扬卷。

通過這樣一種手段,將一臺數(shù)據(jù)庫服務(wù)器水平伸縮成兩臺數(shù)據(jù)庫服務(wù)器酸钦,可以提供更強大的數(shù)據(jù)處理能力怪得。


6、使用反向代理和CDN加速相應(yīng)

在對數(shù)據(jù)庫做讀寫分離以后卑硫,要想更進(jìn)一步增加系統(tǒng)的處理能力徒恋,需要使用反向代理和CDN加速。

所謂的CDN是指距離用戶最近的一個服務(wù)器欢伏,當(dāng)訪問一個互聯(lián)網(wǎng)應(yīng)用的時候入挣,我們的訪問請求并不是直接到達(dá)互聯(lián)網(wǎng)站的數(shù)據(jù)中心的,而是通過運營服務(wù)商進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)的硝拧。

那么在進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)的時候径筏,最好已經(jīng)有我們想要訪問的數(shù)據(jù)了,這樣就不需要訪問互聯(lián)網(wǎng)數(shù)據(jù)中心了障陶。這個服務(wù)就叫做CDN服務(wù)滋恬,CDN服務(wù)就是部署在網(wǎng)絡(luò)運營商機房里的離用戶最近的一個服務(wù)器,用戶請求先到這里查詢有沒有用戶需要的數(shù)據(jù)抱究,如果有恢氯,就從CDN直接返回,如果沒有媳维,再通過CDN進(jìn)一步訪問網(wǎng)站的數(shù)據(jù)中心,得到數(shù)據(jù)后再緩存到CDN供其他用戶訪問或下一次訪問遏暴,所以CDN的本質(zhì)還是一個緩存侄刽。

用戶請求到達(dá)網(wǎng)站的數(shù)據(jù)中心后,也不是直接請求應(yīng)用服務(wù)器朋凉,依然是查找一次緩存州丹,這個緩存叫做反向代理服務(wù)器。

反向代理服務(wù)器是指通過反向代理的方式代理整個網(wǎng)站的請求服務(wù)杂彭,先在反向代理服務(wù)器中查找是否有用戶請求的數(shù)據(jù)墓毒,如果有,就從反向代理服務(wù)器直接返回亲怠,如果沒有所计,再去請求應(yīng)用服務(wù)器。通過這樣的CDN和反向代理兩級緩存团秽,可以返回絕大部分用戶請求的網(wǎng)絡(luò)數(shù)據(jù)主胧,極大地減少應(yīng)用服務(wù)器的負(fù)載壓力叭首,提升服務(wù)器數(shù)據(jù)中心的處理能力,響應(yīng)更多的用戶并發(fā)處理請求踪栋。


7焙格、使用分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)

更進(jìn)一步思考,雖然CDN和反向代理已經(jīng)緩存了大量的用戶數(shù)據(jù)夷都,返回了大量的用戶請求眷唉,但是隨著用戶量的增加,還是有很多的用戶請求會到達(dá)數(shù)據(jù)中心囤官。

這個時候文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)依然會成為瓶頸點冬阳。問題變成如何解決這個瓶頸點?

解決方案主要是分布式的文件系統(tǒng)和分布式的數(shù)據(jù)庫系統(tǒng)治拿。

所謂的分布式文件系統(tǒng)就是通過一組服務(wù)器集群統(tǒng)一對外提供文件服務(wù)摩泪。比如說像淘寶的商品圖片服務(wù)以及Facebook這樣的相冊服務(wù)每天都有大量的用戶上傳大量的圖片,那么如何管理這些海量的文件圖片劫谅,就要使用一個分布式的文件服務(wù)器系統(tǒng)见坑。

隨著數(shù)據(jù)量逐漸增加,前面的主從數(shù)據(jù)庫也不能夠承受這么大的訪問壓力和存儲容量要求捏检,那么需要對數(shù)據(jù)庫做進(jìn)一步水平伸縮荞驴,這個時候就使用分布式的數(shù)據(jù)庫,通過數(shù)據(jù)分片的方式贯城,將一張表的數(shù)據(jù)分布在多個物理服務(wù)器上熊楼,以減少單一數(shù)據(jù)庫的服務(wù)器訪問壓力。通過這樣的手段可以進(jìn)一步的提升系統(tǒng)的處理能力能犯。


8鲫骗、使用消息隊列與分布式服務(wù)

最后,隨著用戶量進(jìn)一步增加踩晶,要想實現(xiàn)更強大計算處理能力执泰,可以使用的技術(shù)手段有分布式消息隊列服務(wù)、搜索引擎和nosql渡蜻,以及通過分布式服務(wù)术吝,將可復(fù)用的業(yè)務(wù)分離開來,部署在不同的服務(wù)器集群上茸苇。

用戶量增加排苍,除了意味著用戶對系統(tǒng)的訪問壓力增加,還伴隨著業(yè)務(wù)復(fù)雜度增加学密。使用分布式消息隊列和分布式的服務(wù)淘衙,主要要解決的就是業(yè)務(wù)的增加時系統(tǒng)的復(fù)雜度問題。隨著業(yè)務(wù)的增加腻暮,很多的業(yè)務(wù)都有一些重復(fù)的服務(wù)功能需要復(fù)用幔翰,這時候使用分布式的服務(wù)去解決服務(wù)的復(fù)用問題漩氨。

而不同的服務(wù)之間不同的應(yīng)用之間,它們的耦合關(guān)系會使得系統(tǒng)更加復(fù)雜遗增,這時候使用分布式消息隊列服務(wù)叫惊,將不同的應(yīng)用服務(wù)器進(jìn)行解耦,使它們之間的關(guān)系變得低耦合做修,通過消息進(jìn)行連接霍狰,而不是服務(wù)調(diào)用的方式或者應(yīng)用調(diào)用的方式進(jìn)行連接,使服務(wù)變得更加的簡單饰及,使系統(tǒng)的處理能力和擴容能力變得更加的強大蔗坯。


本文總結(jié)

首先,大型互聯(lián)網(wǎng)系統(tǒng)的挑戰(zhàn)主要包括:高并發(fā)和大流量的請求燎含、高可用的挑戰(zhàn)宾濒、海量數(shù)據(jù)的挑戰(zhàn)、網(wǎng)絡(luò)情況復(fù)雜安全性差屏箍,以及需求快速變更發(fā)布頻繁這樣的挑戰(zhàn)绘梦。

為了應(yīng)對這樣的挑戰(zhàn),需要提升系統(tǒng)的處理能力赴魁。

處理能力提升有兩種手段卸奉,一種是垂直伸縮,一種是水平伸縮颖御。

垂直伸縮有自身的局限性榄棵,所以在互聯(lián)網(wǎng)企業(yè)中主要使用的手段是水平伸縮。水平伸縮的原理就是不斷地增加服務(wù)器以提高系統(tǒng)的處理能力潘拱。而如何添加新服務(wù)器疹鳄,使新的服務(wù)器和原有的服務(wù)器構(gòu)成一個完整的整體對外提供服務(wù),就是互聯(lián)網(wǎng)架構(gòu)的主要技術(shù)挑戰(zhàn)和技術(shù)內(nèi)容芦岂。

在應(yīng)對挑戰(zhàn)的過程中瘪弓,互聯(lián)網(wǎng)架構(gòu)主要的應(yīng)對方法,就是從單機系統(tǒng)到分布式系統(tǒng)盔腔,通過服務(wù)器拆分的方式杠茬,從單機系統(tǒng)一個服務(wù)器變成很多個服務(wù)器月褥,是整個的發(fā)展思路以及發(fā)展過程弛随。

其中最主要的發(fā)展階段包括:

使用分布式的緩存,提高系統(tǒng)的訪問特性宁赤,減少數(shù)據(jù)存儲的壓力舀透;

使用負(fù)載均衡,提供更多的應(yīng)用服務(wù)器提高系統(tǒng)計算處理能力决左;

使用分布式存儲愕够,提供更多的服務(wù)器走贪,分?jǐn)倲?shù)據(jù)的讀寫壓力;

以及使用微服務(wù)與異步架構(gòu)惑芭,使系統(tǒng)變得更加低耦合坠狡,使應(yīng)用業(yè)務(wù)變得更加可復(fù)用,通過這種手段支撐更強大的業(yè)務(wù)處理能力遂跟,從而支撐起一個大型網(wǎng)站系統(tǒng)架構(gòu)逃沿。

以上內(nèi)容摘取自拉勾

《阿里前輩的架構(gòu)經(jīng)》?(點藍(lán)字查看更多)

第01講(從0到億級用戶的架構(gòu)演進(jìn))

主講人:李智慧,前阿里巴巴技術(shù)專家

加拉勾職場導(dǎo)師Amy微信:lagouandy幻锁,即可領(lǐng)取技術(shù)人福利包一份(內(nèi)含稀缺開源代碼)凯亮,為你職場助攻???????

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市哄尔,隨后出現(xiàn)的幾起案子假消,更是在濱河造成了極大的恐慌,老刑警劉巖岭接,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件富拗,死亡現(xiàn)場離奇詭異,居然都是意外死亡亿傅,警方通過查閱死者的電腦和手機媒峡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來葵擎,“玉大人谅阿,你說我怎么就攤上這事〕曷耍” “怎么了签餐?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盯串。 經(jīng)常有香客問我氯檐,道長,這世上最難降的妖魔是什么体捏? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任冠摄,我火速辦了婚禮,結(jié)果婚禮上几缭,老公的妹妹穿的比我還像新娘河泳。我一直安慰自己,他們只是感情好年栓,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布拆挥。 她就那樣靜靜地躺著,像睡著了一般某抓。 火紅的嫁衣襯著肌膚如雪纸兔。 梳的紋絲不亂的頭發(fā)上惰瓜,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機與錄音汉矿,去河邊找鬼崎坊。 笑死,一個胖子當(dāng)著我的面吹牛洲拇,可吹牛的內(nèi)容都是我干的流强。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼呻待,長吁一口氣:“原來是場噩夢啊……” “哼打月!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蚕捉,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤奏篙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后迫淹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秘通,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年敛熬,在試婚紗的時候發(fā)現(xiàn)自己被綠了肺稀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡应民,死狀恐怖话原,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诲锹,我是刑警寧澤繁仁,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站归园,受9級特大地震影響黄虱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庸诱,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一捻浦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧桥爽,春花似錦朱灿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滞诺。三九已至形导,卻和暖如春环疼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背朵耕。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工炫隶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阎曹。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓伪阶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親处嫌。 傳聞我的和親對象是個殘疾皇子栅贴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容