




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Solr 集群 Replication 配置與實踐Solr 作為一個搜索服務器,在并發(fā)搜索請求的場景下,可能一臺服務器很容易就垮掉,這是我們可以通過使用集群技術,設置多臺 Solr 搜索服務器同時對外提供搜索服務,在前端使用類似 Nginx 的負載均衡軟件,可以通過配置使得并發(fā)到達的搜索請求均勻地反向到Solr 集群中的每一臺服務器上,這樣每臺 Solr 搜索服務器搜索請求的增強了每臺服務器能夠持續(xù)提供服務器的能力。可以大大減小,然而,這時我們的問題有:·集群中的每臺服務器上要保證索引數(shù)據(jù)都能很好地的同步,使得每臺搜索服務器的索引數(shù)據(jù)在一定可以承受的程度上保持一致性;集群中某臺服務器
2、宕機離線,人工干預重啟后繼續(xù)與集群中其它服務器索引數(shù)據(jù)保·持一致,繼續(xù)提供搜索服務;集群中某臺服務器的索引數(shù)據(jù),由于硬盤故障或人為·無法提供搜索服務,需要一種數(shù)據(jù)恢復機制;集群中最先接受數(shù)據(jù)更新的Master 服務器,在將索引更新·到Slave 服務器上時,避免多臺 Slave 服務器同一時間占用大量網(wǎng)絡帶寬,從而影響了 Master 提供搜索服務。事實上,Solr 框架在上面的幾個方面都能做到不錯的支持,具有很大的靈活性。基于上述的幾個問題,我們來配置 Solr 集群的 Replication,并實踐集群的功能。單機實例 ReplicationSolr 支持在單
3、機上配置多個實例(MultiCore),每個實例都可以對外提供服務,共享同一網(wǎng)絡帶寬。同時,也可以實現(xiàn)單機實例之間 Replication,在實例之間數(shù)據(jù)的可用性,從而提高系統(tǒng)的服務能力。數(shù)據(jù),保證我們看一下,這種模式的結構圖,如下所示:上圖,在同一臺服務器上,啟動 Solr 的多個實例,將這些實例(通過 Core 來區(qū)分)作為單機上的偽分布式集群,這些 Core 實例都是在同一個 JVM 中。選擇其中的一個實例 Core0作為 Master,每次索引更新都首先從這個實例 Core0 進行,直到 Master 實例 Core0與 Slave 實例 Core1、Core2、Core3 上的數(shù)據(jù)同
4、步為止。其中,每個實例都可以對外提供服務,因為這種模式保證多個實例上的數(shù)據(jù)都是同一份數(shù)據(jù),起到數(shù)據(jù)備份的作用,一般不建議讓多個實例同時提供服務。下面給出上圖模式下 Solr 的配置。Core0 作為 Master,對應的 solrconfig.xml 配置內容,如下所示:<?xml version="1.0" encoding="UTF-8" ?><config><luceneMatchVersion>LUCENE_35</luceneMatchVersion><directoryFactorynam
5、e="DirectoryFactory"class="$solr.directoryFactory:solr.StandardDirectoryFactory" /><updateHandler class="solr.DirectUpdateHandler2" /><requestDispatcher handleSelect="true"><requestParsers enableRemoteStreaming="false" multipartUplo
6、adLimitInKB="2048" /></requestDispatcher><requestHandler name="standard" class="solr.StandardRequestHandler" default="true" /><requestHandler name="/update" class="solr.JsonUpdateRequestHandler" /><requestHandler nam
7、e="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /><queryParser name="dismax" class="solr.DisMaxQParserPlugin" /><requestHandler name="/dismax" class="solr.SearchHandler"><lst name="defaults">&l
8、t;str name="defType">dismax</str><str name="qf">title content</str><bool name="hl">true</bool>上述配置中,提供了一個/dismax 搜索接口,對外提供搜索服務。配置中 name 為/Replication的requestHandler,即為Solr 提供的請求處理接口,配置中replicateAfter 表示在startup請求。和 commit 之后才Slave 的Solr
9、支持索引數(shù)據(jù) Replication,同時也支持配置數(shù)據(jù)的。如果需要配置數(shù)據(jù)做好配置備份,可以在 Master 的 solrconfig.xml 中配置如下內容:<str name="confFiles">schema.xml,stopwords.txt,solrconfig.xml,synonyms.txt</str>指定需要從 Master 上的配置文件名即可。對于 Core1Core3 都為 Slave,即請求數(shù)據(jù),我們拿 Core1 為例,其它配置均相同,但是我們不希望 Slave 實例對外提供服務,所以只需要配置 Slave 的/repli
10、cation處理接口即可,配置內容如下所示:請求<?xml version="1.0" encoding="UTF-8" ?><config><luceneMatchVersion>LUCENE_35</luceneMatchVersion><directoryFactoryname="DirectoryFactory"class="$solr.directoryFactory:solr.StandardDirectoryFactory" /><st
11、r name="hl.fl">title content</str><int name="hl.fragsize">200</int><int name="hl.snippets">1</int><str name="fl">*,score</str><str name="qt">standard</str><str name="wt">standar
12、d</str><str name="version">2.2</str><str name="echoParams">explicit</str><str name="indent">true</str><str name="debugQuery">on</str><str name="explainOther">on</str></lst></r
13、equestHandler><requestHandler name="/replication" class="solr.ReplicationHandler"><lst name="master"><str name="replicateAfter">startup</str><str name="replicateAfter">commit</str><str name="commituratio
14、n">00:00:10</str></lst></requestHandler><admin><defaultQuery>solr</defaultQuery></admin></config>Slave 配置中 masterUrl 和 pollInterval 是必選的,masterUrl 指定為 core0 的請求接口,pollInterval 是指Slave 周期地向Master 詢問是否數(shù)據(jù)有所更新,如果發(fā)生變更則進行。其它的參數(shù)可以根據(jù)需要進行配置。一般情況下,單機多個實例
15、之間的 Replication 不需要配置上述 httpBasicAuth*的參數(shù)的。啟動 Solr 之前,沒有任何索引數(shù)據(jù)。啟動之后,我們通過在中設計的小工具,向 Master數(shù)據(jù)請求索引,因為在 post 的過程中,執(zhí)行了 commit 和 optimize 操作,所以會觸發(fā) Slave Master 的索引數(shù)據(jù),我們可以看一下日志。在 Master 和 Slave 數(shù)據(jù)同步的情況下,Master 收到 Slave 的 Replication 請求:2011-12-9 15:18:00 org.apache.solr.core.SolrCore execute信息: core0 webap
16、p=/solr35 path=/replication params=command=indexversion&wt=javabin status=0 QTime=02011-12-9 15:18:20 org.apache.solr.core.SolrCore execute信息: core0 webapp=/solr35 path=/replication params=command=indexversion&wt=javabin status=0 QTime=0<updateHandler class="solr.DirectUpdateHandler2
17、" /><requestDispatcher handleSelect="true"><requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" /></requestDispatcher><requestHandler name="standard" class="solr.StandardRequestHandler" default=&q
18、uot;true" /><requestHandler name="/update" class="solr.JsonUpdateRequestHandler" /><requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /><requestHandler name="/replication" class="solr.Replic
19、ationHandler"><lst name="slave"><str name="masterUrl"></str><str name="pollInterval">00:00:20</str><str name="compression">internal</str><str name="httpConnTimeout">5000</str><str name=
20、"httpReadTimeout">10000</str><str name="httpBasicAuthUser">username</str><str name="httpBasicAuthPassword">password</str></lst></requestHandler><admin><defaultQuery>solr</defaultQuery></admin></conf
21、ig>每隔 20s 間隔,Slave 請求一次,這個時間間隔可以根據(jù)需要進行配置。從我們向 Master索引數(shù)據(jù)更新索引請求后,在 Master 和 Slave 之間執(zhí)行的數(shù)據(jù)的復制,處理日志內容可以參考后面附錄的內容。通過日志信息可以看到,Slave 在 Master 更新索引(通過 add 可以看到更新了 5 篇文檔,日志中給出了文檔編號;更新時,每次2 篇文檔執(zhí)行一次 commit,全部完成后執(zhí)行一次 commit 和 optimize 操作)之后,通過請求獲取文件列表,然后執(zhí)行過程,最后 Slave 索引數(shù)據(jù)發(fā)生變化,為保證實時能夠搜索到最新內容,重新打開了一個IndexSear
22、cher 實例。日志最后面的部分,Slave 的索引數(shù)據(jù)與 Master 保持同步,不需要。集群結點 Replication在 Solr 集群中進行配置,與上面單機多實例的情況基本上一致,基本特點是:每個結點上的實例(Core)在同一個 JVM 內,不同結點之間進行實際上是不同結點上的實例之間進行 Replication。集群模式架構圖,如下所示:2011-12-9 15:18:40 org.apache.solr.core.SolrCore execute信息: core0 webapp=/solr35 path=/replication params=command=indexversio
23、n&wt=javabin status=0 QTime=02011-12-9 15:19:00 org.apache.solr.core.SolrCore execute信息: core0 webapp=/solr35 path=/replication params=command=indexversion&wt=javabin status=0 QTime=0在一個 Solr 集群中執(zhí)行 Replication,請求與動作發(fā)生在一個網(wǎng)絡內部。而 replication的端點是不同結點上的實例(Core),很可能 Slave 結點上的其它實例在提供其他的服務。通過上圖可以看到
24、,在只有一個 Master 的 Solr 集群中,如果存在大量的 Slave 要求Replication,勢必會造成對 Master 服務器的(網(wǎng)絡帶寬、系統(tǒng) IO、系統(tǒng) CPU)。很可能因為外部大量搜索請求達到,使 Master 持續(xù)提供服務的能力降低,甚至宕機。Solr 也考慮到這一點,通過在 Master 和 Slave 之間建立一個的結點來單點故障,結點既做 Master 的 Slave,同步 Master 的數(shù)據(jù),同時又做 Slave 的 Master,將最新的數(shù)據(jù)同步到 Slave 結點,這個結點叫做 Repeater,架構圖如下所示:由圖可見,Master 的一下轉移到了 Rep
25、eater 結點上,在一定程度上解決了 Master 的單點問題。對于 Reaper 結點,它具有雙重,顯而易見,在配置的時候需要配置上 Master和 Slave 都具有的屬性。我們給出一個 Repeater 的配置示例。Master 配置:<requestHandler name="/replication" class="solr.ReplicationHandler"><lst name="master"><str name="replicateAfter">startu
26、p</str><str name="replicateAfter">commit</str><str name="confFiles">schema.xml,stopwords.txt,solrconfig.xml,synonyms.txt</str><str name="commituration">00:00:10</str></lst>Repeater 配置:Slave 配置:可見,Solr 能夠支持這種鏈式 Replication
27、配置,甚至可以配置級,但具體如何配置還要依據(jù)你的應用的特點,以及條件的限制。總之,Solr Replication 的目標就是讓你系統(tǒng)的數(shù)據(jù)可用性變得更好。任何時候發(fā)生備機上同步數(shù)據(jù)。故障、硬盤故障、數(shù)據(jù)錯誤,都可以從其他的附錄日志2011-12-9 15:19:32 cessor.LogUpdateProcessor finish信息: add=4eded6a5bf3bfa0014000003, 4eded74abf3bfa0014000005 0 12572011-12-9 15:19:32 org.apache.solr.core.So
28、lrCore execute信息: core0 webapp=/solr35 path=/update params= status=0 QTime=1257<requestHandler name="/replication" class="solr.ReplicationHandler" ><lst name="slave"><strname="masterUrl"></str><str name="pollInterval">00
29、:00:20</str><str name="compression">internal</str><str name="httpConnTimeout">5000</str><str name="httpReadTimeout">10000</str><str name="httpBasicAuthUser">username</str><str name="httpBasicAuthPas
30、sword">password</str></lst></requestHandler><requestHandler name="/replication" class="solr.ReplicationHandler"><lst name="master"><str name="replicateAfter">startup</str><str name="replicateAfter"
31、>commit</str><str name="commituration">00:00:10</str></lst><lst name="slave"><strname="masterUrl"></str><str name="pollInterval">00:00:20</str><str name="compression">internal</str>
32、<str name="httpConnTimeout">5000</str><str name="httpReadTimeout">10000</str><str name="httpBasicAuthUser">username</str><str name="httpBasicAuthPassword">password</str></lst></requestHandler></req
33、uestHandler>2011-12-9 15:19:32 org.apache.solr.update.DirectUpdateHandler2 commit信息: start commit(optimize=false,waitFlush=true,waitSearcher=true,expungeDeletes=false) 2011-12-9 15:19:33 org.apache.solr.core.SolrDeletionPolicy onCommit信息: SolrDeletionPolicy.onCommit: commits:num=2 commitdir=E:Dev
34、elopmyeclipseworkspacesolr35multicorecore0dataindex,segFN=segments_1,version=1323415055454,generation=1,filenames=segments_1 commitdir=E:Developmyeclipseworkspacesolr35multicorecore0dataindex,segFN=segments_2,version=1323415055456,generation=2,filenames=_0.tis, _0.nrm, _0.fnm, _0.tii, _0.frq, segmen
35、ts_2, _0.fdx, _0.prx, _0.fdt2011-12-9 15:19:33 org.apache.solr.core.SolrDeletionPolicy updateCommits信息: newest commit = 13234150554562011-12-9 15:19:33 org.apache.solr.search.SolrIndexSearcher <init>信息: Opening Searcher151b6ea main2011-12-9 15:19:33 org.apache.solr.update.DirectUpdateHandler2
36、commit信息: end_commit_flush2011-12-9 15:19:33 org.apache.solr.search.SolrIndexSearcher warm信息: autowarming Searcher151b6ea main from Searcher1a80fb8 main fieldValueCachelookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=
37、0.00,cumulative_inserts=0,cumul ative_evictions=02011-12-9 15:19:33 org.apache.solr.search.SolrIndexSearcher warm信息: autowarming result for Searcher151b6ea main fieldValueCachelookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_h
38、itratio=0.00,cumulative_inserts=0,cumul ative_evictions=02011-12-9 15:19:33 org.apache.solr.core.SolrCore registerSearcher 信息: core0 Registered new searcher Searcher151b6ea main 2011-12-9 15:19:33 org.apache.solr.search.SolrIndexSearcher close 信息: Closing Searcher1a80fb8 mainfieldValueCachelookups=0
39、,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumul ative_evictions=02011-12-9 15:19:33 cessor.LogUpdateProcessor finish信息: commit= 0 7902011-12-9 15:19:33 org.apache.solr
40、.core.SolrCore execute信息: core0 webapp=/solr35 path=/update params= status=0 QTime=790 2011-12-9 15:19:33 org.apache.solr.update.SolrIndexWriter getDirectory警告:NolockTypeconfiguredfor E:Developmyeclipseworkspacesolr35multicorecore0dataindex/ assuming 'simple'2011-12-9 15:19:33 org.apache.sol
41、r.core.SolrDeletionPolicy onInit信息: SolrDeletionPolicy.onInit: commits:num=1 commitdir=E:Developmyeclipseworkspacesolr35multicorecore0dataindex,segFN=segments_2,version=1323415055456,generation=2,filenames=_0.tis, _0.nrm, _0.fnm, _0.tii, _0.frq, segments_2, _0.fdx, _0.prx, _0.fdt2011-12-9 15:19:33 o
42、rg.apache.solr.core.SolrDeletionPolicy updateCommits信息: newest commit = 13234150554562011-12-9 15:19:33 cessor.LogUpdateProcessor finish信息: add=4eded53abf3bfa0014000002, 4eded700bf3bfa0014000004 0 3362011-12-9 15:19:33 org.apache.solr.core.SolrCore execute信息: core0 webapp=/
43、solr35 path=/update params= status=0 QTime=336 2011-12-9 15:19:33 org.apache.solr.update.DirectUpdateHandler2 commit信息: start commit(optimize=false,waitFlush=true,waitSearcher=true,expungeDeletes=false) 2011-12-9 15:19:34 org.apache.solr.core.SolrDeletionPolicy onCommit信息: SolrDeletionPolicy.onCommi
44、t: commits:num=2 commitdir=E:Developmyeclipseworkspacesolr35multicorecore0dataindex,segFN=segments_2,version=1323415055456,generation=2,filenames=_0.tis, _0.nrm, _0.fnm, _0.tii, _0.frq, segments_2, _0.fdx, _0.prx, _0.fdtcommitdir=E:Developmyeclipseworkspacesolr35multicorecore0dataindex,segFN=se gmen
45、ts_3,version=1323415055458,generation=3,filenames=_0.nrm,_0.tis,_0.fnm,_1.tis,_1.frq, _1.fnm, _1.fdx, _1.prx, _0.tii, _1.fdt, _0.frq, _1.tii, _0.fdx, _0.prx, _1.nrm, segments_3,_0.fdt2011-12-9 15:19:34 org.apache.solr.core.SolrDeletionPolicy updateCommits信息: newest commit = 13234150554582011-12-9 15
46、:19:34 org.apache.solr.search.SolrIndexSearcher <init>信息: Opening Searcher5fa11b main2011-12-9 15:19:34 org.apache.solr.update.DirectUpdateHandler2 commit信息: end_commit_flush2011-12-9 15:19:34 org.apache.solr.search.SolrIndexSearcher warm信息: autowarming Searcher5fa11b main from Searcher151b6ea
47、 main fieldValueCachelookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumul ative_evictions=02011-12-9 15:19:34 org.apache.solr.search.SolrIndexSearcher warm信息: autowarming result for Searche
48、r5fa11b main fieldValueCachelookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumul ative_evictions=02011-12-9 15:19:34 org.apache.solr.core.SolrCore registerSearcher 信息: core0 Registered new
49、searcher Searcher5fa11b main 2011-12-9 15:19:34 org.apache.solr.search.SolrIndexSearcher close 信息: Closing Searcher151b6ea mainfieldValueCachelookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,
50、cumul ative_evictions=02011-12-9 15:19:34 cessor.LogUpdateProcessor finish信息: commit= 0 6162011-12-9 15:19:34 org.apache.solr.core.SolrCore execute信息: core0 webapp=/solr35 path=/update params= status=0 QTime=6162011-12-9 15:19:34 org.apache.solr.update.SolrIndexWriter getDi
51、rectory警告:NolockTypeconfiguredfor E:Developmyeclipseworkspacesolr35multicorecore0dataindex/ assuming 'simple'2011-12-9 15:19:34 org.apache.solr.core.SolrDeletionPolicy onInit信息: SolrDeletionPolicy.onInit: commits:num=1 commitdir=E:Developmyeclipseworkspacesolr35multicorecore0dataindex,segFN=
52、segments_3,version=1323415055458,generation=3,filenames=_0.nrm,_0.tis,_0.fnm,_1.tis,_1.frq, _1.fnm, _1.fdx, _1.prx, _0.tii, _1.fdt, _0.frq, _1.tii, _0.fdx, _0.prx, _1.nrm, segments_3,_0.fdt2011-12-9 15:19:34 org.apache.solr.core.SolrDeletionPolicy updateCommits信息: newest commit = 13234150554582011-1
53、2-9 15:19:34 cessor.LogUpdateProcessor finish信息: add=4eded79fbf3bfa0014000006 0 1642011-12-9 15:19:34 org.apache.solr.core.SolrCore execute信息: core0 webapp=/solr35 path=/update params= status=0 QTime=164 2011-12-9 15:19:34 org.apache.solr.update.DirectUpdateHandler2 commit信
54、息: start commit(optimize=false,waitFlush=true,waitSearcher=true,expungeDeletes=false) 2011-12-9 15:19:35 org.apache.solr.core.SolrDeletionPolicy onCommit信息: SolrDeletionPolicy.onCommit: commits:num=2 commitdir=E:Developmyeclipseworkspacesolr35multicorecore0dataindex,segFN=segments_3,version=13234150
55、55458,generation=3,filenames=_0.nrm,_0.tis,_0.fnm,_1.tis,_1.frq, _1.fnm, _1.fdx, _1.prx, _0.tii, _1.fdt, _0.frq, _1.tii, _0.fdx, _0.prx, _1.nrm, segments_3,_0.fdtcommitdir=E:Developmyeclipseworkspacesolr35multicorecore0dataindex,segFN=se gments_4,version=1323415055460,generation=4,filenames=_0.tis,
56、_1.frq, _2.tii, _1.fnm, _1.tii,_0.prx, _0.nrm, _1.tis, _0.fnm, _2.prx, _2.fdt, _2.frq, _2.fdx, _2.fnm, _1.prx, _1.fdx, _2.tis, _0.tii,_1.fdt, _0.frq, _0.fdx, _0.fdt, _1.nrm, _2.nrm, segments_42011-12-9 15:19:35 org.apache.solr.core.SolrDeletionPolicy updateCommits信息: newest commit = 1323415055460201
57、1-12-9 15:19:35 org.apache.solr.search.SolrIndexSearcher <init>信息: Opening Searcher1d449fc main2011-12-9 15:19:35 org.apache.solr.update.DirectUpdateHandler2 commit信息: end_commit_flush2011-12-9 15:19:35 org.apache.solr.search.SolrIndexSearcher warm信息: autowarming Searcher1d449fc main from Sear
58、cher5fa11b main fieldValueCachelookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumul ative_evictions=02011-12-9 15:19:35 org.apache.solr.search.SolrIndexSearcher warm信息: autowarming result f
59、or Searcher1d449fc main fieldValueCachelookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_inserts=0,cumul ative_evictions=02011-12-9 15:19:35 org.apache.solr.core.SolrCore registerSearcher信息: core0 Regis
60、tered new searcher Searcher1d449fc main 2011-12-9 15:19:35 org.apache.solr.search.SolrIndexSearcher close 信息: Closing Searcher5fa11b mainfieldValueCachelookups=0,hits=0,hitratio=0.00,inserts=0,evictions=0,size=0,warmupTime=0,cumulative_lookups=0,cumulative_hits=0,cumulative_hitratio=0.00,cumulative_
61、inserts=0,cumul ative_evictions=02011-12-9 15:19:35 cessor.LogUpdateProcessor finish信息: commit= 0 7352011-12-9 15:19:35 org.apache.solr.core.SolrCore execute信息: core0 webapp=/solr35 path=/update params= status=0 QTime=735 2011-12-9 15:19:35 org.apache.solr.update.DirectUpda
62、teHandler2 commit信息: start commit(optimize=true,waitFlush=false,waitSearcher=false,expungeDeletes=false) 2011-12-9 15:19:35 org.apache.solr.update.SolrIndexWriter getDirectory警告:NolockTypeconfiguredfor E:Developmyeclipseworkspacesolr35multicorecore0dataindex/ assuming 'simple'2011-12-9 15:19:35 org.apache.solr.core.SolrDeletionPolicy onInit信息: SolrDeletionPolicy.onInit: commits:num=1 commitdir=E:Developmyeclipseworkspacesolr35multicorecore0datain
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年芳烴新戊二醇酯多元醇項目投資價值分析報告
- 2025至2030年耕耙項目投資價值分析報告
- 2025至2030年管壁測厚儀項目投資價值分析報告
- 2025至2030年柴油機機油泵項目投資價值分析報告
- 2025至2030年成人一次性血氧探頭線項目投資價值分析報告
- 2025至2030年廣州旅游業(yè)前景預測及投資研究報告
- 雷電及防雷過電壓-雷電的形成過程及危害(高電壓技術)
- 2025至2030年中國酒店行業(yè)發(fā)展前景與投資趨勢分析報告
- 負壓口腔護理操作流程
- 2025至2030年PPU包裝膠袋行業(yè)深度研究報告
- 富馬酸伊布利特幻燈課件
- 新譯林版高一英語新教材必修三全冊課文及翻譯(英漢對照)
- 陜西省潼關縣潼峪-蒿岔峪金礦開采項目環(huán)評報告
- 高中化學常見晶體的結構及晶胞
- 著色探傷作業(yè)指導書
- 2002-2022廣東省深圳市中考數(shù)學歷年真題(共24套最全)學生版+解析版
- 2022年法考重難點專題刑法習題及答案解析
- GB/T 4857.13-2005包裝運輸包裝件基本試驗第13部分:低氣壓試驗方法
- GB/T 28724-2012固體有機化學品熔點的測定差示掃描量熱法
- GB/T 23743-2009飼料中凝固酶陽性葡萄球菌的微生物學檢驗Baird-Parker瓊脂培養(yǎng)基計數(shù)法
- 祛痰藥鎮(zhèn)咳藥課件
評論
0/150
提交評論