從架構(gòu)演進(jìn)的角度聊聊Spring Cloud都做了些什么?

系統(tǒng)分為不同的層級(jí),每個(gè)層級(jí)有對(duì)應(yīng)的職責(zé)搁胆,UI層負(fù)責(zé)和用戶進(jìn)行交互粤铭、業(yè)務(wù)邏輯層負(fù)責(zé)具體的業(yè)務(wù)功能凹髓、數(shù)據(jù)庫(kù)層負(fù)責(zé)和上層進(jìn)行數(shù)據(jù)交換和存儲(chǔ)赌躺。

下面是垂直架構(gòu)的架構(gòu)圖:

從架構(gòu)演進(jìn)的角度聊聊Spring Cloud都做了些什么拂到?

在這個(gè)階段SSH(struts+spring+hibernate)是項(xiàng)目的關(guān)鍵技術(shù),Struts負(fù)責(zé)web層邏輯控制祝蝠、Spring負(fù)責(zé)業(yè)務(wù)層管理Bean恍风、Hibernate負(fù)責(zé)數(shù)據(jù)庫(kù)操作進(jìn)行封裝,持久化數(shù)據(jù)。

服務(wù)化架構(gòu)

如果公司進(jìn)一步的做大沟娱,垂直子系統(tǒng)會(huì)變的越來(lái)越多蓖扑,系統(tǒng)和系統(tǒng)之間的調(diào)用關(guān)系呈指數(shù)上升的趨勢(shì)嗓奢。在這樣的背景下厂榛,很多公司都會(huì)考慮服務(wù)的SOA化。SOA代表面向服務(wù)的架構(gòu),將應(yīng)用程序根據(jù)不同的職責(zé)劃分為不同的模塊,不同的模塊直接通過(guò)特定的協(xié)議和接口進(jìn)行交互。這樣使整個(gè)系統(tǒng)切分成很多單個(gè)組件服務(wù)來(lái)完成請(qǐng)求腮鞍,當(dāng)流量過(guò)大時(shí)通過(guò)水平擴(kuò)展相應(yīng)的組件來(lái)支撐砚蓬,所有的組件通過(guò)交互來(lái)滿足整體的業(yè)務(wù)需求。

SOA服務(wù)化的優(yōu)點(diǎn)是,它可以根據(jù)需求通過(guò)網(wǎng)絡(luò)對(duì)松散耦合的粗粒度應(yīng)用組件進(jìn)行分布式部署、組合和使用煌茴。服務(wù)層是SOA的基礎(chǔ)僚害,可以直接被應(yīng)用調(diào)用捻艳,從而有效控制系統(tǒng)中與軟件代理交互的人為依賴性月培。

服務(wù)化架構(gòu)是一套松耦合的架構(gòu)纯续,服務(wù)的拆分原則是服務(wù)內(nèi)部高內(nèi)聚兔魂,服務(wù)之間低耦合芙代。

下面是服務(wù)化架構(gòu)圖:

從架構(gòu)演進(jìn)的角度聊聊Spring Cloud都做了些什么?

在這個(gè)階段可以使用WebService或者dubbo來(lái)服務(wù)治理肝谭。

我們發(fā)現(xiàn)從單體架構(gòu)到服務(wù)化架構(gòu)掘宪,應(yīng)用數(shù)量都在不斷的增加,慢慢的下沉的就成了基礎(chǔ)組建攘烛,上浮的就成為業(yè)務(wù)系統(tǒng)魏滚。從上述也可以看出架構(gòu)的本質(zhì)就是不斷的拆分重構(gòu):分的過(guò)程是把系統(tǒng)拆分為各個(gè)子系統(tǒng)/模塊/組件,拆的時(shí)候坟漱,首先要解決每個(gè)組件的定位問(wèn)題鼠次,然后才能劃分彼此的邊界,實(shí)現(xiàn)合理的拆分。合就是根據(jù)最終要求腥寇,把各個(gè)分離的組件有機(jī)整合在一起成翩。拆分的結(jié)果使開(kāi)發(fā)人員能夠做到業(yè)務(wù)聚焦、技能聚焦赦役,實(shí)現(xiàn)開(kāi)發(fā)敏捷麻敌,合的結(jié)果是系統(tǒng)變得柔性,可以因需而變掂摔,實(shí)現(xiàn)業(yè)務(wù)敏捷术羔。

