Node.js微服務

Node.js微服務 pdf epub mobi txt 電子書 下載 2025

[美] David Gonzalez(大衛 岡薩雷斯) 著,趙震一 譯
圖書標籤:
  • Node
  • js
  • 微服務
  • 架構
  • 設計
  • 開發
  • 實踐
  • RESTful
  • API
  • Docker
  • Kubernetes
  • 雲原生
想要找書就要到 靜思書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 電子工業齣版社
ISBN:9787121305245
版次:1
商品編碼:12023479
品牌:Broadview
包裝:平裝
開本:16開
齣版時間:2017-01-01
用紙:膠版紙
頁數:256
正文語種:中文

具體描述

産品特色

編輯推薦

本書內容要點:

√ 理解Node.js模塊並掌握在與微服務打交道時的zui佳實踐

√ 將現有的單塊係統重新架構成麵嚮微服務的軟件

√ 使用Seneca和Node.js構建齣健壯且可伸縮的微服務

√ 對微服務進行隔離測試從而創建齣可靠的係統

√ 使用PM2部署並管理微服務

√ 監控微服務的健康狀況(CPU、內存以及I/O)

內容簡介

《Node.js微服務》對如何采用Node.js 及其生態工具進行微服務開發的zui佳實踐做瞭全麵的介紹,內容包括對微服務架構基本概念及設計原則的講解,以及如何采用Node.js 搭配Seneca、PM2 和Docker 等現代化工具來構建、測試、監控以及部署輕量級微服務,同時也闡述瞭Node.js 在微服務實踐中所涉及的相關概念,並就微服務的優缺點、文檔化、安全性以及可追溯性等主題進行瞭探討。

《Node.js微服務》適閤掌握服務端開發基本知識的Node.js 開發者以及使用Java、C#等其他服務端技術棧並對微服務實踐感興趣的所有開發者。

作者簡介

David Gonzalez 是一名在編程語言方麵“極不專一”的軟件工程師,他在金融服務行業“混跡”多年。他嘗試找到抽象層次閤適的解決方案,並探索著如何保證既不過於具體也不過於抽象之間的平衡。

David 曾求學於西班牙,但是不久之後便轉戰都柏林,自2011 年起便定居於此並開啓瞭更為寬廣和有趣的職業生涯。他目前是一名金融技術領域的獨立谘詢師。他的Linkedin賬號地址是:https://ie.linkedin.com/in/david-gonzalez-737b7383。

David 樂於嘗試新的技術和範式,從而能讓自己在軟件開發的復雜世界中不斷拓展齣新的版圖。

審校者

Kishore Kumar Yekkanti 是一名經驗豐富的專傢,他在過去的十年裏曾與不同的領域和技術打過交道。他對軟件開發中的消除浪費尤具熱情。Kishore 是敏捷原則的巨大貢獻者和遵循者。他是一名善於開發端到端係統的全棧開發者,同時也是一名通曉多種語言的程序員。目前他專注於高度分布式應用中的微服務擴展,而這些應用部署於雲端基於容器的係統(Docker)之中。他曾在多傢知名的公司擔任過首席工程師,這些公司包括Thoughtworks、CurrencyFair 等。他曾通過微服務為這些公司的團隊帶來新生。

目錄

1 微服務架構1

微服務應運而生1

單塊軟件2

現實世界中的微服務2

麵嚮微服務的架構3

為什麼麵嚮微服務的架構更好3

不足之處3

關鍵設計原則4

從組件到業務單元5

智能的服務,愚蠢的通信管道7

去中心化8

技術對比10

多微纔是足夠的微10

關鍵的好處11

彈性11

可伸縮性11

技術多樣性13

可替換性14

獨立性15

SOA與微服務的比較16

為什麼選擇Node.js18

API聚閤18

展望Node.js19

小結20

2 基於Seneca和PM2構建Node.js微服務21

選擇Node.js的理由21

安裝Node.js、npm、Seneca和PM222

第一個程序——Hello World25

Node.js的綫程模型27

模塊化組織的最佳實踐27

微服務框架Seneca32

實現控製反轉35

Seneca的模式匹配35

PM2——Node.js的任務執行器46

單綫程應用及異常46

PM2——業界標準的任務執行器47

小結52

3 從單塊軟件到微服務53

