云原生時(shí)代,18 歲的 NGINX 過(guò)時(shí)了嗎兽叮?

如今芬骄,全球半數(shù)以上(55%) 的網(wǎng)站都基于 NGINX 運(yùn)行,差不多相同比例 (53.7%) 的中國(guó)網(wǎng)站在 NGINX 開源版上運(yùn)行鹦聪。作為最受歡迎的網(wǎng)絡(luò)服務(wù)器账阻,NGINX 自發(fā)布到現(xiàn)在已經(jīng)有 18 年了,它現(xiàn)在有什么樣的發(fā)展規(guī)劃呢泽本?

近日淘太,NGINX Sprint China 2022 大會(huì)于線上舉行,F(xiàn)5 NGINX 講解了 NGINX 在云原生下的產(chǎn)品路線圖规丽,宣布推出 NGINX Kubernetes Gateway 以及 MARA 參考架構(gòu) 1.0 版本琴儿,并且 HTTP3 和 QUIC 也將合并到下一個(gè)版本中∴医荩“如果有人說(shuō)原先的 NGINX 產(chǎn)品系列已經(jīng)過(guò)時(shí),那我只能說(shuō)你并沒有密切關(guān)注我們的動(dòng)向”显熏,F(xiàn)5 NGINX 總經(jīng)理 Rob Whiteley 在主題演講中這樣說(shuō)道雄嚣。

NGINX 的進(jìn)化

在數(shù)字化技術(shù)的推動(dòng)下,應(yīng)用現(xiàn)代化正成為產(chǎn)業(yè)發(fā)展的趨勢(shì)與共識(shí)喘蟆。F5 中國(guó)區(qū)軟件事業(yè)部總經(jīng)理章澍分享了 NGINX 認(rèn)為的缓升,從傳統(tǒng)應(yīng)用向現(xiàn)代化應(yīng)用發(fā)展過(guò)程中將會(huì)歷經(jīng)的三次浪潮:第一次浪潮實(shí)現(xiàn)了應(yīng)用的大規(guī)模并發(fā)和擴(kuò)展,而如今正在經(jīng)歷的第二次浪潮蕴轨,其特征是實(shí)現(xiàn)應(yīng)用解耦為微服務(wù)并通過(guò) API 連接港谊。這波浪潮將極大地推動(dòng)自動(dòng)化技術(shù)的發(fā)展,感知可控橙弱、隨需而變的應(yīng)用也將應(yīng)運(yùn)而生歧寺。也就是說(shuō)燥狰,在不遠(yuǎn)的將來(lái),全世界會(huì)迎來(lái)以感知可控斜筐、無(wú)人工干預(yù)的自適應(yīng)應(yīng)用為標(biāo)志的第三次浪潮龙致。

NGINX 的誕生

NGINX 于 2004 年推出。在早期的互聯(lián)網(wǎng)時(shí)代顷链,隨著 Web 2.0 的興起目代,用戶數(shù)量呈幾何級(jí)數(shù)增長(zhǎng),互聯(lián)網(wǎng)不再是單純的瀏覽 Web 頁(yè)面嗤练,逐漸開始進(jìn)行交互榛了,應(yīng)用程序的邏輯也變的更復(fù)雜,從簡(jiǎn)單的表單提交煞抬,到即時(shí)通信和在線實(shí)時(shí)互動(dòng)霜大。這種用戶體量的上升以及互動(dòng)請(qǐng)求的增加,也給服務(wù)器帶來(lái)了壓力此疹。

NGINX 的誕生也是為了實(shí)現(xiàn)大規(guī)模的并發(fā)和擴(kuò)展僧诚,相當(dāng)多的企業(yè)看到了 NGINX 的性能優(yōu)勢(shì)并開始使用它。 Igor Sysoev 于 2011 年辭去了在 Rambler 的工作蝗碎,并創(chuàng)立了 NGINX, Inc.湖笨。幾年后,NGINX Plus 發(fā)布了蹦骑,這是一個(gè)帶有一些附加功能的版本慈省,并且在商業(yè)上取得了巨大的成功。2019 年眠菇, NGINX, Inc. 被 F5 Networks 以 6.7 億美元收購(gòu)边败。

NGINX 采用異步模式,且輕量級(jí)捎废,采用 C 進(jìn)行編寫笑窜,在性能上的出色表現(xiàn)是擊敗 Apache 網(wǎng)絡(luò)服務(wù)器的關(guān)鍵。但 NGINX 取得成功登疗,卻不僅僅是因?yàn)?NGINX 是一個(gè)網(wǎng)絡(luò)服務(wù)器排截,它還具備負(fù)載均衡器、反向代理辐益、郵件代理和 HTTP 緩存等功能断傲,提供了構(gòu)建安全、可靠的 Web 應(yīng)用程序所需的幾乎所有方面的能力智政。

