Java微服務(wù)新生代之Nacos

前言

從 2017 年底 Java 開(kāi)發(fā)領(lǐng)域使用最廣的 RPC 框架 Dubbo 開(kāi)啟重新更新維護(hù)之路開(kāi)始抖韩,阿里巴巴為打造 Dubbo 微服務(wù)生態(tài)持續(xù)開(kāi)源了 Sentinel扯罐,NacosSeata 等微服務(wù)中間件框架,并且推出了 Spring Cloud Alibaba 來(lái)提供微服務(wù)開(kāi)發(fā)的一站式解決方案稍走,阿里巴巴在 Java 社區(qū)持續(xù)活躍起來(lái),也為 Java 微服務(wù)開(kāi)發(fā)注入了新的活力。

本篇文章將重點(diǎn)學(xué)習(xí)微服務(wù)組件 Nacos 作為注冊(cè)中心的功能和用法誊役,Nacos 是阿里巴巴于 2018 年 7 月份新開(kāi)源的項(xiàng)目获列。

關(guān)于 Nacos 名字:前四個(gè)字母分別為 Naming 和 Configuration 的前兩個(gè)字母,最后的 s 為Service蛔垢。

本文主要內(nèi)容涉及如下:

  • Nacos 基本介紹
  • 為什么使用 Nacos
  • 最新版本 Nacos 與 Rest/Dubbo 服務(wù)的注冊(cè)與發(fā)現(xiàn)集成

關(guān)于 Nacos /nɑ:k??s/

一個(gè)更易于構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)击孩、配置管理和服務(wù)管理平臺(tái)。

上面這句話(huà)摘自 Nacos 官方首頁(yè)鹏漆,是對(duì) Nacos 整體功能的總結(jié)巩梢。

簡(jiǎn)單來(lái)說(shuō) Nacos 就是注冊(cè)中心 + 配置中心的組合,提供簡(jiǎn)單易用的特性集艺玲,幫助我們解決微服務(wù)開(kāi)發(fā)必會(huì)涉及到的服務(wù)注冊(cè)與發(fā)現(xiàn)涡上,服務(wù)配置似谁,服務(wù)管理等問(wèn)題。Nacos 還是 Spring Cloud Alibaba 組件之一,負(fù)責(zé)服務(wù)注冊(cè)與發(fā)現(xiàn)堵腹。

首先來(lái)看下官方對(duì) Nacos 的特性描述:

  • 服務(wù)發(fā)現(xiàn)和服務(wù)健康監(jiān)測(cè)
  • 動(dòng)態(tài)配置服務(wù)
  • 動(dòng)態(tài) DNS 服務(wù)
  • 服務(wù)及其元數(shù)據(jù)管理
  • 不斷新增...

可以發(fā)現(xiàn)所有特性都離不開(kāi)服務(wù)這一詞,服務(wù) (Service) 是 Nacos 世界中的一等公民峡眶,說(shuō)明了服務(wù)是 Nacos 中最主要的角色覆山。

為什么是 Nacos

現(xiàn)在的微服務(wù)生態(tài)中,已經(jīng)有很多服務(wù)注冊(cè)與發(fā)現(xiàn)的開(kāi)源組件端幼,如 Eurka礼烈,ZooKeeper,Consul婆跑,為什么還要用 Nacos 呢此熬,我們看下這些框架的簡(jiǎn)單對(duì)比:

服務(wù)注冊(cè)與發(fā)現(xiàn)框架 CAP 模型 控制臺(tái)管理 社區(qū)活躍度
Eureka AP 支持 低 (2.x 版本閉源)
Zookeeper CP 不支持
Consul CP 支持
Nacos AP 支持

據(jù)說(shuō) Nacos 在阿里巴巴內(nèi)部有超過(guò) 10 萬(wàn)的實(shí)例運(yùn)行,已經(jīng)過(guò)了類(lèi)似雙十一等各種大型流量的考驗(yàn)滑进。