首先,我們擁有一個單塊軟件53

如何控製自然增長54

多抽象纔是過度抽象57

微服務的齣現58

微服務的缺陷64

分割單塊軟件64

數據纔是分割單塊軟件的主要問題65

組織架構適配66

小結67

4 編寫你的第一個Node.js微服務69

微電子商務概覽69

商品管理服務——雙重核心71

獲取商品信息72

獲取指定類彆的商品73

根據ID獲取商品74

添加商品75

刪除商品75

編輯商品76

整閤各模塊76

集成Express與Seneca——如何創建REST API81

郵件服務:一個常見的問題82

如何發送郵件82

接口定義83

設置Mandrill84

親自動手在微服務中集成Mandrill86

迴退策略91

訂單管理服務92

根據如何獲取非本地數據來定義微服務93

訂單管理服務代碼95

UI——API聚閤的産物99

前端微服務的必要性99

代碼99

服務降級——當齣現非災難性故障時107

斷路器108

Seneca——一塊使我們工作變得更容易的拼圖109

Seneca和promise111

調試115

小結118

5 安全性和可追溯性119

基礎設施的邏輯安全119

利用SSH來對通信加密120

應用程序安全122

保持安全方麵的與時俱進來應對常見威脅123

有效的代碼審閱131

可追溯性132

日誌132

請求追蹤134

審計135

HTTP狀態碼136

小結138

6 Node.js微服務的測試及文檔化140

功能性測試141

自動化測試的金字塔142

采用Node.js測試微服務145

對微服務進行文檔化175

采用Swagger對API進行文檔化175

根據Swagger定義來生成項目182

小結184

7 微服務的監控185

服務監控185

采用PM2和Keymetrics進行監控186

類人猿大軍—來自Netflix的主動監控201

吞吐量和性能的降級204

小結206

8 微服務的部署208

軟件部署的一些概念208

持續集成209

持續交付209

采用PM2進行部署209

PM2中的“生態係統”210

采用PM2來部署微服務212

Docker——一種可用於軟件交付的容器213

組裝容器215

部署Node.js應用221

將Docker容器的創建過程自動化223

Node.js事件循環—入門容易精通難225

Node.js應用的集群化228

為應用增加負載均衡233

NGINX的健康檢查238

小結239

前言/序言

在技術圈裏,微服務已不是一張生麵孔,確切地說,如今已算得上是一名當紅的明星瞭。然而,對於任何一門流行的技術而言,從齣現到被廣泛采納必定都會經曆一個被質疑、被挑戰,以及在實踐的錘煉中不斷進化的過程,微服務也是如此。

作為本書的譯者,我並不打算在這篇序裏給齣太多的劇透。但是對扒一扒“微服務”的成長史卻深感義不容辭。

根據Martin Fowler 大叔的迴憶,“Microservices”一詞是在2011 年5 月於威尼斯附近舉辦的一次架構師工作坊的討論中被首次提齣的。

2012 年,微服務正式齣道。“Microservices”一詞首次在ThoughtWorks 技術雷達2012年3 月的報告中亮相。當時報告對其成熟度的評級位於“評估(Assess)”象限。

不到一年時間,“Microservices”一詞在2012 年10 月的技術雷達中已經進入瞭“試驗(Trial)”象限。這份報告稱,TW 及更廣範圍內的社區都將微服務作為一項分布式係統設計的技術開始采用。

2013 年,可配閤微服務實施的一些框架和工具相繼齣現,比如Spring Boot、Hystrix 等。

在此之後,業界對於微服務的實踐及討論逐漸升溫。2014 年3 月,Adrian Cockcroft(前

Netflix 首席雲架構師,被譽為“讓Netflix 走嚮雲端的男人”)與John Allspaw(現任Etsy的CTO)等人在Twitter 上展開瞭關於“微服務與單塊應用”孰優孰劣的討論1。

而在業界,真正為“微服務架構”這一架構風格正名的當屬Martin Fowler 大叔於2014年3月在其博客發錶的Microservices2一文,也正是此文讓大眾對微服務有瞭更加具體的認識。

2015 年,隨著以Docker 為代錶的容器技術的突飛猛進,微服務的部署難題迎刃而解,甚至有人將2015 年稱為微服務架構元年。

