聽(tīng)聽(tīng)【八年阿里架構(gòu)師】怎樣講述Dubbo和Spring Cloud微服務(wù)架構(gòu)

微服務(wù)架構(gòu)是互聯(lián)網(wǎng)很熱門(mén)的話題魂那,是互聯(lián)網(wǎng)技術(shù)發(fā)展的必然結(jié)果六敬。它提倡將單一應(yīng)用程序劃分成一組小的服務(wù)诡右,服務(wù)之間互相協(xié)調(diào)安岂、互相配合,為用戶提供最終價(jià)值稻爬。雖然微服務(wù)架構(gòu)沒(méi)有公認(rèn)的技術(shù)標(biāo)準(zhǔn)和規(guī)范或者草案嗜闻,但業(yè)界已經(jīng)有一些很有影響力的開(kāi)源微服務(wù)架構(gòu)框架提供了微服務(wù)的關(guān)鍵思路,例如Dubbo和Spring Cloud桅锄。各大互聯(lián)網(wǎng)公司也有自研的微服務(wù)框架琉雳,但其模式都于這二者相差不大。

微服務(wù)主要的優(yōu)勢(shì)如下:

1友瘤、降低復(fù)雜度

將原來(lái)偶合在一起的復(fù)雜業(yè)務(wù)拆分為單個(gè)服務(wù)翠肘,規(guī)避了原本復(fù)雜度無(wú)止境的積累。每一個(gè)微服務(wù)專(zhuān)注于單一功能辫秧,并通過(guò)定義良好的接口清晰表述服務(wù)邊界束倍。每個(gè)服務(wù)開(kāi)發(fā)者只專(zhuān)注服務(wù)本身,通過(guò)使用緩存、DAL等各種技術(shù)手段來(lái)提升系統(tǒng)的性能绪妹,而對(duì)于消費(fèi)方來(lái)說(shuō)完全透明甥桂。

2、可獨(dú)立部署

由于微服務(wù)具備獨(dú)立的運(yùn)行進(jìn)程邮旷,所以每個(gè)微服務(wù)可以獨(dú)立部署黄选。當(dāng)業(yè)務(wù)迭代時(shí)只需要發(fā)布相關(guān)服務(wù)的迭代即可,降低了測(cè)試的工作量同時(shí)也降低了服務(wù)發(fā)布的風(fēng)險(xiǎn)婶肩。

3办陷、容錯(cuò)

在微服務(wù)架構(gòu)下,當(dāng)某一組件發(fā)生故障時(shí)律歼,故障會(huì)被隔離在單個(gè)服務(wù)中民镜。 通過(guò)限流、熔斷等方式降低錯(cuò)誤導(dǎo)致的危害险毁,保障核心業(yè)務(wù)正常運(yùn)行制圈。

4、擴(kuò)展

單塊架構(gòu)應(yīng)用也可以實(shí)現(xiàn)橫向擴(kuò)展辱揭,就是將整個(gè)應(yīng)用完整的復(fù)制到不同的節(jié)點(diǎn)离唐。當(dāng)應(yīng)用的不同組件在擴(kuò)展需求上存在差異時(shí),微服務(wù)架構(gòu)便體現(xiàn)出其靈活性问窃,因?yàn)槊總€(gè)服務(wù)可以根據(jù)實(shí)際需求獨(dú)立進(jìn)行擴(kuò)展亥鬓。

本文主要圍繞微服務(wù)的技術(shù)選型、通訊協(xié)議域庇、服務(wù)依賴(lài)模式嵌戈、開(kāi)始模式、運(yùn)行模式等幾方面來(lái)綜合比較Dubbo和Spring Cloud 這2種開(kāi)發(fā)框架听皿。架構(gòu)師可以根據(jù)公司的技術(shù)實(shí)力并結(jié)合項(xiàng)目的特點(diǎn)來(lái)選擇某個(gè)合適的微服務(wù)架構(gòu)平臺(tái)熟呛,以此穩(wěn)妥地實(shí)施項(xiàng)目的微服務(wù)化改造或開(kāi)發(fā)進(jìn)程。

一尉姨、核心部件微服務(wù)的核心要素在于服務(wù)的發(fā)現(xiàn)庵朝、注冊(cè)、路由又厉、熔斷九府、降級(jí)、分布式配置覆致,基于上述幾種必要條件對(duì)Dubbo和Spring Cloud做出對(duì)比侄旬。

1、總體架構(gòu)

Dubbo 核心部件(如下圖):

Provider: 暴露服務(wù)的提供方煌妈,可以通過(guò)jar或者容器的方式啟動(dòng)服務(wù)