相比之下犀忱,目前的 Nacos 無(wú)論是部署扶关,還是使用上都簡(jiǎn)單上手阴汇,更重要的是文檔資料齊全,社區(qū)活躍度高节槐。

并且 Nacos 與目前主流的開(kāi)源生態(tài)都提供了很好的支持:

  • Nacos 是專(zhuān)為 Dubbo 而生的注冊(cè)中心與配置中心
  • Nacos 會(huì)完全兼容 Spring Cloud
  • Nacos 支持 Service Mesh 集成搀庶,Kubernetes 集成

除此之外,阿里巴巴正在通過(guò) Dubbo + Nacos 以及一系列開(kāi)源項(xiàng)目打造服務(wù)發(fā)現(xiàn)铜异、服務(wù)及流量管理哥倔、服務(wù)共享平臺(tái),未來(lái)還在不斷地發(fā)展和演進(jìn),相信未來(lái)會(huì)有更多的地方上使用 Nacos揍庄。

Nacos 實(shí)戰(zhàn)

單機(jī)部署

準(zhǔn)備環(huán)境

Nacos 依賴(lài) Java 環(huán)境來(lái)運(yùn)行咆蒿,并且需要對(duì) Nacos 代碼構(gòu)建生成可執(zhí)行程序時(shí),還要有 Maven 環(huán)境,所以部署前需要保證環(huán)境要求:

  • 64 bit OS沃测,支持 Linux/Unix/Mac/Windows缭黔,推薦選用 Linux/Unix/Mac。
  • 64 bit JDK 1.8+
  • Maven 3.2.x+

下載安裝

下載

當(dāng)前最新的 Nacos 版本為 1.0.1蒂破,Maven 方式打包后會(huì)在當(dāng)前目錄 distribution/target 下生成兩個(gè)壓縮包 nacos-server-1.0.1.tar.gznacos-server-1.0.1.zip试浙,任意解壓一個(gè)使用即可。

解壓運(yùn)行

解壓

這里 Nacos 單機(jī)部署方式使用命令 -m standalone 寞蚌,如果是 Windows 命令田巴,可以直接雙擊 startup.cmd 文件即可。

運(yùn)行

當(dāng)控制臺(tái)出現(xiàn) Nacos 字母挟秤,并且出現(xiàn) Nacos started successfully in stand alone mode 提示時(shí)就說(shuō)明了 Nacos 服務(wù)端啟動(dòng)成功壹哺,控制臺(tái)上也直接給出了當(dāng)前可訪(fǎng)問(wèn)的 Nacos 控制臺(tái)地址 http://{ip}:8848/nacos/index.html,點(diǎn)擊就進(jìn)入了 Nacos 的可視化管理界面艘刚,需要賬號(hào)密碼登錄訪(fǎng)問(wèn)管宵,默認(rèn)都為 nacos

image-20190616001254325

登錄之后就能在網(wǎng)站側(cè)邊欄上看到 Nacos 的主要功能菜單:配置管理攀甚,服務(wù)管理箩朴,集群管理,命名空間秋度。對(duì)于服務(wù)注冊(cè)與發(fā)現(xiàn)功能來(lái)說(shuō)炸庞,我們只要看關(guān)注服務(wù)管理即可。

image-20190616001603599

服務(wù)管理下目前只有一個(gè)名為服務(wù)列表的子菜單荚斯,展示的內(nèi)容也比較簡(jiǎn)單埠居,包含服務(wù)名稱(chēng),組別事期,集群數(shù)目滥壕,總的實(shí)例數(shù),運(yùn)行中的實(shí)例數(shù)兽泣。

image-20190616001806599

當(dāng)有新的服務(wù)通過(guò) Nacos 客戶(hù)端注冊(cè)到 Nacos 上時(shí)列表項(xiàng)就會(huì)增加绎橘,我們還可以通過(guò)操作欄的按鈕進(jìn)行對(duì)服務(wù)的詳情查看和編輯。

集群部署