而當我們跨入2016 年甚至是2017 年的時候,微服務已正值壯年。在書店及互聯網上,關於什麼是微服務的書籍、博文已成燎原之勢。對於那些希望瞭解微服務“是什麼”的人來說,這是一個美好的時代。但是就微服務生命周期各個階段該“怎麼做”而言,譯者深感始終缺少一本接地氣的實踐指南。

當電子工業齣版社計算機齣版分社的張春雨編輯嚮我推薦這本書的時候,我的心裏是糾結的。因為我目前本職的工作量是相當飽和的(老闆請看過來~),但是卻無法拒絕這本書。這不就是那部我尋找已久的接地氣的“missing guide”嗎?

尤其是將“微服務”與“Node.js”這兩味如此珍貴的藥材一起入藥時,它們又會對“單塊係統”中的哪些痼疾産生怎樣奇特的療效呢?說好瞭不劇透,那麼就請讀者親自體會這一段接地氣的技術之旅吧。

再次感謝張春雨編輯對我的信任,也非常榮幸能參與這本書的翻譯。當然,翻譯一本書並不是一件輕鬆的事情,我要感謝我的師弟鄭偉傑,他與我共同承擔瞭本書的翻譯工作,正因為有瞭他的加入纔讓我得以工作翻譯兩不誤。其次要感謝偉傑的女友,她為本書譯文做瞭審閱與潤色。最後,我要感謝我的傢人,尤其是我的老婆和父母,你們是我堅強的後盾,讓我能專注於做好自己喜歡的事情。

由於時間及能力所限,我們對於原書的理解及對譯文的錶述難免存在一些不妥之處,希望各位讀者給予理解及反饋。我的郵箱是emsn1026@gmail.com,歡迎各位讀者與我們聯係。

趙震一

2016 年8 月於杭州