Consumer:調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方儡羔。

Registry: 服務(wù)注冊(cè)中心和發(fā)現(xiàn)中心宣羊。

Monitor: 統(tǒng)計(jì)服務(wù)和調(diào)用次數(shù),調(diào)用時(shí)間監(jiān)控中心汰蜘。(dubbo的控制臺(tái)頁(yè)面中可以顯示仇冯,目前只有一個(gè)簡(jiǎn)單版本)

Container:服務(wù)運(yùn)行的容器。

▲Dubbo 總體架構(gòu)

Spring Cloud總體架構(gòu)如下圖

Service Provider: 暴露服務(wù)的提供方鉴扫。

Service Consumer:調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方赞枕。

EureKa Server: 服務(wù)注冊(cè)中心和服務(wù)發(fā)現(xiàn)中心澈缺。

▲Spring Cloud總體架構(gòu)

點(diǎn)評(píng):從整體架構(gòu)上來(lái)看坪创,二者模式接近,都需要需要服務(wù)提供方姐赡,注冊(cè)中心莱预,服務(wù)消費(fèi)方。

2项滑、微服務(wù)架構(gòu)核心要素

Dubbo只是實(shí)現(xiàn)了服務(wù)治理依沮,而Spring Cloud子項(xiàng)目分別覆蓋了微服務(wù)架構(gòu)下的眾多部件,而服務(wù)治理只是其中的一個(gè)方面枪狂。Dubbo提供了各種Filter危喉,對(duì)于上述中“無(wú)”的要素,可以通過(guò)擴(kuò)展Filter來(lái)完善州疾。

例如

1.分布式配置:可以使用淘寶的diamond、百度的disconf來(lái)實(shí)現(xiàn)分布式配置管理

2.服務(wù)跟蹤:可以使用京東開(kāi)源的Hydra,或者擴(kuò)展Filter用Zippin來(lái)做服務(wù)跟蹤

3.批量任務(wù):可以使用當(dāng)當(dāng)開(kāi)源的Elastic-Job预吆、tbschedule

點(diǎn)評(píng):從核心要素來(lái)看饥努,Spring Cloud 更勝一籌,在開(kāi)發(fā)過(guò)程中只要整合Spring Cloud的子項(xiàng)目就可以順利的完成各種組件的融合颗胡,而Dubbo缺需要通過(guò)實(shí)現(xiàn)各種Filter來(lái)做定制毫深,開(kāi)發(fā)成本以及技術(shù)難度略高。

二毒姨、通訊協(xié)議

基于通訊協(xié)議層面對(duì)2種框架支持的協(xié)議類(lèi)型以及運(yùn)行效率方面進(jìn)行比較哑蔫;

(一)、支持協(xié)議

1弧呐、Dubbo:dubbo使用RPC通訊協(xié)議闸迷,提供序列化方式如下:

dubbo:Dubbo缺省協(xié)議采用單一長(zhǎng)連接和NIO異步通訊,適合于小數(shù)據(jù)量大并發(fā)的服務(wù)調(diào)用泉懦,以及服務(wù)消費(fèi)者機(jī)器數(shù)遠(yuǎn)大于服務(wù)提供者機(jī)器數(shù)的情況

rmi:RMI協(xié)議采用JDK標(biāo)準(zhǔn)的java.rmi.*實(shí)現(xiàn)稿黍,采用阻塞式短連接和JDK標(biāo)準(zhǔn)序列化方式

Hessian:Hessian協(xié)議用于集成Hessian的服務(wù),Hessian底層采用Http通訊崩哩,采用Servlet暴露服務(wù)巡球,Dubbo缺省內(nèi)嵌Jetty作為服務(wù)器實(shí)現(xiàn)

http:采用Spring的HttpInvoker實(shí)現(xiàn)

Webservice:基于CXF的frontend-simple和transports-http實(shí)現(xiàn)

2言沐、Spring Cloud:Spring Cloud 使用HTTP協(xié)議的REST API

(二)、性能比較

使用一個(gè)Pojo對(duì)象包含10個(gè)屬性酣栈,請(qǐng)求10萬(wàn)次险胰,Dubbo和Spring Cloud在不同的線程數(shù)量下,每次請(qǐng)求耗時(shí)(ms)如下:

說(shuō)明:客戶端和服務(wù)端配置均采用阿里云的ECS服務(wù)器矿筝,4核8G配置起便,dubbo采用默認(rèn)的dubbo協(xié)議