SOA和微服務(wù)架構(gòu)

SOA和微服務(wù)的區(qū)別

其實(shí)服務(wù)化架構(gòu)已經(jīng)可以解決大部分企業(yè)的需求了,那么我們?yōu)槭裁匆芯课⒎?wù)呢乙漓?先說(shuō)說(shuō)它們的區(qū)別;

  • 微服務(wù)架構(gòu)強(qiáng)調(diào)業(yè)務(wù)系統(tǒng)需要徹底的組件化和服務(wù)化叭披,一個(gè)組件就是一個(gè)產(chǎn)品寥殖,可以獨(dú)立對(duì)外提供服務(wù)
  • 微服務(wù)不再?gòu)?qiáng)調(diào)傳統(tǒng)SOA架構(gòu)里面比較重的ESB企業(yè)服務(wù)總線
  • 微服務(wù)強(qiáng)調(diào)每個(gè)微服務(wù)都有自己獨(dú)立的運(yùn)行空間,包括數(shù)據(jù)庫(kù)資源涩蜘。
  • 微服務(wù)架構(gòu)本身來(lái)源于互聯(lián)網(wǎng)的思路嚼贡,因此組件對(duì)外發(fā)布的服務(wù)強(qiáng)調(diào)了采用HTTP Rest API的方式來(lái)進(jìn)行
  • 微服務(wù)的切分粒度會(huì)更小

總結(jié):微服務(wù)架構(gòu)是 SOA 架構(gòu)思想的一種擴(kuò)展,更加強(qiáng)調(diào)服務(wù)個(gè)體的獨(dú)立性皱坛、拆分粒度更小编曼。

為什么考慮Spring Cloud

  • Spring Cloud來(lái)源于Spring,質(zhì)量剩辟、穩(wěn)定性掐场、持續(xù)性都可以得到保證
  • Spirng Cloud天然支持Spring Boot,更加便于業(yè)務(wù)落地贩猎。
  • Spring Cloud發(fā)展非常的快熊户,從16年開(kāi)始接觸的時(shí)候相關(guān)組件版本為1.x,到現(xiàn)在將要發(fā)布2.x系列
  • Spring Cloud是Java領(lǐng)域最適合做微服務(wù)的框架吭服。
  • 相比于其它框架,Spring Cloud對(duì)微服務(wù)周邊環(huán)境的支持力度最大嚷堡。
  • 對(duì)于中小企業(yè)來(lái)講,使用門檻較低艇棕。

Spring Cloud 是微服務(wù)架構(gòu)的最佳落地方案

它的特性

以下為Spring Cloud的核心特性:

  • 分布式/版本化配置
  • 服務(wù)注冊(cè)和發(fā)現(xiàn)
  • 路由
  • 服務(wù)和服務(wù)之間的調(diào)用
  • 負(fù)載均衡
  • 斷路器
  • 分布式消息傳遞

這些特性都是由不同的組件來(lái)完成蝌戒,在架構(gòu)的演進(jìn)過(guò)程中扮演著重要的角色,接下來(lái)我們一起看看沼琉。

微服務(wù)架構(gòu)