比如认罩,在 2000 年代早期,一臺(tái)硬件負(fù)載均衡服務(wù)器動(dòng)輒從十幾萬(wàn)到幾十萬(wàn)不等续捂,因此當(dāng)服務(wù)規(guī)模不大時(shí)垦垂,直接采購(gòu)硬件負(fù)載均衡服務(wù)器對(duì)于很多中小公司并不劃算宦搬,而通過(guò) Web 服務(wù)器的反向代理的方式卻是當(dāng)時(shí)比較經(jīng)濟(jì)的方式。一般 Web 服務(wù)器都有反向代理功能乔外,NGINX 則是其中典型代表床三。

在此基礎(chǔ)上,NGINX 和 NGINX Plus 平臺(tái)又由多個(gè)分散的同類最佳工具組成杨幼,當(dāng)它們串聯(lián)使用時(shí)撇簿,可以以各種“風(fēng)格”進(jìn)行部署,以滿足企業(yè)的多種需求差购,從而成為了市場(chǎng)占有率第一的網(wǎng)絡(luò)服務(wù)器四瘫。

image

云原生時(shí)代的 NGINX

如果說(shuō)互聯(lián)網(wǎng)的崛起導(dǎo)致應(yīng)用的大規(guī)模并發(fā)和擴(kuò)展,是我們經(jīng)歷的第一次浪潮欲逃,那么微服務(wù)和容器化的興起找蜜,也可以算作是我們正在經(jīng)歷的第二次浪潮。

在第二波浪潮下稳析,企業(yè)更關(guān)注于 Kubernetes 和容器的部署洗做,但 Kubernetes 缺乏生產(chǎn)環(huán)境中的應(yīng)用所需的應(yīng)用交付、可觀察性以及安全防護(hù)功能彰居,因此一個(gè)好的生產(chǎn)級(jí) Kubernetes 平臺(tái)需要進(jìn)行深思熟慮的定制和調(diào)整诚纸。

NGINX 2021 年的社區(qū)調(diào)查顯示,2/3 的人都已經(jīng)或打算在生產(chǎn)環(huán)境中使用 Kubernetes陈惰,但是都有著對(duì)于自身知識(shí)技能以及對(duì)于 Kubernetes 的復(fù)雜性畦徘、安全防護(hù)和擴(kuò)展性的擔(dān)憂。為了構(gòu)建堅(jiān)實(shí)的 Kubernetes 基礎(chǔ)抬闯,NGINX 通過(guò)添加 Ingress controller井辆、WAF、服務(wù)網(wǎng)格以及一些其他云原生項(xiàng)目溶握,提供了云原生的杯缺、Kubernetes 友好的開源和商業(yè)解決方案,來(lái)提升應(yīng)用程序的擴(kuò)展性睡榆、可見性夺谁、安全性......

image

另一方面,微服務(wù)和應(yīng)用的數(shù)量在快速增長(zhǎng)肉微,微服務(wù)之間以及集群內(nèi)外之間的 API 數(shù)量也不斷增加。一般來(lái)說(shuō)蜡塌,微服務(wù)之間的內(nèi)部 API 調(diào)用次數(shù)通常是應(yīng)用到客戶端之間的外部 API 調(diào)用次數(shù)的 10 倍或者更多碉纳。隨著應(yīng)用環(huán)境的擴(kuò)張,復(fù)雜的環(huán)境可能有成百上千個(gè) API馏艾,更復(fù)雜的 API 身份驗(yàn)證劳曹、授權(quán)奴愉、路由、整形和生命周期管理等問(wèn)題就會(huì)隨之而來(lái)铁孵,所以在云原生時(shí)代锭硼,網(wǎng)關(guān)功能更為重要。

NGINX 提供了 API Gateway蜕劝、Ingress Controller檀头、Service Mesh多種選擇。其中岖沛,作為被普遍使用的反向代理工具暑始,基于 NGINX 實(shí)現(xiàn)的 NGINX Ingress 也成為了 Kubernetes 集群中最廣泛使用的 Ingress 網(wǎng)關(guān)。目前 NGINX Ingress 主要有兩個(gè)版本婴削,其中一個(gè)是 Kubernetes 社區(qū)所開發(fā)和維護(hù)的 NGINX Ingress Controller (kubernetes/ingress-NGINX)廊镜。而 F5 NGINX 也開發(fā)和維護(hù)了 NGINX Ingress Controller (NGINXinc/kubernetes-ingress),在數(shù)據(jù)平面上添加一些高級(jí)功能或商業(yè)支持唉俗。