點(diǎn)評(píng):dubbo支持各種通信協(xié)議,而且消費(fèi)方和服務(wù)方使用長(zhǎng)鏈接方式交互窖维,通信速度上略勝Spring Cloud榆综,如果對(duì)于系統(tǒng)的響應(yīng)時(shí)間有嚴(yán)格要求,長(zhǎng)鏈接更合適铸史。

三鼻疮、服務(wù)依賴(lài)方式

Dubbo:服務(wù)提供方與消費(fèi)方通過(guò)接口的方式依賴(lài),服務(wù)調(diào)用設(shè)計(jì)如下:

interface層:服務(wù)接口層琳轿,定義了服務(wù)對(duì)外提供的所有接口

Molel層:服務(wù)的DTO對(duì)象層判沟,

business層:業(yè)務(wù)實(shí)現(xiàn)層,實(shí)現(xiàn)interface接口并且和DB交互

因此需要為每個(gè)微服務(wù)定義了各自的interface接口崭篡,并通過(guò)持續(xù)集成發(fā)布到私有倉(cāng)庫(kù)中挪哄,調(diào)用方應(yīng)用對(duì)微服務(wù)提供的抽象接口存在強(qiáng)依賴(lài)關(guān)系,開(kāi)發(fā)琉闪、測(cè)試迹炼、集成環(huán)境都需要嚴(yán)格的管理版本依賴(lài)。如果想免費(fèi)學(xué)習(xí)Java工程化塘偎、高性能及分布式疗涉、深入淺出。微服務(wù)吟秩、Spring咱扣,MyBatis,Netty源碼分析的朋友可以加我的Java進(jìn)階群650385180涵防,群里有阿里大牛直播講解技術(shù)闹伪,以及Java大型互聯(lián)網(wǎng)技術(shù)的視頻免費(fèi)分享給大家。

通過(guò)maven的install & deploy命令把interface和Model層發(fā)布到倉(cāng)庫(kù)中壮池,服務(wù)調(diào)用方只需要依賴(lài)interface和model層即可厅克。在開(kāi)發(fā)調(diào)試階段只發(fā)布Snapshot版本。等到服務(wù)調(diào)試完成再發(fā)布Release版本漆枚,通過(guò)版本號(hào)來(lái)區(qū)分每次迭代的版本刷喜。通過(guò)xml配置方式即可方面接入dubbo痘拆,對(duì)程序無(wú)入侵吐葵。

▲Dubbo接口依賴(lài)方式

Spring Cloud:服務(wù)提供方和服務(wù)消費(fèi)方通過(guò)json方式交互凤藏,因此只需要定義好相關(guān)json字段即可栗菜,消費(fèi)方和提供方無(wú)接口依賴(lài)禁炒。通過(guò)注解方式來(lái)實(shí)現(xiàn)服務(wù)配置,對(duì)于程序有一定入侵阁危。

點(diǎn)評(píng):Dubbo服務(wù)依賴(lài)略重混弥,需要有完善的版本管理機(jī)制,但是程序入侵少。而Spring Cloud通過(guò)Json交互,省略了版本管理的問(wèn)題添坊,但是具體字段含義需要統(tǒng)一管理,自身Rest API方式交互,為跨平臺(tái)調(diào)用奠定了基礎(chǔ)。

四、組件運(yùn)行流程

下圖中的每個(gè)組件都是需要部署在單獨(dú)的服務(wù)器上澜躺,gateway用來(lái)接受前端請(qǐng)求、聚合服務(wù)撞秋,并批量調(diào)用后臺(tái)原子服務(wù)串结。每個(gè)service層和單獨(dú)的DB交互。

Dubbo組件運(yùn)行流程

gateWay:前置網(wǎng)關(guān)舅列,具體業(yè)務(wù)操作肌割,gateWay通過(guò)dubbo提供的負(fù)載均衡機(jī)制自動(dòng)完成

Service:原子服務(wù),只提供該業(yè)務(wù)相關(guān)的原子服務(wù)

Zookeeper:原子服務(wù)注冊(cè)到zk上

Spring Cloud 組件運(yùn)行

Spring Cloud

所有請(qǐng)求都統(tǒng)一通過(guò) API 網(wǎng)關(guān)(Zuul)來(lái)訪問(wèn)內(nèi)部服務(wù)剧蹂。

網(wǎng)關(guān)接收到請(qǐng)求后声功,從注冊(cè)中心(Eureka)獲取可用服務(wù)。

由 Ribbon 進(jìn)行均衡負(fù)載后宠叼,分發(fā)到后端的具體實(shí)例。

微服務(wù)之間通過(guò) Feign 進(jìn)行通信處理業(yè)務(wù)其爵。