跨越架構鴻溝:從單體到分布式係統的演進之路 當今軟件開發領域,微服務架構以其獨特的優勢,正在深刻地重塑著我們構建和部署應用程序的方式。它不再是少數技術先驅的試驗田,而是越來越多企業選擇的戰略方嚮,是應對復雜業務需求、提升開發效率、保障係統彈性的關鍵。然而,從傳統單體應用嚮微服務架構的轉型,絕非一蹴而就的簡單遷移。它涉及到對係統設計理念的根本性轉變,對開發流程的深刻調整,以及對運維能力的全麵升級。 本書旨在為讀者提供一條清晰、實用的跨越架構鴻溝的演進之路。我們不會局限於某一特定技術棧的微觀操作,而是將視角聚焦於微服務架構的設計哲學、核心原理、關鍵挑戰以及落地實踐。我們將深入探討為何微服務架構能成為應對現代復雜係統挑戰的有力武器,它究竟解決瞭單體應用哪些痛點,又帶來瞭哪些新的機遇與考量。 第一部分:認知升級——理解微服務的本質與價值 在踏上微服務之旅前,清晰地認識其核心理念至關重要。我們將從根本上剖析微服務架構與單體架構的差異,不隻是停留在“拆分”這個錶層操作。我們會深入探討“服務自治”、“高內聚低耦閤”、“圍繞業務領域劃分”等核心原則,理解這些原則如何在實踐中指導我們進行服務邊界的劃分,以及如何通過這些原則實現業務的快速迭代和獨立部署。 單體應用的局限性與微服務誕生的土壤: 我們將迴顧單體應用的演進曆程,分析其在大型、復雜係統中所麵臨的可維護性、可伸縮性、技術棧僵化等挑戰。在此基礎上,剖析這些挑戰如何催生瞭對更靈活、更具彈性的架構模式的需求,為微服務的齣現奠定思想基礎。 微服務的核心特徵與優勢深度解析: 除瞭獨立部署、技術多樣性等顯而易見的好處,我們將深入挖掘微服務帶來的深層次價值,例如: 業務敏捷性提升: 如何通過服務拆分實現團隊的並行開發,縮短上綫周期,更快地響應市場變化。 技術獨立性與演進: 如何讓不同服務選擇最適閤的技術棧,擺脫技術債務的束縛,實現技術的持續演進和創新。 彈性伸縮與容錯能力: 如何通過獨立的服務單元,實現按需擴展,以及在部分服務失效時,保持整體係統的可用性。 組織結構重塑(康威定律): 理解團隊結構如何影響架構設計,以及微服務如何促進小型、自治的跨職能團隊的形成。 微服務並非銀彈:審視其潛在的挑戰與權衡: 任何技術都有其兩麵性。我們將客觀分析微服務架構可能帶來的挑戰,幫助讀者建立理性認識,避免盲目跟風: 分布式係統的復雜性: 網絡延遲、分布式事務、數據一緻性等問題如何引入新的復雜性。 運維管理的難度: 服務數量激增帶來的監控、日誌、部署、追蹤等方麵的挑戰。 跨服務通信的開銷: 如何設計高效、可靠的通信機製,平衡便利性與性能。 團隊溝通與協作成本: 多個獨立團隊協作時,如何確保信息暢通和目標一緻。 第二部分:設計之道——構建健壯微服務的架構原則與模式 理解瞭微服務的價值與挑戰,接下來的關鍵是如何進行有效的架構設計。本部分將聚焦於微服務架構設計的核心原則和實踐模式,幫助讀者建立起一套健壯、可維護的微服務設計思維。 圍繞業務領域進行服務劃分(DDD): 我們將深入探討領域驅動設計(DDD)在微服務劃分中的核心作用。如何識彆領域邊界,如何將業務能力轉化為獨立的服務,如何避免“技術驅動”而非“業務驅動”的無效拆分。 服務間的通信機製: 同步通信(RESTful API): 討論其適用場景、設計原則、API 網關的作用,以及如何處理服務間的依賴關係。 異步通信(消息隊列): 深入理解事件驅動架構的優勢,探討消息隊列在解耦、削峰填榖、實現最終一緻性等方麵的作用,並介紹常見的消息隊列技術及其選型考量。 服務發現與注冊: 講解服務如何在動態變化的分布式環境中被找到,介紹服務注冊中心的工作原理及常見實現。 數據管理: 數據庫拆分與服務自治: 探討每個服務獨立擁有其數據存儲的必要性,以及如何處理服務間的數據關聯。 分布式事務的挑戰與應對: 介紹 CAP 定理、BASE 理論,以及 TCC(Try-Confirm-Cancel)、Saga 等模式在解決分布式事務問題上的應用。 數據一緻性策略: 講解最終一緻性、強一緻性等概念,以及在不同場景下如何選擇閤適的數據一緻性方案。 API 網關的設計與作用: 作為微服務的入口,API 網關扮演著至關重要的角色。我們將探討其在請求路由、認證授權、限流熔斷、日誌記錄、協議轉換等方麵的功能。 服務降級與熔斷: 在高並發或部分服務故障時,如何通過降級和熔斷機製保護係統的穩定性,避免雪崩效應。 容錯與冪等性設計: 講解如何設計能夠容忍故障的服務,以及如何確保操作的冪等性,避免重復執行帶來的副作用。 第三部分:落地實踐——從編碼到部署的工程化挑戰 架構設計隻是起點,真正的挑戰在於如何將設計轉化為可運行、可維護的係統。本部分將聚焦於微服務開發、測試、部署、監控等工程化實踐,幫助讀者剋服落地過程中的實際睏難。 構建工具與技術棧選擇: 探討在微服務架構下,如何選擇適閤的服務開發語言、框架,以及如何利用構建工具(如 Maven, Gradle, npm, yarn)實現高效的構建和打包。 服務化開發模式: 介紹麵嚮服務的編程思想,如何編寫清晰、模塊化的服務代碼,以及如何進行有效的服務間接口定義。 測試策略: 單元測試、集成測試、契約測試: 講解不同層級的測試在微服務中的重要性,以及如何進行有效的測試覆蓋。 端到端測試與混沌工程: 探討如何進行全局性的測試,以及如何通過混沌工程主動發現係統弱點。 持續集成與持續部署 (CI/CD): 介紹如何構建自動化的 CI/CD 流水綫,實現代碼提交後的自動構建、測試、部署,加速交付速度。 容器化技術與編排(Docker & Kubernetes): 深入探討 Docker 在微服務打包和部署上的優勢,以及 Kubernetes 在大規模微服務集群管理、自動化部署、擴縮容、服務治理方麵的核心能力。 配置管理: 講解如何在分布式環境中統一管理各個服務的配置,以及如何實現配置的熱更新。 日誌聚閤與分析: 介紹如何將分散在各個服務上的日誌進行集中收集、存儲和分析,以便於故障排查和性能監控。 分布式鏈路追蹤: 講解如何跟蹤一個請求在多個微服務之間的調用路徑,定位性能瓶頸和故障源。 監控與告警: 探討如何對微服務進行全麵的監控(性能、可用性、錯誤率等),並建立有效的告警機製,及時發現和響應問題。 第四部分:演進與治理——麵嚮未來的微服務體係 微服務架構並非一成不變,它需要持續的演進和精細的治理。本部分將探討微服務生態中更高級的話題,以及如何構建一個可持續發展的微服務體係。 服務治理: 深入探討服務注冊、發現、配置管理、負載均衡、熔斷降級等服務治理的方方麵麵,以及如何利用服務治理框架(如 Spring Cloud, Dubbo, gRPC)實現這些功能。 灰度發布與金絲雀發布: 介紹如何以更安全的方式發布新版本,逐步將流量切換到新版本,降低發布風險。 微服務安全: 探討在分布式環境中如何進行身份認證、授權,以及如何保證服務間通信的安全。 微服務拆分策略與演進: 討論在係統演進過程中,如何根據業務需求的變化,對現有服務進行閤理的拆分或閤並。 微服務與 DevOps 文化: 強調微服務架構與 DevOps 文化的高度契閤,以及如何通過 DevOps 實踐賦能微服務。 構建微服務生態係統: 探討如何在一個組織內部建立起一套完善的微服務開發、部署、運維、治理的生態體係,賦能業務快速發展。 本書的最終目標是幫助讀者建立起一套完整的微服務認知體係,掌握從宏觀架構設計到微觀工程實踐的各項關鍵技能。我們希望通過深入淺齣的講解,輔以實際場景的分析,讓讀者能夠自信地迎接微服務架構帶來的挑戰,並從中獲益,構建齣更加敏捷、彈性、可擴展的下一代軟件係統。無論您是初次接觸微服務,還是正在實踐中遇到瓶頸,本書都將為您提供寶貴的洞見和實用的指導。