然而嗤朴,開源版本和 NGINX 維護(hù)的版本之間存在一定差異,這也讓用戶感到困惑虫溜。為了消除這種困惑雹姊,NGINX 基于 Kubernetes API Gateway SIG 參考架構(gòu),于今年早些時(shí)候推出了 NGINX Kubernetes Gateway吼渡。NGINX Kubernetes Gateway 由 Ingress controller 發(fā)展而來(lái)容为,是一種基于 Gateway API 規(guī)范內(nèi)測(cè)版的新興技術(shù)。Gateway API 終將取代 Kubernetes 架構(gòu)中的 Ingress Controller寺酪,為了與云原生趨勢(shì)保持一致坎背,NGINX 表示已決定將之前僅在開源版本中提供的 NGINX Kubernetes Gateway 作為下階段的 Kubernetes 網(wǎng)絡(luò)開發(fā)重點(diǎn)。

現(xiàn)代應(yīng)用參考架構(gòu) MARA

云原生基礎(chǔ)設(shè)施和基于微服務(wù)的設(shè)計(jì)寄雀,能夠高容錯(cuò)得滤、松耦合,使得開發(fā)可快速迭代盒犹,讓企業(yè)可以用敏捷的方式支持?jǐn)?shù)字化轉(zhuǎn)型懂更。然而利用云原生構(gòu)建現(xiàn)代化應(yīng)用并不容易,“部署 Kubernetes 有很多不同的方法——網(wǎng)絡(luò)急膀、安全沮协、身份驗(yàn)證,甚至像 API 網(wǎng)關(guān)這樣的東西卓嫂。對(duì)于大多數(shù)剛起步的企業(yè)來(lái)說(shuō)慷暂,這還是比較復(fù)雜〕况ǎ” F5 NGINX 總經(jīng)理Rob Whiteley在接受媒體采訪時(shí)曾說(shuō)行瑞〖橄伲“如果沒有很好地理解,很容易陷入錯(cuò)誤的配置狀態(tài)血久⊥徽眨”

image

“我們意識(shí)到,我們可以制作一個(gè)模版作為企業(yè)參考架構(gòu):給出真正的操作代碼氧吐,而不是紙上的概念讹蘑。”Whiteley 說(shuō)副砍。因此衔肢,MARA 誕生了。這種思路類似于構(gòu)建一個(gè)“黃金鏡像”豁翎,讓用戶從列表中自動(dòng)拉取角骤、組裝和預(yù)集成所有腳本,然后通過(guò)一個(gè)命令進(jìn)行部署心剥。并且 F5 希望開發(fā)人員只需單擊幾下就能夠在幾分鐘內(nèi)配置和部署好一個(gè) Kubernetes 環(huán)境邦尊,形成一個(gè)完整并穩(wěn)定可靠的開發(fā)環(huán)境。

總之优烧,MARA 是一個(gè)悉心設(shè)計(jì)的“穩(wěn)定可靠蝉揍、經(jīng)過(guò)測(cè)試且可以部署到在 Kubernetes 環(huán)境中運(yùn)行的實(shí)時(shí)生產(chǎn)應(yīng)用”解決方案。該模塊化架構(gòu)集成了創(chuàng)建生產(chǎn)級(jí)云原生環(huán)境所需的一切——安全性畦娄、日志記錄又沾、網(wǎng)絡(luò)、應(yīng)用服務(wù)器熙卡、配置和 YAML 管理等杖刷。

即使平臺(tái)能夠集成所有這些功能,但要完全滿足生產(chǎn)環(huán)境要求還需要更多的工作驳癌。經(jīng)過(guò)不斷實(shí)驗(yàn)并探索如何幫助核心開發(fā)人員更高效滑燃、更輕松地部署現(xiàn)代應(yīng)用,NGINX 在去年的 Sprint 大會(huì)上宣布推出了 MARA參考架構(gòu)颓鲜,一個(gè)現(xiàn)代應(yīng)用的開源架構(gòu)和部署模型表窘。在今年的 NGINX Sprint 上,Rob Whiteley 也在主題演講中宣布了即將推出 MARA 1.0版本甜滨。