點(diǎn)評(píng):業(yè)務(wù)部署方式相同冒冬,都需要前置一個(gè)網(wǎng)關(guān)來(lái)隔絕外部直接調(diào)用原子服務(wù)的風(fēng)險(xiǎn)。Dubbo需要自己開(kāi)發(fā)一套API 網(wǎng)關(guān)摩渺,而Spring Cloud則可以通過(guò)Zuul配置即可完成網(wǎng)關(guān)定制简烤。使用方式上Spring Cloud略勝一籌。

五摇幻、微服務(wù)架構(gòu)組成以及注意事項(xiàng)

到底使用是dubbo還是Spring Cloud其實(shí)并不重要横侦,重點(diǎn)在于如何合理的利用微服務(wù)。下面是一張互聯(lián)網(wǎng)通用的架構(gòu)圖,其中每個(gè)環(huán)節(jié)都是微服務(wù)的核心部分绰姻。

(一)枉侧、架構(gòu)分解

網(wǎng)關(guān)集群:數(shù)據(jù)的聚合、實(shí)現(xiàn)對(duì)接入客戶端的身份認(rèn)證狂芋、防報(bào)文重放與防數(shù)據(jù)篡改榨馁、功能調(diào)用的業(yè)務(wù)鑒權(quán)、響應(yīng)數(shù)據(jù)的脫敏帜矾、流量與并發(fā)控制等

業(yè)務(wù)集群:一般情況下移動(dòng)端訪問(wèn)和瀏覽器訪問(wèn)的網(wǎng)關(guān)需要隔離翼虫,防止業(yè)務(wù)耦合

Local Cache:由于客戶端訪問(wèn)業(yè)務(wù)可能需要調(diào)用多個(gè)服務(wù)聚合屑柔,所以本地緩存有效的降低了服務(wù)調(diào)用的頻次,同時(shí)也提示了訪問(wèn)速度珍剑。本地緩存一般使用自動(dòng)過(guò)期方式掸宛,業(yè)務(wù)場(chǎng)景中允許有一定的數(shù)據(jù)延時(shí)。

服務(wù)層:原子服務(wù)層招拙,實(shí)現(xiàn)基礎(chǔ)的增刪改查功能唧瘾,如果需要依賴(lài)其他服務(wù)需要在Service層主動(dòng)調(diào)用

Remote Cache:訪問(wèn)DB前置一層分布式緩存,減少DB交互次數(shù)迫像,提升系統(tǒng)的TPS

DAL:數(shù)據(jù)訪問(wèn)層劈愚,如果單表數(shù)據(jù)量過(guò)大則需要通過(guò)DAL層做數(shù)據(jù)的分庫(kù)分表處理。

MQ:消息隊(duì)列用來(lái)解耦服務(wù)之間的依賴(lài)闻妓,異步調(diào)用可以通過(guò)MQ的方式來(lái)執(zhí)行

數(shù)據(jù)庫(kù)主從:服務(wù)化過(guò)程中畢竟的階段菌羽,用來(lái)提升系統(tǒng)的TPS

(二)注意事項(xiàng)

服務(wù)啟動(dòng)方式建議使用jar方式啟動(dòng),啟動(dòng)速度快由缆,更容易監(jiān)控

緩存注祖、緩存、緩存均唉,系統(tǒng)中能使用緩存的地方盡量使用緩存是晨,通過(guò)合理的使用緩存可以有效的提高系統(tǒng)的TPS

服務(wù)拆分要合理,盡量避免因服務(wù)拆分而導(dǎo)致的服務(wù)循環(huán)依賴(lài)

合理的設(shè)置線程池舔箭,避免設(shè)置過(guò)大或者過(guò)小導(dǎo)致系統(tǒng)異常

六罩缴、總結(jié)

Dubbo出生于阿里系,是阿里巴巴服務(wù)化治理的核心框架层扶,并被廣泛應(yīng)用于中國(guó)各互聯(lián)網(wǎng)公司箫章;只需要通過(guò)spring配置的方式即可完成服務(wù)化,對(duì)于應(yīng)用無(wú)入侵镜会。設(shè)計(jì)的目的還是服務(wù)于自身的業(yè)務(wù)為主檬寂。雖然阿里內(nèi)部原因dubbo曾經(jīng)一度暫停維護(hù)版本,但是框架本身的成熟度以及文檔的完善程度戳表,完全能滿足各大互聯(lián)網(wǎng)公司的業(yè)務(wù)需求桶至。如果我們需要使用配置中心、分布式跟蹤這些內(nèi)容都需要自己去集成匾旭,這樣無(wú)形中增加了使用 Dubbo 的難度镣屹。