Spring Cloud解決的第一個(gè)問(wèn)題就是:服務(wù)與服務(wù)之間的解耦北苟。很多公司在業(yè)務(wù)高速發(fā)展的時(shí)候,服務(wù)組件也會(huì)相應(yīng)的不斷增加打瘪。服務(wù)和服務(wù)之間有著復(fù)雜的相互調(diào)用關(guān)系友鼻,經(jīng)常有服務(wù)A調(diào)用服務(wù)B傻昙,服務(wù)B調(diào)用服務(wù)C和服務(wù)D ...,隨著服務(wù)化組件的不斷增多彩扔,服務(wù)之間的調(diào)用關(guān)系成指數(shù)級(jí)別的增長(zhǎng)妆档,極端情況下就如下圖所示:

從架構(gòu)演進(jìn)的角度聊聊Spring Cloud都做了些什么?

這樣最容易導(dǎo)致的情況就是牽一發(fā)而動(dòng)全身虫碉。經(jīng)常出現(xiàn)由于某個(gè)服務(wù)更新而沒(méi)有通知到其它服務(wù)贾惦,導(dǎo)致上線后慘案頻發(fā)。這時(shí)候就應(yīng)該進(jìn)行服務(wù)治理蔗衡,將服務(wù)之間的直接依賴轉(zhuǎn)化為服務(wù)對(duì)服務(wù)中心的依賴纤虽。Spring Cloud 核心組件Eureka就是解決這類問(wèn)題。

Eureka

Eureka是Netflix開(kāi)源的一款提供服務(wù)注冊(cè)和發(fā)現(xiàn)的產(chǎn)品绞惦,它提供了完整的Service Registry和Service Discovery實(shí)現(xiàn)。也是Spring Cloud體系中最重要最核心的組件之一洋措。

用大白話講济蝉,Eureka就是一個(gè)服務(wù)中心,將所有的可以提供的服務(wù)都注冊(cè)到它這里來(lái)管理菠发,其它各調(diào)用者需要的時(shí)候去注冊(cè)中心獲取王滤,然后再進(jìn)行調(diào)用,避免了服務(wù)之間的直接調(diào)用滓鸠,方便后續(xù)的水平擴(kuò)展雁乡、故障轉(zhuǎn)移等。如下圖:

從架構(gòu)演進(jìn)的角度聊聊Spring Cloud都做了些什么糜俗?

當(dāng)然服務(wù)中心這么重要的組件一但掛掉將會(huì)影響全部服務(wù)踱稍,因此需要搭建Eureka集群來(lái)保持高可用性,生產(chǎn)中建議最少兩臺(tái)悠抹。隨著系統(tǒng)的流量不斷增加珠月,需要根據(jù)情況來(lái)擴(kuò)展某個(gè)服務(wù),Eureka內(nèi)部已經(jīng)提供均衡負(fù)載的功能楔敌,只需要增加相應(yīng)的服務(wù)端實(shí)例既可啤挎。那么在系統(tǒng)的運(yùn)行期間某個(gè)實(shí)例掛了怎么辦?Eureka內(nèi)容有一個(gè)心跳檢測(cè)機(jī)制卵凑,如果某個(gè)實(shí)例在規(guī)定的時(shí)間內(nèi)沒(méi)有進(jìn)行通訊則會(huì)自動(dòng)被剔除掉庆聘,避免了某個(gè)實(shí)例掛掉而影響服務(wù)。

因此使用了Eureka就自動(dòng)具有了注冊(cè)中心勺卢、負(fù)載均衡伙判、故障轉(zhuǎn)移的功能。如果想對(duì)Eureka進(jìn)一步了解可以參考這篇文章:注冊(cè)中心Eureka

Hystrix

在微服務(wù)架構(gòu)中通常會(huì)有多個(gè)服務(wù)層調(diào)用值漫,基礎(chǔ)服務(wù)的故障可能會(huì)導(dǎo)致級(jí)聯(lián)故障澳腹,進(jìn)而造成整個(gè)系統(tǒng)不可用的情況织盼,這種現(xiàn)象被稱為服務(wù)雪崩效應(yīng)。服務(wù)雪崩效應(yīng)是一種因“服務(wù)提供者”的不可用導(dǎo)致“服務(wù)消費(fèi)者”的不可用,并將不可用逐漸放大的過(guò)程酱塔。