相比 Nacos 簡(jiǎn)單的單機(jī)部署唠倦,集群部署方式稍微麻煩一些称鳞,跟著官方文檔走還是有點(diǎn)小坑,還需要自己額外的調(diào)整牵敷。 為了用于生產(chǎn)環(huán)境胡岔,必須確保 Nacos 的高可用法希,所以還是有必要實(shí)踐下集群部署的操作枷餐。

準(zhǔn)備環(huán)境跟單機(jī)部署相同,額外的要求就是 Nacos 需要 3 個(gè)或 3 個(gè)以上 Nacos 節(jié)點(diǎn)構(gòu)成集群苫亦,并且使用 MySQL 作為數(shù)據(jù)源毛肋,主要用于服務(wù)配置的數(shù)據(jù)持久化怨咪。

我們先看下官方推薦的集群部署架構(gòu)圖,通過(guò)域名方式反向代理如 Nginx 來(lái)負(fù)載多個(gè) Nacos 節(jié)點(diǎn) IP润匙,外部客戶(hù)端直接通過(guò)域名訪(fǎng)問(wèn)就可诗眨,不僅可讀性好,而且更換 IP 方便孕讳,最為推薦采用匠楚。

deployDnsVipMode.jpg

添加集群配置文件

在每個(gè) Nacos 節(jié)點(diǎn)的conf目錄下,添加配置文件 cluster.conf厂财,可以參考相同目錄下的 cluster.conf.example 文件芋簿,每行配置一個(gè)節(jié)點(diǎn)的 IP 和端口,如 ip:port

image

注意:配置文件中不能使用 127.0.0.1 或者localhost 璃饱,需要真實(shí) IP 或者域名与斤,否則啟動(dòng)后服務(wù)無(wú)法注冊(cè)到該集群節(jié)點(diǎn)上, 詳見(jiàn)NACOS ISSUE #1189

配置 MySQL 數(shù)據(jù)庫(kù)

Nacos 推薦生產(chǎn)環(huán)境中數(shù)據(jù)庫(kù)使用建議至少主備模式荚恶,或者采用高可用數(shù)據(jù)庫(kù)撩穿。

這里為了簡(jiǎn)化只采用了一個(gè)數(shù)據(jù)庫(kù)。首先新建一個(gè)名為 nacos_config 的數(shù)據(jù)庫(kù)谒撼,使用提供的 sql 語(yǔ)句源文件 導(dǎo)入初始數(shù)據(jù)食寡。

image-20190616003609656

然后在每個(gè) Nacos 節(jié)點(diǎn)的配置文件 conf/application.properties 里添加數(shù)據(jù)庫(kù)連接配置:

application

最后以集群模式分別啟動(dòng)每個(gè)節(jié)點(diǎn),并且默認(rèn)為后臺(tái)啟動(dòng)廓潜,啟動(dòng)信息需要從 logs/logs/start.out日志文件中獲取冻河。

start.out

當(dāng)日志文件最后出現(xiàn) Nacos started successfully in cluster mode. 一行時(shí),即說(shuō)明集群模式下 Nacos 啟動(dòng)成功茉帅。這時(shí)叨叙,我們也可以通過(guò)登錄任一個(gè) Nacos 控制臺(tái)的集群管理界面看到節(jié)點(diǎn)的信息。

image-20190616015114761

可以從上面看到堪澎,集群下的 Nacos 節(jié)點(diǎn)狀態(tài)分為 FOLLOWER 擂错,LEADER 兩種,跟我們熟悉的主從架構(gòu)相似樱蛤。

到這里钮呀,我們集群方式的搭建也完成了。接下我們就來(lái)看下如何使用 Nacos 進(jìn)行服務(wù)注冊(cè)和發(fā)現(xiàn)吧昨凡。

實(shí)現(xiàn)服務(wù)的注冊(cè)與發(fā)現(xiàn)

Rest 服務(wù)的注冊(cè)與發(fā)現(xiàn)

服務(wù)提供者創(chuàng)建

創(chuàng)建一個(gè)子項(xiàng)目工程名為 rest-provider 的服務(wù)提供者項(xiàng)目爽醋,pom.xml 配置如下:

rest-provider