Spring Cloud 是大名鼎鼎的 Spring 家族的產(chǎn)品, 專(zhuān)注于企業(yè)級(jí)開(kāi)源框架的研發(fā)季率。 Spring Cloud 自從發(fā)展到現(xiàn)在野瘦,仍然在不斷的高速發(fā)展,幾乎考慮了服務(wù)治理的方方面面,開(kāi)發(fā)起來(lái)非常的便利和簡(jiǎn)單鞭光。

Dubbo于2017年開(kāi)始又重啟維護(hù)吏廉,發(fā)布了更新后的2.5.6版本,而Spring Cloud更新的非扯栊恚快席覆,目前已經(jīng)更新到Finchley.M2。因此汹买,企業(yè)需要根據(jù)自身的研發(fā)水平和所處階段選擇合適的架構(gòu)來(lái)解決業(yè)務(wù)問(wèn)題佩伤,不管是Dubbo還是Spring Cloud都是實(shí)現(xiàn)微服務(wù)有效的工具。

感謝你耐心看完了文章晦毙!獲取以上資料請(qǐng)加qq群號(hào):897889510 里面會(huì)分享一些資深架構(gòu)師錄制的視頻錄像:有Spring生巡,MyBatis,Netty源碼分析见妒,高并發(fā)孤荣、高性能、分布式须揣、微服務(wù)架構(gòu)的原理盐股,JVM性能優(yōu)化、分布式架構(gòu)等這些成為架構(gòu)師必備的知識(shí)體系耻卡。還能領(lǐng)取免費(fèi)的學(xué)習(xí)資源疯汁,目前受益良多!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卵酪,一起剝皮案震驚了整個(gè)濱河市幌蚊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌溃卡,老刑警劉巖霹肝,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異塑煎,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)臭蚁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)最铁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人垮兑,你說(shuō)我怎么就攤上這事冷尉。” “怎么了系枪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵雀哨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)雾棺,這世上最難降的妖魔是什么膊夹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮捌浩,結(jié)果婚禮上放刨,老公的妹妹穿的比我還像新娘。我一直安慰自己尸饺,他們只是感情好进统,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著浪听,像睡著了一般螟碎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迹栓,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天掉分,我揣著相機(jī)與錄音,去河邊找鬼迈螟。 笑死叉抡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的答毫。 我是一名探鬼主播褥民,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼洗搂!你這毒婦竟也來(lái)了消返?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤耘拇,失蹤者是張志新(化名)和其女友劉穎撵颊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體惫叛,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡倡勇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘉涌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妻熊。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖仑最,靈堂內(nèi)的尸體忽然破棺而出扔役,到底是詐尸還是另有隱情,我是刑警寧澤警医,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布亿胸,位于F島的核電站坯钦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏侈玄。R本人自食惡果不足惜婉刀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拗馒。 院中可真熱鬧路星,春花似錦、人聲如沸诱桂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)挥等。三九已至友绝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肝劲,已是汗流浹背迁客。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辞槐,地道東北人掷漱。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像榄檬,于是被迫代替她去往敵國(guó)和親卜范。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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

  • 微服務(wù)架構(gòu)是互聯(lián)網(wǎng)很熱門(mén)的話題鹿榜,是互聯(lián)網(wǎng)技術(shù)發(fā)展的必然結(jié)果海雪。它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)...
    java高級(jí)分享閱讀 1,261評(píng)論 0 8
  • 微服務(wù)架構(gòu)是互聯(lián)網(wǎng)很熱門(mén)的話題舱殿,是互聯(lián)網(wǎng)技術(shù)發(fā)展的必然結(jié)果奥裸。它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)...
    Java小鋪閱讀 584評(píng)論 0 12
  • 這個(gè)短暫而愉快的假期馬上就要結(jié)束了沪袭,美好的時(shí)光總是很短暫湾宙。而在這個(gè)假期里,我收獲了什么呢冈绊?接下來(lái)就讓我們看看吧创倔。 ...
    薛淏文閱讀 148評(píng)論 1 1
  • 誠(chéng)實(shí)是做人最基本的要求,只有誠(chéng)實(shí)守信了別人才會(huì)相信你焚碌,不放棄你。誠(chéng)實(shí)的品性比黃珍更珍貴霸妹,有這樣一個(gè)小故事很...
    李璐冰閱讀 323評(píng)論 0 1
  • 第一回 啤酒沒(méi)了 老林趿拉著鞋走在路上十电,手里拎著個(gè)白色塑料袋,袋子里裝著剛才在家吃剩的燉羊骨頭,打算拿下來(lái)喂...
    崢西閱讀 381評(píng)論 0 3