如下圖所示:A作為服務(wù)提供者沥邻,B為A的服務(wù)消費(fèi)者,C和D是B的服務(wù)消費(fèi)者羊娃。A不可用引起了B的不可用唐全,并將不可用像滾雪球一樣放大到C和D時(shí),雪崩效應(yīng)就形成了蕊玷。

從架構(gòu)演進(jìn)的角度聊聊Spring Cloud都做了些什么邮利?

在這種情況下就需要整個(gè)服務(wù)機(jī)構(gòu)具有故障隔離的功能,避免某一個(gè)服務(wù)掛掉影響全局垃帅。在Spring Cloud 中Hystrix組件就扮演這個(gè)角色延届。

Hystrix會(huì)在某個(gè)服務(wù)連續(xù)調(diào)用N次不響應(yīng)的情況下,立即通知調(diào)用端調(diào)用失敗贸诚,避免調(diào)用端持續(xù)等待而影響了整體服務(wù)方庭。Hystrix間隔時(shí)間會(huì)再次檢查此服務(wù),如果服務(wù)恢復(fù)將繼續(xù)提供服務(wù)酱固。

繼續(xù)了解Hystrix可以參考:熔斷器Hystrix

Hystrix Dashboard和Turbine

當(dāng)熔斷發(fā)生的時(shí)候需要迅速的響應(yīng)來(lái)解決問(wèn)題械念,避免故障進(jìn)一步擴(kuò)散,那么對(duì)熔斷的監(jiān)控就變得非常重要运悲。熔斷的監(jiān)控現(xiàn)在有兩款工具:Hystrix-dashboard和Turbine

Hystrix-dashboard是一款針對(duì)Hystrix進(jìn)行實(shí)時(shí)監(jiān)控的工具龄减,通過(guò)Hystrix Dashboard我們可以直觀地看到各Hystrix Command的請(qǐng)求響應(yīng)時(shí)間, 請(qǐng)求成功率等數(shù)據(jù)。但是只使用Hystrix Dashboard的話, 你只能看到單個(gè)應(yīng)用內(nèi)的服務(wù)信息, 這明顯不夠. 我們需要一個(gè)工具能讓我們匯總系統(tǒng)內(nèi)多個(gè)服務(wù)的數(shù)據(jù)并顯示到Hystrix Dashboard上, 這個(gè)工具就是Turbine. 監(jiān)控的效果圖如下:

從架構(gòu)演進(jìn)的角度聊聊Spring Cloud都做了些什么班眯?

想了解具體都監(jiān)控了哪些指標(biāo)希停,以及如何監(jiān)控可以參考這篇文章:熔斷監(jiān)控Hystrix Dashboard和Turbine

配置中心

隨著微服務(wù)不斷的增多,每個(gè)微服務(wù)都有自己對(duì)應(yīng)的配置文件鳖敷。在研發(fā)過(guò)程中有測(cè)試環(huán)境脖苏、UAT環(huán)境、生產(chǎn)環(huán)境定踱,因此每個(gè)微服務(wù)又對(duì)應(yīng)至少三個(gè)不同環(huán)境的配置文件棍潘。這么多的配置文件,如果需要修改某個(gè)公共服務(wù)的配置信息崖媚,如:緩存亦歉、數(shù)據(jù)庫(kù)等,難免會(huì)產(chǎn)生混亂畅哑,這個(gè)時(shí)候就需要引入Spring Cloud另外一個(gè)組件:Spring Cloud Config肴楷。

Spring Cloud Config

Spring Cloud Config是一個(gè)解決分布式系統(tǒng)的配置管理方案。它包含了Client和Server兩個(gè)部分荠呐,Server提供配置文件的存儲(chǔ)赛蔫、以接口的形式將配置文件的內(nèi)容提供出去砂客,Client通過(guò)接口獲取數(shù)據(jù)、并依據(jù)此數(shù)據(jù)初始化自己的應(yīng)用呵恢。