在發(fā)布時(shí)乐严,MARA 預(yù)配置了多種選擇,使用Elastic進(jìn)行日志管理衣摩,使用Prometheus和Grafana進(jìn)行監(jiān)控和儀表板麦备,使用Amazon Web Services的Elastic Kubernetes Service (EKS) 作為部署目標(biāo),使用Spinnaker進(jìn)行持續(xù)交付,以及 TLS的證書管理器凛篙,以及中間層的許多 NGINX 產(chǎn)品。

另外栏渺,微服務(wù)相對(duì)單體服務(wù)呛梆,其故障定位難度完全不是一個(gè)等級(jí),因此要使微服務(wù)監(jiān)控和可觀察性更上一層樓磕诊,就需要引入優(yōu)秀的 APM 系統(tǒng)填物。CNCF 管理的 OpenTelemetry 項(xiàng)目 (由 OpenTracing 和 OpenCensus 合并而成),它以一種綜合的方式生成追蹤霎终、日志和指標(biāo)滞磺,也成為了目前服務(wù)監(jiān)控可觀察性統(tǒng)一方案。MARA 1.0 版本也選擇了集成OpenTelemetry莱褒,實(shí)現(xiàn)日分布式跟蹤击困、指標(biāo)收集等功能,這也是1.0版本中的一個(gè)重要變化广凸。

NGINX 的開源演進(jìn):兼顧穩(wěn)定和高性能

NGINX 作為純 C 實(shí)現(xiàn)的軟件阅茶,源碼質(zhì)量很高。創(chuàng)始人Igor Sysoev最開始也只專注于解決 C10K 問(wèn)題谅海,并一個(gè)人寫了幾乎所有的代碼脸哀,獨(dú)自管理到 2011 年。

2017 年扭吁,當(dāng)時(shí)的 NGINX 首席執(zhí)行官接受媒體采訪時(shí)介紹說(shuō)撞蜂,這個(gè)輕量級(jí)軟件,核心代碼一直少于 200,000 行侥袜。同時(shí)蝌诡,開源版本依賴很少,僅有非常少的庫(kù)系馆,如 Openssl璧函、glib。這也是它高性能的原因之一宅粥“锱觯“性能為王”是它擊敗 Apache 網(wǎng)絡(luò)服務(wù)器的原因,其模塊化機(jī)制也始終可以讓 NGINX 關(guān)注于可以為工程師提供“靈活度”尼酿,這也是讓它在 Web 網(wǎng)關(guān)服務(wù)器領(lǐng)域中一直領(lǐng)先地位的原因爷狈。

但云原生的到來(lái)正在改變 API 網(wǎng)關(guān)的角色,也給 NGINX 帶來(lái)了新的挑戰(zhàn)裳擎。很多其他 API 網(wǎng)關(guān)解決方案都是基于 NGINX 搭建的涎永,比如開源和商用的 Kong API 網(wǎng)關(guān)以及開源的 OpenResty 等,這些軟件在敏捷開發(fā)行業(yè)很火。

雖然這進(jìn)一步驗(yàn)證了 NGINX 核心技術(shù)在這個(gè)領(lǐng)域的可用性羡微,但也讓人們思考 NGINX 在云原生技術(shù)下的優(yōu)勢(shì)谷饿。但相對(duì)來(lái)講,NGINX 使用 C 語(yǔ)言妈倔,代碼空間封閉博投;而新興的一些軟件使用 Lua,雖然可以隨時(shí)編寫功能插件盯蝴,但通過(guò)解析 String 并立即返回調(diào)用函數(shù)毅哗,這樣導(dǎo)致其代碼空間是完全開放的。所以從這一點(diǎn)來(lái)說(shuō)捧挺,NGINX 的設(shè)計(jì)更加安全穩(wěn)定虑绵。而傳統(tǒng)行業(yè)也比一些敏捷行業(yè)更注重安全穩(wěn)定的性能,所以 NGINX 仍然是傳統(tǒng)行業(yè)的首選闽烙。就像 Rob Whiteley 在主題演講中提到的那樣翅睛,“開源安全性是開發(fā)人員的首要考慮事項(xiàng)”。

他表示鸣峭,“數(shù)以千計(jì)的企業(yè)正在生產(chǎn)環(huán)境中運(yùn)行 NGINX 開源軟件——這是一件好事宏所,因?yàn)檫@充分表明了公司們對(duì)我們開源版本的高度信任,我們將帶著這份信任再接再厲摊溶。對(duì)于核心 NGINX 開源版軟件爬骤,我們一直在不斷添加新特性和功能,并支持更多操作系統(tǒng)平臺(tái)莫换。在即將發(fā)布的下個(gè)版本中霞玄,我們將通過(guò) HTTP3 和 QUIC 這兩大功能來(lái)保障 Web 應(yīng)用以及流量的安全性和可擴(kuò)展性±辏”

