版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、微服務(wù)學(xué)習(xí)筆記和SpringCloud學(xué)習(xí)筆記簡介:微服務(wù)架構(gòu)風(fēng)格是一種將一個單一應(yīng)用程序開發(fā)為一小組小型服務(wù)的方法,每個服務(wù)運(yùn)行在自己的進(jìn)程中,服務(wù)間通信采用輕量級通信機(jī)制(通常用http資源API)。這些服務(wù)圍繞業(yè)務(wù)能力構(gòu)建并且可通過全自動部署機(jī)制獨(dú)立部署。這些服務(wù)共用一個最小型的集中式的管理,服務(wù)可用不同的語言開發(fā),使用不同的數(shù)據(jù)存儲技術(shù)。微服務(wù)在一定程度上是為了解決伸縮性問題、運(yùn)行效率問題和開發(fā)效率問題應(yīng)運(yùn)而生的。微服務(wù)的基本原理:讓一個小型應(yīng)用專注的做好一件事情。一個微服務(wù)就是一個小型應(yīng)用,方便替換,可以獨(dú)立開發(fā)和部署。微服務(wù)無法單獨(dú)存在,所以不會出現(xiàn)微服務(wù)孤島。微服務(wù)是大型系統(tǒng)的組
2、成為部分,他們與其他微服務(wù)一起工作,完成原先要在一個大型應(yīng)用里才能完成的事情。微服務(wù)的目標(biāo):是要創(chuàng)建一組具備自治能力匯和自包含能力的獨(dú)立應(yīng)用。他們各自負(fù)責(zé)提供某一方面的功能。微服務(wù)架構(gòu):微服務(wù)架構(gòu)每個微服務(wù)包含三個組件:一個前端,一個處理復(fù)雜邏輯的后端和一個存儲或讀取相關(guān)數(shù)據(jù)的存儲引擎。這里所說的前端,是一套包含了固定端點(diǎn)的API,微服務(wù)生態(tài)系統(tǒng)微服務(wù)并不是孤立存在的他們存在于一個環(huán)境里面,在一個設(shè)計良好的微服務(wù)生態(tài)系統(tǒng)里,微服務(wù)與基礎(chǔ)設(shè)施之間是分離的。微服務(wù)與硬件、網(wǎng)絡(luò)、構(gòu)建和部署管道、服務(wù)發(fā)現(xiàn)和負(fù)載均衡都是分離的。他們都是微服務(wù)生態(tài)系統(tǒng)基礎(chǔ)設(shè)施的組成部分。微服務(wù)生態(tài)系統(tǒng)可以分為四層:第1層
3、:硬件層主要包含:物理服務(wù)器數(shù)據(jù)庫操作系統(tǒng)資源隔離和資源抽象配置管理主機(jī)級別的監(jiān)控主機(jī)級別的日志第2層:通信層一般包含網(wǎng)絡(luò)/DNS/RPC和API端點(diǎn),服務(wù)發(fā)現(xiàn),服務(wù)注冊以及負(fù)載均衡RPC端點(diǎn)和消息傳遞、微服務(wù)通過遠(yuǎn)程過程調(diào)用RPC或消息傳送與其他微服務(wù)進(jìn)行交互,這些調(diào)用通過網(wǎng)絡(luò)發(fā)送到其他微服務(wù)的API端點(diǎn)。主要包含:網(wǎng)絡(luò)DNS遠(yuǎn)程過程調(diào)用端點(diǎn)消息傳遞服務(wù)發(fā)現(xiàn)服務(wù)注冊負(fù)載均衡第3層:應(yīng)用平臺層主要包含:內(nèi)部自助開發(fā)工具開發(fā)環(huán)境測試、構(gòu)建、打包和發(fā)布工具部署管道微服務(wù)級別的日志微服務(wù)級別的監(jiān)控第4層:微服務(wù)層頂層主要內(nèi)容:微服務(wù),微服務(wù)相關(guān)配置特性:1. 每個服務(wù)可以獨(dú)立運(yùn)行在自己的進(jìn)程里。2.
4、 一系列獨(dú)立運(yùn)行的微服務(wù)共同構(gòu)建起整個系統(tǒng)3. 每個服務(wù)為獨(dú)立的業(yè)務(wù)開發(fā),一個微服務(wù)只關(guān)注某個特定的功能,4. 微服務(wù)之間通過一些輕量的通信機(jī)制進(jìn)行通信。5. 全自動部署機(jī)制。微服務(wù)架構(gòu)的優(yōu)點(diǎn):1. 易于開發(fā)維護(hù):一個微服務(wù)只會關(guān)注一個特定的業(yè)務(wù)功能,所以業(yè)務(wù)清晰,代碼量較少。2. 單個微服務(wù)啟動較快:單個微服務(wù)代碼量較少,所以啟動比較快。3. 技術(shù)棧不受限:4. 按需伸縮:可根據(jù)需求,實(shí)現(xiàn)細(xì)粒度的擴(kuò)展。微服務(wù)架構(gòu)面臨的挑戰(zhàn)1. 運(yùn)維要求較高:更多的服務(wù)意味著更多的運(yùn)維投入。在單體架構(gòu)中,只需要保證一個應(yīng)用的正常運(yùn)行,而在微服務(wù)中,需要保證幾十甚至幾百個服務(wù)的正常運(yùn)行與協(xié)調(diào)。2. 分布式固有的
5、復(fù)雜性:使用微服務(wù)架構(gòu)的是分布式系統(tǒng)。對于一個分布式系統(tǒng),系統(tǒng)容錯,網(wǎng)絡(luò)延遲,分布式事務(wù)等都會帶來巨大的挑戰(zhàn)。3. 接口調(diào)整成本高:微服務(wù)之間通過接口進(jìn)行通信。如果修改某一個微服務(wù)的API,可能所有使用了該接口的微服務(wù)都需要做調(diào)整。4. 重復(fù)勞動:很多服務(wù)可能都會使用到相同的功能,而這個功能并沒有達(dá)到分解為一個微服務(wù)的程度,這個時候,可能各個服務(wù)都會開發(fā)這一功能,從而導(dǎo)致代碼重復(fù)。盡管可以使用共享庫來解決這個問題,但共享庫在多個語言環(huán)境下就不一定行的通了。微服務(wù)的設(shè)計原則1. 單一職責(zé)原則:一個單元(類,方法或者服務(wù)等)只應(yīng)關(guān)注整個系統(tǒng)功能中單獨(dú)、有界限的一部分。單一職責(zé)原則是SOLID原則之
6、一。2. 服務(wù)自治原則:服務(wù)自治是指單個微服務(wù)應(yīng)該具備獨(dú)立的業(yè)務(wù)功能、依賴與運(yùn)行環(huán)境。在微服務(wù)架構(gòu)中,服務(wù)是獨(dú)立的業(yè)務(wù)單元,應(yīng)該與其他服務(wù)高度解耦。每個服務(wù)從開發(fā)、測試。構(gòu)建、部署、都應(yīng)當(dāng)可以獨(dú)立運(yùn)行,而不應(yīng)該依賴其他的服務(wù)。3. 輕量級通信機(jī)制:通過輕量級的通信機(jī)制進(jìn)行交互。輕量級的通信機(jī)制應(yīng)具備兩點(diǎn):首先是他是體量較輕;其次是他應(yīng)該跨語言。例如REST協(xié)議;而例如java的RMI則協(xié)議就不大符合輕量級通信機(jī)制的要求,因?yàn)樗壎薺ava語言。微服務(wù)架構(gòu)中常用的協(xié)議有REST,AMQP,STOMP,MQTT等。4. 微服務(wù)粒度:微服務(wù)的粒度是難點(diǎn),也常常是爭論的焦點(diǎn)。應(yīng)當(dāng)使用合理的粒度劃分微
7、服務(wù)。技術(shù)選型:性對于單體應(yīng)用的交付,微服務(wù)應(yīng)用的交付要復(fù)雜很多,不僅需要開發(fā)框架的支持,還需要一些自動化部署工具,以及IaaS,PaaS或Caas的支持。開發(fā)框架的選擇:可使用Spring Cloud作為微服務(wù)開發(fā)框架。為微服務(wù)架構(gòu)提供了完整的解決方案。運(yùn)行平臺:微服務(wù)并不綁定運(yùn)行平臺,將微服務(wù)部署在PC Server,或者阿里云,AWS等云計算平臺都是可以的。簡介:Spring Cloud是在Spring Boot基礎(chǔ)上構(gòu)建的,用于快速構(gòu)建分布式系統(tǒng)的通用模式的工具集。使用Spring Cloud開發(fā)的應(yīng)用程序非常適合在Docker或者PaaS上部署,所以又叫做云原生應(yīng)用。云原生可簡單理解
8、為面向云環(huán)境的軟件架構(gòu)。Spring Cloud有以下特點(diǎn):1. 約定優(yōu)于配置。2. 適用于各種環(huán)境。開發(fā),部署在PC Server或者各種云環(huán)境3. 隱藏了組件的復(fù)雜性,并提供申明式,無xml的配置方式。4. 開箱即用,快速啟動5. 輕量級的組件。Spring Cloud整個的組件大多比較輕量。6. 組件豐富,功能齊全。7. 選型中立,豐富。例如Spring Cloud支持使用Eureka,zookeeper或者Consul實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)。8. 靈活:Spring Cloud的組件部分是解耦的,開噶人員可按需靈活挑戰(zhàn)技術(shù)選型。項(xiàng)目整合Spring Boot ActuatorSpring Boo
9、t Actuator提供了很多監(jiān)控端點(diǎn)??墒褂胔ttp:/ip:port/endpoint的形式訪問這些端點(diǎn),從而了解應(yīng)用程序的運(yùn)行狀況。常用端點(diǎn)及描述端點(diǎn)描述HTTP方法autoconfig顯示自動配置的信息GETbeans顯示應(yīng)用程序上下文所有的Spring beanGETconfigprops顯示所有ConfigurationProperties的配置屬性列表GETdump顯示線程活動的快照GETenv顯示應(yīng)用的環(huán)境變量GEThealth顯示應(yīng)用程度的健康指標(biāo),這些指標(biāo)由HealthIndicator的實(shí)現(xiàn)類提供GETinfo顯示應(yīng)用的消息,可使用info.*屬性自定義info端點(diǎn)公開的
10、數(shù)據(jù)GETmappings顯示所有的URL路徑GETmetrics顯示應(yīng)用的度量標(biāo)準(zhǔn)信息GETshutdown關(guān)閉應(yīng)用(默認(rèn)情況下不啟用,如需啟用,需設(shè)置endpoints.shutdown.enable=true)POSTtrace顯示跟蹤信息(默認(rèn)情況下為最近100個HTTP請求)GETMaven配置:org.springframework.bootspring-boot-starter-actuator微服務(wù)注冊與發(fā)現(xiàn)簡介:硬編碼提供者地址的方式有不少問題,要解決這些問題,服務(wù)消費(fèi)者需要一個強(qiáng)大的服務(wù)發(fā)現(xiàn)機(jī)制,服務(wù)消費(fèi)者使用這種機(jī)制獲取服務(wù)提供者的網(wǎng)絡(luò)信息。不僅如此,即使服務(wù)提供者的信息
11、發(fā)生變化,服務(wù)消費(fèi)者也無須修改配置文件。服務(wù)提供者,服務(wù)消費(fèi)者,服務(wù)發(fā)現(xiàn)組件者三者之間的關(guān)系各個微服務(wù)在啟動時,將自己的網(wǎng)絡(luò)地址等信息注冊到服務(wù)發(fā)現(xiàn)組件中,服務(wù)發(fā)現(xiàn)組件會存儲這些信息。服務(wù)消費(fèi)者可以從服務(wù)發(fā)現(xiàn)組件查詢服務(wù)提供者的網(wǎng)絡(luò)地址,并使用該地址調(diào)用服務(wù)提供者的接口。各個微服務(wù)與服務(wù)發(fā)現(xiàn)組件使用一定機(jī)制(例如心跳)通信。服務(wù)發(fā)現(xiàn)組件如長時間無法與某微服務(wù)實(shí)例通信,就會注銷該實(shí)例。微服務(wù)網(wǎng)絡(luò)地址發(fā)生變更(例如實(shí)例增減或者IP端口發(fā)生變化等)時,會重新注冊到服務(wù)發(fā)現(xiàn)組件。使用這種方式,服務(wù)消費(fèi)者就無須人工修改提供者的網(wǎng)絡(luò)地址了。綜上,服務(wù)發(fā)現(xiàn)組件應(yīng)具備以下功能1. 服務(wù)注冊表:是服務(wù)發(fā)現(xiàn)組件的
12、核心,它用來記錄各個微服務(wù)的信息,例如微服務(wù)的名稱,IP,端口等。服務(wù)注冊表提供API和管理API,查詢API用于查詢可用的微服務(wù)實(shí)例,管理API用于服務(wù)的注冊和注銷。2. 服務(wù)注冊于服務(wù)發(fā)現(xiàn):服務(wù)注冊是指微服務(wù)在啟動時,將自己的信息注冊到服務(wù)發(fā)現(xiàn)組件上的過程。服務(wù)發(fā)現(xiàn)是指查詢可用微服務(wù)列表及其網(wǎng)絡(luò)地址的機(jī)制。3. 服務(wù)檢查:服務(wù)發(fā)現(xiàn)組件使用一定機(jī)制定時監(jiān)測已注冊的服務(wù),如發(fā)現(xiàn)某實(shí)例長時間無法訪問,就會從注冊表中移除該實(shí)例。Spring Cloud提供了多種服務(wù)發(fā)現(xiàn)組件的支持,例如:Eureka,Consul和Zookeeper等。服務(wù)發(fā)現(xiàn)的方式可細(xì)分為服務(wù)器端發(fā)現(xiàn)和客戶端發(fā)現(xiàn),原理相同。Eu
13、reka簡介Eureka是Netflix開源的服務(wù)發(fā)現(xiàn)組件,本身是一個基于REST的服務(wù)。它包含Server和Client兩部分。Spring Cloud將它集成在子項(xiàng)目Spring Cloud Netflix中,從而實(shí)現(xiàn)微服務(wù)的注冊與發(fā)現(xiàn)。Eureka原理Eureka的工作原理,Eureka 組件分為兩部分:Eureka server和Eureka client。而客戶端又分為Application Service 客戶端和Application Client 客戶端兩種。Eureka 的工作機(jī)制每個 region 都有自己的 Eureka 服務(wù)器集群,每個 zone 至少要有一個 Eure
14、ka 服務(wù)器以應(yīng)對 zone 癱瘓。概述名詞解釋1. Renew:我的理解是續(xù)約,為什么叫續(xù)約呢?Renew(服務(wù)續(xù)約)操作由Service Provider定期調(diào)用,類似于heartbeat。目的是隔一段時間Service Provider調(diào)用接口,告訴Eureka Server它還活著沒掛,不要把它踢掉。通俗的說就是它們兩之間的心跳檢測,避免服務(wù)提供者被剔除掉。2. Cancel(服務(wù)下線)一般在Service Provider掛了或shut down的時候調(diào)用,用來把自身的服務(wù)從Eureka Server中刪除,以防客戶端調(diào)用到不存在的服務(wù)。3. Fetch Registries(獲取注
15、冊信息),F(xiàn)etch Registries由Service Consumer(服務(wù)消費(fèi)者)調(diào)用,用來獲取Eureka Server上注冊的服務(wù)info。4. Eviction(剔除)Eviction(失效服務(wù)剔除)用來定期在Eureka Server檢測失效的服務(wù),檢測標(biāo)準(zhǔn)就是超過一定時間沒有Renew的服務(wù)。Eureka架構(gòu)圖從圖中我們可以看出,Eureka 組件分為兩部分:Eureka server和Eureka client。而客戶端又分為Application Service客戶端和Application Client客戶端兩種。Eureka 的工作機(jī)制每個 region 都有自己的
16、Eureka 服務(wù)器集群,每個 zone 至少要有一個 Eureka 服務(wù)器以應(yīng)對 zone 癱瘓。Application Service 在啟動時注冊到 Eureka 服務(wù)器,之后每30秒鐘發(fā)送心跳以更新自身狀態(tài),即Renew(續(xù)約)。如果該客戶端沒能發(fā)送心跳更新,它將在90秒之后被其注冊的 Eureka 服務(wù)器剔除,即Eviction(剔除)。來自任意 zone 的 Application Client 可以獲取這些注冊信息(每隔30秒查看一次)并依此定位到在任何區(qū)域可以給自己提供服務(wù)的提供者(即Fetch Registries),進(jìn)而進(jìn)行遠(yuǎn)程調(diào)用。服務(wù)提供者本身攜帶的Eureka Cli
17、ent既能服務(wù)注冊,服務(wù)續(xù)約,也能通過client定位服務(wù)和調(diào)用其它的服務(wù)。Renew(服務(wù)續(xù)約)服務(wù)續(xù)約Renew操作會在Service Provider端定期發(fā)起,用來通知Eureka Server自己還活著。 這里有兩個比較重要的配置需要注意一下:1eureka.instance.leaseRenewalIntervalInSecondsRenew頻率。默認(rèn)是30秒,也就是每30秒會向Eureka Server發(fā)起Renew操作。1eureka.instance.leaseExpirationDurationInSeconds服務(wù)失效時間。默認(rèn)是90秒,也就是如果Eureka Serve
18、r在90秒內(nèi)沒有接收到來自Service Provider的Renew操作,就會把Service Provider剔除。此定位到在任何區(qū)域可以給自己提供服務(wù)的提供者(即Fetch Registries),進(jìn)而進(jìn)行遠(yuǎn)程調(diào)用。Eureka Server的高可用有分布式應(yīng)用開發(fā)經(jīng)驗(yàn)的讀者應(yīng)該能夠看出,在單節(jié)點(diǎn)Eureka Server并不適合線上生產(chǎn)環(huán)境。Eureka Client會定時鏈接Eureka Server,獲取服務(wù)注冊表中的信息并緩存在本地。微服務(wù)在消費(fèi)遠(yuǎn)程API時總是使用本地緩存中的數(shù)據(jù)。因此一般來說,即使Eureka Server發(fā)生宕機(jī),也不會影響到服務(wù)之間的調(diào)用。單如果Eurek
19、a Server宕機(jī)時,某些微服務(wù)也出現(xiàn)了不可用的情況,Eureka Client中的緩存若不被更新,就可能會影響到微服務(wù)的調(diào)用,甚至影響到整個應(yīng)用系統(tǒng)的高可用性,因此,在生產(chǎn)環(huán)境中,通常會部署一個高可用的Eureka Server集群。Eureka Server可以通過運(yùn)行多個實(shí)例并相互注冊的方式實(shí)現(xiàn)高可用部署,Eureka Server實(shí)例會彼此增量地同步信息,從而確保所有節(jié)點(diǎn)數(shù)據(jù)一致。事實(shí)上節(jié)點(diǎn)之間相互注冊時Eureka Server的默認(rèn)行為。Eureka的元數(shù)據(jù)Eureka的元數(shù)據(jù)有兩種,分別是標(biāo)準(zhǔn)的語言數(shù)據(jù)和自定義元數(shù)據(jù)。標(biāo)準(zhǔn)元數(shù)據(jù)指的是主機(jī)名,IP地址,端口號,狀態(tài)頁和健康檢查等
20、信息,這些信息都會被發(fā)布在服務(wù)注冊表中,用于服務(wù)之間的調(diào)用。自定義元數(shù)據(jù)可以使用eureka.instance.metadata-map配置。這些元數(shù)據(jù)可以在遠(yuǎn)程客戶端中訪問,但一般不會改變客戶端的行為。除非客戶端知道該元數(shù)據(jù)的含義。Eureka Server的REST端點(diǎn)Eureka Server提供了一些REST端點(diǎn)。非JVM的微服務(wù)可使用這些REST端點(diǎn)操作Eureka,從而實(shí)現(xiàn)注冊與發(fā)現(xiàn)。事實(shí)上,前文所講的Eureka Client就是一個使用java編寫的,操作這些REST端點(diǎn)的類庫。也可以分析這些REST端點(diǎn),編寫其他語言的Eureka Client。下表是Eureka提供的RES
21、T端點(diǎn),可以使用XML或者json與這些端點(diǎn)通信,默認(rèn)是XML。Eureka的健康檢查說明:在Status欄顯示著UP,表示應(yīng)用程序狀態(tài)正常。其它取值DOWN、OUT_OF_SERVICE、UNKNOWN等,只有UP的微服務(wù)會被請求。由于Eureka Server與Eureka Client之間使用心跳機(jī)制來確定Eureka Client的狀態(tài),默認(rèn)情況下,服務(wù)器端與客戶端的心跳保持正常,應(yīng)用程序就會始終保持“UP”狀態(tài),所以微服務(wù)的UP并不能完全反應(yīng)應(yīng)用程序的狀態(tài)。Spring Boot Actuator提供了/health端點(diǎn),該端點(diǎn)可展示應(yīng)用程序的健康信息,只有將該端點(diǎn)中的健康狀態(tài)傳播到
22、Eureka Server就可以了,實(shí)現(xiàn)這點(diǎn)很簡單,只需為微服務(wù)配置如下內(nèi)容:#開啟健康檢查(需要spring-boot-starter-actuator依賴) eureka.client.healthcheck.enabled=true如果需要更細(xì)粒度健康檢查,可實(shí)現(xiàn)flix.appinfo.HealthCheckHandler接口Eureka的自我保護(hù)模式進(jìn)入自我保護(hù)模式最直觀的體現(xiàn),是Eureka Server首頁輸出的警告。默認(rèn)情況下,如果Eureka Server在一定時間內(nèi)沒有接收到某個微服務(wù)實(shí)例的心跳,Eureka Server將會注銷該實(shí)例(默認(rèn)90秒)。但是當(dāng)網(wǎng)
23、絡(luò)分區(qū)故障發(fā)生時,微服務(wù)與Eureka Server之間無法正常通信,這就可能變得非常危險了-因?yàn)槲⒎?wù)本身是健康的,此時本不應(yīng)該注銷這個微服務(wù)。 Eureka Server通過“自我保護(hù)模式”來解決這個問題-當(dāng)Eureka Server節(jié)點(diǎn)在短時間內(nèi)丟失過多客戶端時(可能發(fā)生了網(wǎng)絡(luò)分區(qū)故障),那么這個節(jié)點(diǎn)就會進(jìn)入自我保護(hù)模式。一旦進(jìn)入該模式,Eureka Server就會保護(hù)服務(wù)注冊表中的信息,不再刪除服務(wù)注冊表中的數(shù)據(jù)(也就是不會注銷任何微服務(wù))。當(dāng)網(wǎng)絡(luò)故障恢復(fù)后,該Eureka Server節(jié)點(diǎn)會自動退出自我保護(hù)模式。 自我保護(hù)模式是一種對網(wǎng)絡(luò)異常的安全保護(hù)措施。使用自我保護(hù)模式,而已讓
24、Eureka集群更加的健壯、穩(wěn)定。在Spring Cloud中,可以使用eureka.server.enable-self-preservation=false來禁用自我保護(hù)模式,當(dāng)然也可以使用顯示指定IP地址來解決:eureka.instance.instance-id:$spring.cloud.client.ipAddress:$server.port多網(wǎng)卡環(huán)境下的IP選擇2.1、簡介指定IP在某些場景下很有用,如某臺服務(wù)器有eth0、eth1和eth2三塊網(wǎng)卡,但是eth1可以被其它的服務(wù)器訪問;如果Eureka Client將eth0或者eth2注冊到Eureka Server上,其它微服務(wù)就無法通過這個IP調(diào)用該微服務(wù)的接口。Spring Cloud提供了按需選擇IP的能力,從而避免以上的問題。2.2、操作方案1、忽略指定名稱的網(wǎng)卡#忽略eth0,支持正則表達(dá)式 spring.cloud.inetutils.ignored-interfaces0=eth0 #注冊時使用ip而不是主機(jī)名 eureka.instance.prefer-ip-address=true方案2、只使用站點(diǎn)本地地址#只使用站點(diǎn)本地地址
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年二季度全國新材料高新技術(shù)企業(yè)外遷布局分析
- 證券投資學(xué)課件
- 5年中考3年模擬試卷初中生物八年級下冊第一章素養(yǎng)綜合檢測
- 學(xué)校自然災(zāi)害防備措施
- 高中語文《蘇武傳》隨堂練習(xí)(含答案)
- 蘇少版小學(xué)二年級音樂下冊教案全冊
- 2019年人教版小學(xué)音樂四年級下冊教案(全冊)
- 三體讀書匯報課件
- 制造業(yè)辦公區(qū)裝修合同范例
- 藥品運(yùn)輸合同模板
- 2022年高中成績單中英文模板
- 極大似然估計課件
- 徒手胸外心臟按壓復(fù)蘇法的進(jìn)展
- 某某會計師事務(wù)所行政事業(yè)單位清產(chǎn)核資專項(xiàng)審計業(yè)務(wù)約定書
- 整體式集成衛(wèi)生間安裝技術(shù)交底施工方案
- 2020-2021年說課大賽全國一等獎:人教版七年級上冊生物說課:生物與環(huán)境組成生態(tài)系統(tǒng)課件
- DB65∕T 4492-2022 和田玉(白玉)分級
- TPO句子簡化題全集_翻譯答案版
- 矮身材兒童診治指南最終版(課堂PPT)
- 國旗下演講講話稿《重溫行為規(guī)范,爭做文明學(xué)生》
- 30個有趣的物理小實(shí)驗(yàn)及原理講解
評論
0/150
提交評論