注意這里的 spring-cloud-starter-alibaba-nacos-discovery 版本為 0.9.0,采用的是 Nacos 1.0.0 版本的客戶(hù)端便脊,而對(duì)應(yīng) Spring Boot 版本需要為 2.1.x.RELEASE 版本蚂四, 更多版本對(duì)應(yīng)關(guān)系參考:版本說(shuō)明 Wiki

image-20190616105233354

因此我們使用 Spring Cloud Alibaba 最新版本 0.9.0.RELEASE,對(duì)應(yīng) Spring Cloud Greenwich 版本,父 Maven 項(xiàng)目 POM 配置需要添加如下依賴(lài)管理:

pom

依賴(lài)添加之后,在引導(dǎo)類(lèi)中實(shí)現(xiàn)一個(gè) Rest 請(qǐng)求方法 /echo遂赠,并且通過(guò) @EnableDiscoveryClient 注解表明是一個(gè) Nacos 客戶(hù)端久妆,而該注解是 Spring Cloud 提供的原生注解,就算切換成 Eureka 作為注冊(cè)中心也是用這個(gè)注解跷睦。

引導(dǎo)類(lèi)

修改子項(xiàng)目配置文件 application.properties

application
  • spring.application.name 聲明了服務(wù)名稱(chēng)
  • spring.cloud.nacos.discovery.server-addr 指定了 Nacos 注冊(cè)中心地址

Nacos Starter 更多配置項(xiàng)信息可以參考 Spring Cloud Alibaba Nacos Discovery

然后通過(guò)引導(dǎo)類(lèi) RestProviderApplication 運(yùn)行項(xiàng)目筷弦,登錄 Nacos Server 控制臺(tái),查看服務(wù)列表即可看到服務(wù)提供者 rest-provider 已經(jīng)注冊(cè)成功抑诸。

image-20190616110759521
服務(wù)消費(fèi)者創(chuàng)建

同樣的方式我們創(chuàng)建一個(gè)服務(wù)消費(fèi)者項(xiàng)目 rest-consumer烂琴,pom.xml 依賴(lài)和 application.properties 配置與 provider-consumer 一樣, 這里我們顯式地使用 LoadBalanceClient API 和 RestTemplate 結(jié)合的方式來(lái)消費(fèi)服務(wù)。

  1. 首先在引導(dǎo)類(lèi)中添加 @EnableDiscoveryClient 注解

    引導(dǎo)類(lèi)

  2. 再創(chuàng)建一個(gè)名為 RestConsumerConfiguration 的 Java 配置類(lèi)蜕乡,注入 RestTemplate监右。

    RestConsumerConfiguration.java

  3. 創(chuàng)建一個(gè)名為 RestConsumerController 測(cè)試用的 Controller,提供一個(gè)請(qǐng)求方法 echo异希, 如下:

    RestConsumerController.java

  4. 啟動(dòng) rest-cosumer 工程后健盒,就可以在 Nacos Server 控制臺(tái)的服務(wù)列表里看到多了一個(gè)名為 rest-consumer 的服務(wù),并且直接在瀏覽器訪(fǎng)問(wèn) http://localhost:8082/echo,就會(huì)看到:

    image-20190616113423983

使用上看是不是很簡(jiǎn)單呢称簿,其實(shí)和 Eureka 沒(méi)有太大差別扣癣,除了這種方式消費(fèi) Rest 服務(wù)外,Nacos 也支持 Feign 方式憨降,我們來(lái)看下這又是如何使用的吧父虑。

Feign 方式消費(fèi) Rest 服務(wù)

首先需要引入 Feign 客戶(hù)端依賴(lài):

Feign POM

然后引導(dǎo)類(lèi)添加注解 @EnableFeignClients 啟用 Feign 組件功能,編寫(xiě)一個(gè) EchoService 接口,用于調(diào)用遠(yuǎn)程服務(wù):

EchoService

Get 請(qǐng)求方式的接口方法參數(shù)不能必須使用 @RequestParam 參數(shù)指定請(qǐng)求參數(shù)名稱(chēng)授药,否則 Feign 都會(huì)通過(guò) POST 方式調(diào)用士嚎,得到狀態(tài)碼 405 的錯(cuò)誤。