在 NGINX 的設(shè)計(jì)中坷剧,后端服務(wù)以靜態(tài)配置文件的形式記錄,里面使用了一些優(yōu)化過(guò)的靜態(tài)哈希表設(shè)計(jì)喊暖,因此性能也非常好惫企。但在微服務(wù)時(shí)代,后端服務(wù)的 IP 發(fā)生變化的時(shí)候陵叽,都需更改配置文件狞尔,靜態(tài)配置的方式也給網(wǎng)關(guān)實(shí)現(xiàn)“連接復(fù)用”增加了難度,而基于 UDP 的 HTTP3 和 QUIC 協(xié)議則可以實(shí)現(xiàn)跨 IP 遷移巩掺。各種網(wǎng)絡(luò)技術(shù)實(shí)際上早已經(jīng)成熟偏序,但 NGINX 更多考慮的是穩(wěn)定性,因此在 QUIC 第一份規(guī)范草案提交給 IETF 的五年之后胖替,NGINX 才選擇合并 QUIC 到當(dāng)前版本中研儒。

這同時(shí)說(shuō)明 NGINX 也一直在跟進(jìn)網(wǎng)絡(luò)世界的重大變化豫缨。例如,NGINX 于 2015 年 9 月開始支持 HTTP/2端朵,距協(xié)議修訂標(biāo)準(zhǔn)化僅幾個(gè)月好芭。HTTP/2 服務(wù)器推送支持也于 2018 年推出,現(xiàn)在 HTTP /3 和 QUIC 也終于要實(shí)現(xiàn)到 NGINX 中冲呢。

在開源崛起和邁向成功的過(guò)程中栓撞,NGINX 在這一二十年里發(fā)揮了至關(guān)重要的作用。現(xiàn)在碗硬,通過(guò) NGINX 在云原生領(lǐng)域的重大發(fā)布,我們也可以看出 NGINX 一直在努力提升自身的競(jìng)爭(zhēng)力瓢颅,用 Rob Whiteley 的話來(lái)說(shuō)恩尾,就是“NGINX 要想十年后還能廣受歡迎,就需要不斷做出改進(jìn)......對(duì)自己的開源工作反躬自省挽懦,跟上開源運(yùn)動(dòng)的持續(xù)發(fā)展翰意。”

參考鏈接:

https://www.NGINX-cn.net/blog/future-of-NGINX-getting-back-to-open-source-roots/

https://www.NGINX-cn.net/blog/5-things-to-know-about-NGINX-kubernetes-gateway/

https://www.bilibili.com/video/BV1wh41187De/

https://thenewstack.io/NGINXs-reference-architecture-for-kubernetes-microservices/

https://mp.weixin.qq.com/s/UPaA6uRTVn2Nu2qJKA9soQ

https://www.NGINX.com/blog/our-roadmap-quic-http-3-support-NGINX/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末信柿,一起剝皮案震驚了整個(gè)濱河市冀偶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渔嚷,老刑警劉巖进鸠,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異形病,居然都是意外死亡客年,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門漠吻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)量瓜,“玉大人,你說(shuō)我怎么就攤上這事途乃∩馨粒” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵耍共,是天一觀的道長(zhǎng)烫饼。 經(jīng)常有香客問(wèn)我,道長(zhǎng)划提,這世上最難降的妖魔是什么枫弟? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮鹏往,結(jié)果婚禮上淡诗,老公的妹妹穿的比我還像新娘骇塘。我一直安慰自己,他們只是感情好韩容,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布款违。 她就那樣靜靜地躺著,像睡著了一般群凶。 火紅的嫁衣襯著肌膚如雪插爹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天请梢,我揣著相機(jī)與錄音赠尾,去河邊找鬼。 笑死毅弧,一個(gè)胖子當(dāng)著我的面吹牛气嫁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播够坐,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼寸宵,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了元咙?” 一聲冷哼從身側(cè)響起梯影,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎庶香,沒想到半個(gè)月后甲棍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脉课,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年救军,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倘零。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唱遭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出呈驶,到底是詐尸還是另有隱情拷泽,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布袖瞻,位于F島的核電站司致,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏聋迎。R本人自食惡果不足惜脂矫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望霉晕。 院中可真熱鬧庭再,春花似錦捞奕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至恨搓,卻和暖如春院促,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斧抱。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工常拓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辉浦。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓墩邀,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親盏浙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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