其實(shí)就是Server端將所有的配置文件服務(wù)化鞠值,需要配置文件的服務(wù)實(shí)例去Config Server獲取對(duì)應(yīng)的數(shù)據(jù)。將所有的配置文件統(tǒng)一整理渗钉,避免了配置文件碎片化彤恶。配置中心git實(shí)例參考:配置中心git示例;

如果服務(wù)運(yùn)行期間改變配置文件鳄橘,服務(wù)是不會(huì)得到最新的配置信息声离,需要解決這個(gè)問(wèn)題就需要引入Refresh√绷可以在服務(wù)的運(yùn)行期間重新加載配置文件术徊,具體可以參考這篇文章:配置中心svn示例和refresh

當(dāng)所有的配置文件都存儲(chǔ)在配置中心的時(shí)候,配置中心就成為了一個(gè)非常重要的組件宝磨。如果配置中心出現(xiàn)問(wèn)題將會(huì)導(dǎo)致災(zāi)難性的后果弧关,因此在生產(chǎn)中建議對(duì)配置中心做集群,來(lái)支持配置中心高可用性唤锉。具體參考:配置中心服務(wù)化和高可用

Spring Cloud Bus

上面的Refresh方案雖然可以解決單個(gè)微服務(wù)運(yùn)行期間重載配置信息的問(wèn)題,但是在真正的實(shí)踐生產(chǎn)中别瞭,可能會(huì)有N多的服務(wù)需要更新配置窿祥,如果每次依靠手動(dòng)Refresh將是一個(gè)巨大的工作量,這時(shí)候Spring Cloud提出了另外一個(gè)解決方案:Spring Cloud Bus

Spring Cloud Bus通過(guò)輕量消息代理連接各個(gè)分布的節(jié)點(diǎn)蝙寨。這會(huì)用在廣播狀態(tài)的變化(例如配置變化)或者其它的消息指令中晒衩。Spring Cloud Bus的一個(gè)核心思想是通過(guò)分布式的啟動(dòng)器對(duì)Spring Boot應(yīng)用進(jìn)行擴(kuò)展,也可以用來(lái)建立一個(gè)或多個(gè)應(yīng)用之間的通信頻道墙歪。目前唯一實(shí)現(xiàn)的方式是用AMQP消息代理作為通道听系。

Spring Cloud Bus是輕量級(jí)的通訊組件,也可以用在其它類似的場(chǎng)景中虹菲。有了Spring Cloud Bus之后靠胜,當(dāng)我們改變配置文件提交到版本庫(kù)中時(shí),會(huì)自動(dòng)的觸發(fā)對(duì)應(yīng)實(shí)例的Refresh毕源,具體的工作流程如下:

從架構(gòu)演進(jìn)的角度聊聊Spring Cloud都做了些什么浪漠?

也可以參考這篇文章來(lái)了解:配置中心和消息總線

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

在微服務(wù)架構(gòu)模式下,后端服務(wù)的實(shí)例數(shù)一般是動(dòng)態(tài)的霎褐,對(duì)于客戶端而言很難發(fā)現(xiàn)動(dòng)態(tài)改變的服務(wù)實(shí)例的訪問(wèn)地址信息址愿。因此在基于微服務(wù)的項(xiàng)目中為了簡(jiǎn)化前端的調(diào)用邏輯,通常會(huì)引入API Gateway作為輕量級(jí)網(wǎng)關(guān)冻璃,同時(shí)API Gateway中也會(huì)實(shí)現(xiàn)相關(guān)的認(rèn)證邏輯從而簡(jiǎn)化內(nèi)部服務(wù)之間相互調(diào)用的復(fù)雜度响谓。

從架構(gòu)演進(jìn)的角度聊聊Spring Cloud都做了些什么损合?