注解 @FeignClient 指明了調(diào)用的服務(wù)提供方名稱(chēng)悔叽,echo 方法通過(guò) Spring MVC 提供的注解就可以跟服務(wù)提供者的 Rest 接口關(guān)聯(lián)莱衩,執(zhí)行時(shí)就會(huì)調(diào)用對(duì)應(yīng)請(qǐng)求方法。

最后我們只需要編寫(xiě)一個(gè)注入 EchoService 控制器 RestConsumerFeignController 類(lèi)娇澎,提供一個(gè)接口調(diào)用接口笨蚁。

RestConsumerFeignController

同樣啟動(dòng)后,直接打開(kāi) http://localhost:8082/echo/hi趟庄,就會(huì)得到瀏覽器如下輸出:

image-20190616142413540

Dubbo 服務(wù)的注冊(cè)與發(fā)現(xiàn)

接下來(lái)括细,我們看下 Dubbo 怎么使用 Nacos 作為服務(wù)注冊(cè)中心,進(jìn)行注冊(cè)與發(fā)現(xiàn)的戚啥,其實(shí)只要用過(guò) ZooKeeper 方式的就會(huì)發(fā)現(xiàn)很簡(jiǎn)單奋单。

首先我們創(chuàng)建一個(gè)子工程 dubbo-serivce,POM 文件添加依賴(lài)如下:

POM
  • 這里我們按照官方推薦使用 2.6.5 版本的 Dubbo 集成 Nacos猫十。
  • dubbo-registry-nacos 是 Dubbo 使用 Nacos 作為注冊(cè)中心的關(guān)鍵依賴(lài)览濒,當(dāng)前版本為 0.0.1呆盖。

接著定義服務(wù)接口 DemoService

DemoService
服務(wù)生產(chǎn)者

還是服務(wù)生產(chǎn)者先來(lái),添加一個(gè)類(lèi) DemoServiceImpl 實(shí)現(xiàn)服務(wù)接口

DemoServiceImpl

然后以 XML 配置方式配置 Dubbo匾七,只需要在 dubbo:registry元素上配置 Nacos 服務(wù)端地址即可絮短。

XML

最后用簡(jiǎn)單類(lèi)BasicProvidermain 方法直接啟動(dòng)服務(wù)生產(chǎn)者江兢,保持進(jìn)程常駐昨忆。

BasicProvider

正常啟動(dòng)后我們直接在 Nacos 控制臺(tái)的服務(wù)列表里就可以,Dubbo 生產(chǎn)者服務(wù)已經(jīng)成功注冊(cè)到 Nacos 上了杉允,可以通過(guò)詳情看到服務(wù)的具體數(shù)據(jù)邑贴,比如服務(wù)端口,方法之類(lèi)叔磷。

image-20190616144317355
服務(wù)消費(fèi)者

有了服務(wù)生產(chǎn)者拢驾,就來(lái)看下怎么去通過(guò) Nacos 調(diào)用 Dubbo 服務(wù)。

首先改基,通過(guò) XML 配置方式注入用 Dubbo 服務(wù)對(duì)象 DemoService, 在 dubbo:registry元素上配置 Nacos 服務(wù)端地址繁疤。

XML

然后編寫(xiě)簡(jiǎn)單類(lèi) BasicConsumer ,在 main 方法中加載 Spring 容器,獲取 DemoService 對(duì)象秕狰,直接進(jìn)行 RCP 調(diào)用稠腊。

BasicConsumer

運(yùn)行之后,我們可以從 IDE 控制臺(tái)上看到不斷有日志輸出鸣哀,說(shuō)明了通過(guò) Nacos 注冊(cè)中心的Dubbo 服務(wù)調(diào)用成功了架忌。

IDE 控制臺(tái)

結(jié)語(yǔ)