用戶評價

評分

作為一個在 Node.js 生態圈裏摸爬滾打多年的開發者,我總覺得在處理分布式係統和高並發場景時,自己的技能樹總有些缺失。尤其是看到其他團隊能夠快速迭代,獨立部署各種服務,而我們還在為單體應用的部署和維護頭疼不已時,那種焦慮感更是難以言喻。《Node.js微服務》這本書,就像是為我量身定製的一劑良藥。它並沒有枯燥地羅列技術棧,而是從一個宏觀的視角,深入淺齣地講解瞭如何將復雜的業務拆分成一個個獨立、可控的微服務。我特彆欣賞書中對“API網關”的講解,它不僅介紹瞭網關的作用,還詳細探討瞭如何選擇閤適的網關技術,以及如何設計統一的API接口。此外,關於“分布式事務”的章節,更是讓我茅塞頓開。之前我對這個問題感到非常棘手,總是模模糊糊的,但作者通過清晰的案例分析,讓我理解瞭“兩階段提交”、“TCC”等不同策略的優缺點,以及在微服務環境下如何權衡選擇。這本書真的讓我對構建大型、可擴展的分布式係統充滿瞭信心。

評分

我一直對 Node.js 的異步非阻塞 I/O 模型很著迷,覺得它在構建高性能網絡應用方麵有著獨特的優勢。但當項目規模擴大,需要引入更復雜的架構時,我發現自己陷入瞭睏境。單體應用的維護難度、部署的低效,都讓我開始尋求新的解決方案。《Node.js微服務》這本書,恰恰填補瞭我在這方麵的知識空白。作者並沒有止步於介紹微服務的概念,而是非常實際地探討瞭在 Node.js 環境下如何構建健壯、可維護的微服務。我特彆關注瞭書中關於“容器化”(如 Docker)和“編排”(如 Kubernetes)的內容。雖然這些不是 Node.js 特有的技術,但作者將它們與 Node.js 微服務緊密結閤,展示瞭如何利用這些工具來簡化微服務的部署、擴展和管理。讀完之後,我對如何設計一個具有高可用性和彈性的微服務係統有瞭更清晰的認識。它不僅僅是一本關於 Node.js 的書,更是一本關於現代化軟件架構的寶典。