Spring Cloud體系中支持API Gateway落地的技術(shù)就是Zuul。Spring Cloud Zuul路由是微服務(wù)架構(gòu)中不可或缺的一部分娘纷,提供動(dòng)態(tài)路由嫁审,監(jiān)控,彈性失驶,安全等的邊緣服務(wù)土居。Zuul是Netflix出品的一個(gè)基于JVM路由和服務(wù)端的負(fù)載均衡器。

它的具體作用就是服務(wù)轉(zhuǎn)發(fā)嬉探,接收并轉(zhuǎn)發(fā)所有內(nèi)外部的客戶端調(diào)用擦耀。使用Zuul可以作為資源的統(tǒng)一訪問(wèn)入口,同時(shí)也可以在網(wǎng)關(guān)做一些權(quán)限校驗(yàn)等類似的功能涩堤。

具體使用參考這篇文章:服務(wù)網(wǎng)關(guān)zuul

鏈路跟蹤

隨著服務(wù)的越來(lái)越多眷蜓,對(duì)調(diào)用鏈的分析會(huì)越來(lái)越復(fù)雜,如服務(wù)之間的調(diào)用關(guān)系胎围、某個(gè)請(qǐng)求對(duì)應(yīng)的調(diào)用鏈吁系、調(diào)用之間消費(fèi)的時(shí)間等,對(duì)這些信息進(jìn)行監(jiān)控就成為一個(gè)問(wèn)題白魂。在實(shí)際的使用中我們需要監(jiān)控服務(wù)和服務(wù)之間通訊的各項(xiàng)指標(biāo)汽纤,這些數(shù)據(jù)將是我們改進(jìn)系統(tǒng)架構(gòu)的主要依據(jù)。因此分布式的鏈路跟蹤就變的非常重要福荸,Spring Cloud也給出了具體的解決方案:Spring Cloud Sleuth和Zipkin

從架構(gòu)演進(jìn)的角度聊聊Spring Cloud都做了些什么蕴坪?

Spring Cloud Sleuth為服務(wù)之間調(diào)用提供鏈路追蹤撕阎。通過(guò)Sleuth可以很清楚的了解到一個(gè)服務(wù)請(qǐng)求經(jīng)過(guò)了哪些服務(wù)卸察,每個(gè)服務(wù)處理花費(fèi)了多長(zhǎng)時(shí)間怨规。從而讓我們可以很方便的理清各微服務(wù)間的調(diào)用關(guān)系骏庸。

Zipkin是Twitter的一個(gè)開(kāi)源項(xiàng)目幸缕,允許開(kāi)發(fā)者收集 Twitter 各個(gè)服務(wù)上的監(jiān)控?cái)?shù)據(jù)腔剂,并提供查詢接口

分布式鏈路跟蹤需要Sleuth+Zipkin結(jié)合來(lái)實(shí)現(xiàn)瘪贱。

總結(jié)

我們從整體上來(lái)看一下Spring Cloud各個(gè)組件如何來(lái)配套使用:

從架構(gòu)演進(jìn)的角度聊聊Spring Cloud都做了些什么纪挎?

從上圖可以看出Spring Cloud各個(gè)組件相互配合颤介,合作支持了一套完整的微服務(wù)架構(gòu)梳星。

  • 其中Eureka負(fù)責(zé)服務(wù)的注冊(cè)與發(fā)現(xiàn),很好將各服務(wù)連接起來(lái)
  • Hystrix 負(fù)責(zé)監(jiān)控服務(wù)之間的調(diào)用情況买窟,連續(xù)多次失敗進(jìn)行熔斷保護(hù)丰泊。
  • Hystrix dashboard,Turbine 負(fù)責(zé)監(jiān)控 Hystrix的熔斷情況,并給予圖形化的展示
  • Spring Cloud Config 提供了統(tǒng)一的配置中心服務(wù)
  • 當(dāng)配置文件發(fā)生變化的時(shí)候始绍,Spring Cloud Bus 負(fù)責(zé)通知各服務(wù)去獲取最新的配置信息
  • 所有對(duì)外的請(qǐng)求和服務(wù)瞳购,我們都通過(guò)Zuul來(lái)進(jìn)行轉(zhuǎn)發(fā),起到API網(wǎng)關(guān)的作用
  • 最后我們使用Sleuth+Zipkin將所有的請(qǐng)求數(shù)據(jù)記錄下來(lái)亏推,方便我們進(jìn)行后續(xù)分析