本文主要學(xué)習(xí)了解 Nacos,以及使用 Nacos 的服務(wù)注冊(cè)與發(fā)現(xiàn)功能我衬,如何與 Rest 服務(wù)叹放,Dubbo 服務(wù)進(jìn)行集成使用,整體上簡(jiǎn)單易用挠羔,有興趣的朋友也嘗試用下吧井仰。后續(xù)我將繼續(xù)深入研究 Spring Cloud Alibaba 微服務(wù)生態(tài)的組件,歡迎感興趣的小伙伴可以關(guān)注我的微信公眾號(hào)破加,每周一更糕档。

公眾號(hào)

代碼示例

本文所涉及所有代碼片段均在下面?zhèn)}庫(kù)中,歡迎感興趣的小伙伴參考學(xué)習(xí):

nacos-actionshttps://github.com/wrcj12138aaa/nacos-actions

環(huán)境支持:

  • JDK 8
  • Spring Boot 2.1.0
  • Maven 3.6.0

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末速那,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子尿背,更是在濱河造成了極大的恐慌端仰,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件田藐,死亡現(xiàn)場(chǎng)離奇詭異荔烧,居然都是意外死亡吱七,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)鹤竭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)踊餐,“玉大人,你說(shuō)我怎么就攤上這事臀稚×吡耄” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵吧寺,是天一觀的道長(zhǎng)窜管。 經(jīng)常有香客問(wèn)我,道長(zhǎng)稚机,這世上最難降的妖魔是什么幕帆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮赖条,結(jié)果婚禮上失乾,老公的妹妹穿的比我還像新娘。我一直安慰自己纬乍,他們只是感情好碱茁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蕾额,像睡著了一般早芭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诅蝶,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天退个,我揣著相機(jī)與錄音,去河邊找鬼调炬。 笑死语盈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缰泡。 我是一名探鬼主播刀荒,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼棘钞!你這毒婦竟也來(lái)了缠借?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宜猜,失蹤者是張志新(化名)和其女友劉穎泼返,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體姨拥,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绅喉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年渠鸽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柴罐。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡徽缚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出革屠,到底是詐尸還是另有隱情凿试,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布屠阻,位于F島的核電站红省,受9級(jí)特大地震影響额各,放射性物質(zhì)發(fā)生泄漏国觉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一虾啦、第九天 我趴在偏房一處隱蔽的房頂上張望麻诀。 院中可真熱鬧,春花似錦傲醉、人聲如沸蝇闭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)呻引。三九已至,卻和暖如春吐咳,著一層夾襖步出監(jiān)牢的瞬間逻悠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工韭脊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留童谒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓沪羔,卻偏偏與公主長(zhǎng)得像饥伊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蔫饰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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

  • 上個(gè)月最后一天的凌晨琅豆,Spring Cloud Alibaba 正式入駐了 Spring Cloud 官方孵化器,...
    方志朋閱讀 5,513評(píng)論 0 16
  • 0 準(zhǔn)備 安裝注冊(cè)中心:Zookeeper篓吁、Dubbox自帶的dubbo-registry-simple茫因;安裝Du...
    七寸知架構(gòu)閱讀 13,989評(píng)論 0 88
  • 問(wèn)題: 在Spring Boot的Controller中接收日期類(lèi)型,格式是yyyy-MM-dd HH:mm:ss...
    else05閱讀 3,417評(píng)論 0 1
  • 從村里回來(lái)越除,不忙時(shí)节腐,會(huì)繞蘇坑河走一圈外盯。在拐彎處,有三兩簇竹林翼雀。人未近饱苟,鳥(niǎo)鳴聲已將你圍住。啾啾啾狼渊,聽(tīng)不出是哪種鳥(niǎo)箱熬。不...
    小疇閱讀 336評(píng)論 0 3
  • 我背對(duì)著她離開(kāi)的方向 長(zhǎng)久地站立 環(huán)繞我的是不知誰(shuí)家的點(diǎn)點(diǎn)燈火, 這是一個(gè)開(kāi)滿(mǎn)繁花的冬天 落花的時(shí)候飛向天際 我看...
    留子堯閱讀 184評(píng)論 1 11