評分

說實話,我拿到《Node.js微服務》這本書的時候,心裏是帶著點忐忑的,因為我對微服務架構的理解還停留在比較錶麵的階段,擔心這本書會過於理論化,難以落地。但讀下來之後,我發現我的擔憂完全是多餘的。作者的寫作風格非常接地氣,大量的案例分析和圖示,讓那些看似復雜的概念變得生動易懂。我尤其喜歡書中關於“灰度發布”和“藍綠部署”的講解,這對於我們在實際項目中平滑地發布新版本、降低風險非常有幫助。書中還分享瞭一些關於“服務降級”和“超時重試”的策略,這些都是在構建高可用係統時必不可少的。而且,作者在講解的過程中,始終圍繞著 Node.js 的特性來展開,比如如何利用其異步特性來優化服務間的通信,如何處理並發請求等。這本書讓我看到瞭 Node.js 在微服務領域巨大的潛力,也為我提供瞭一套切實可行的解決方案。

評分

這本書簡直把我從頭到腳地“洗禮”瞭一遍!我一直以來都在用 Node.js 做一些中小型項目,雖然覺得還不錯,但總感覺在架構設計上缺乏一種“大局觀”,尤其是在麵對日益增長的用戶量和業務復雜度時,那種單體應用的瓶頸感越來越明顯。讀完《Node.js微服務》,我纔真正理解瞭什麼是“解耦”、“獨立部署”和“彈性伸縮”。作者並沒有上來就拋齣一堆晦澀的概念,而是從一個實際的業務場景齣發,一步步地剖析瞭為什麼需要微服務,以及如何將一個龐大的單體應用拆分成更小、更易於管理的服務。我特彆喜歡其中關於“領域驅動設計(DDD)”的講解,它提供瞭一種非常清晰的思路來劃分服務的邊界,避免瞭服務之間産生不必要的耦閤。書中還詳細介紹瞭如何利用消息隊列(如 RabbitMQ)來實現服務間的異步通信,這對於降低係統延遲、提高可用性簡直是點睛之筆。我甚至覺得,即使你現在沒有立刻開始做微服務,單單是學習這本書中的設計理念和通信模式,對你未來的技術選型和項目規劃都會有巨大的幫助。它不是那種“看完就忘”的速食讀物,更像是一本可以反復研讀的“武功秘籍”,每次翻閱都能有新的領悟。

評分

坦白說,我一開始是被這本書的標題吸引過來的,畢竟 Node.js 在後端開發領域的熱度一直居高不下,而微服務又是當前非常流行的架構模式。我本來期望能看到一些關於如何快速搭建微服務框架、使用特定庫來實現服務治理的“乾貨”。然而,這本書並沒有完全走我預期的路綫。它更側重於“為什麼”和“如何思考”,而不是“如何一步步照做”。作者花瞭大量的篇幅去闡述微服務的優勢和挑戰,以及在實際落地過程中可能遇到的坑。我讀到瞭一些關於“CAP定理”和“最終一緻性”的討論,雖然不是微服務獨有的概念,但作者將它們與微服務架構的實踐緊密結閤,讓我對這些理論有瞭更深刻的理解。書中對“服務發現”、“熔斷”、“限流”等話題的探討,雖然沒有提供現成的代碼示例,但卻給瞭我很多設計上的啓發。它引導我思考如何在沒有中心化服務治理平颱的情況下,實現服務的可觀測性和健壯性。對於想要深入理解微服務底層原理和設計哲學的朋友來說,這本書絕對是不可多得的寶藏。它讓你不僅僅是“學會”構建微服務,而是“理解”微服務的精髓。

評分

這本書不錯 大體上理清瞭node 開發微服務的思路

評分

不錯!東西很好,價格還可以!

評分

這本書不錯 大體上理清瞭node 開發微服務的思路

評分

哈哈哈哈哈哈哈呼呼呼呼

評分

看完第一章,本書剩餘的內容看看目錄就夠瞭,不要迷戀國外的作者,現在越來越差瞭。

評分

挺好的

評分

包裝很結實 配送很給力

評分

書比較薄,彆人推薦之後來看的。希望不錯。

評分

Node.js微服務

相關圖書

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有