Spring Cloud從設(shè)計(jì)之初就考慮了絕大多數(shù)互聯(lián)網(wǎng)公司架構(gòu)演化所需的功能学赛,如服務(wù)發(fā)現(xiàn)注冊(cè)年堆、配置中心、消息總線盏浇、負(fù)載均衡变丧、斷路器、數(shù)據(jù)監(jiān)控等绢掰。這些功能都是以插拔的形式提供出來(lái)痒蓬,方便我們系統(tǒng)架構(gòu)演進(jìn)的過(guò)程中,可以合理的選擇需要的組件進(jìn)行集成滴劲,從而在架構(gòu)演進(jìn)的過(guò)程中會(huì)更加平滑攻晒、順利。

微服務(wù)架構(gòu)是一種趨勢(shì)班挖,Spring Cloud提供了標(biāo)準(zhǔn)化的鲁捏、全站式的技術(shù)方案,意義可能會(huì)堪比當(dāng)前Servlet規(guī)范的誕生萧芙,有效推進(jìn)服務(wù)端軟件系統(tǒng)技術(shù)水平的進(jìn)步给梅。

歡迎工作一到五年的Java工程師朋友們加入Java架構(gòu)開(kāi)發(fā):810589193
群內(nèi)提供免費(fèi)的Java架構(gòu)學(xué)習(xí)資料(里面有高可用、高并發(fā)双揪、高性能及分布式动羽、Jvm性能調(diào)優(yōu)、Spring源碼渔期,MyBatis曹质,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識(shí)點(diǎn)的架構(gòu)資料)合理利用自己每一分每一秒的時(shí)間來(lái)學(xué)習(xí)提升自己,不要再用"沒(méi)有時(shí)間“來(lái)掩飾自己思想上的懶惰擎场!趁年輕,使勁拼几莽,給未來(lái)的自己一個(gè)交代

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末迅办,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子章蚣,更是在濱河造成了極大的恐慌站欺,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纤垂,死亡現(xiàn)場(chǎng)離奇詭異矾策,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)峭沦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門贾虽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人吼鱼,你說(shuō)我怎么就攤上這事蓬豁〈卵剩” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵地粪,是天一觀的道長(zhǎng)取募。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蟆技,這世上最難降的妖魔是什么玩敏? 我笑而不...
    開(kāi)封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮质礼,結(jié)果婚禮上旺聚,老公的妹妹穿的比我還像新娘。我一直安慰自己几苍,他們只是感情好翻屈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著妻坝,像睡著了一般伸眶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刽宪,一...
    開(kāi)封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天厘贼,我揣著相機(jī)與錄音,去河邊找鬼圣拄。 笑死嘴秸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的庇谆。 我是一名探鬼主播岳掐,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼饭耳!你這毒婦竟也來(lái)了串述?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寞肖,失蹤者是張志新(化名)和其女友劉穎纲酗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體新蟆,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡觅赊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了琼稻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吮螺。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出规脸,到底是詐尸還是另有隱情坯约,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布莫鸭,位于F島的核電站闹丐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏被因。R本人自食惡果不足惜卿拴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望梨与。 院中可真熱鬧堕花,春花似錦、人聲如沸粥鞋。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)呻粹。三九已至壕曼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間等浊,已是汗流浹背腮郊。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筹燕,地道東北人轧飞。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像撒踪,于是被迫代替她去往敵國(guó)和親过咬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

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