MongoDB存储服务设计方案_第1页
MongoDB存储服务设计方案_第2页
MongoDB存储服务设计方案_第3页
MongoDB存储服务设计方案_第4页
MongoDB存储服务设计方案_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MongoDB存储服务计方案1.需分析1.1

客车平台货运平台现需求实a.实时轨迹数据:传统文件方式存储,一条轨迹,每天上报8640次,一天大约为1M;件:度移间GPS:夹:码纬里发总擎动:信:路度池:速:油:压:动分辆:系\特点:数据频率高,数据量大。b.实时报警数据:传统文件方式存储,一条报警,每天上报8640次,一天大约为800K;件:码:移度时间:GPS:夹油:警:海:\特点:数据频率高,数据量大。c.驾驶行为事件:传统文件方式存储,一条驾驶行为事100B,每天上报不固定,根据实际生产环境观察,平均每天最大;特点:数据频率不高,数据量小。.专业.专注.d.发动机负荷率:传统文件方式存储,一条发动机负荷率每天上报次,一天大约为;特点:数据频率不高,数据量小。e.拍照数据,图片文件,每天上报数据量不定特点:数据频率不高,数据量小。盲区补传轨迹文件:轨迹文件统计最大数,这里不做统计;盲区补传报警文件:报警文件统计最大数,这里不做统计;实数据存.存储非法轨迹位置;.更新车辆最后位置;.存储、更新车辆上下线;.存储、更新车辆报警;MYSQL数据存.更新车辆最后位置.存储、更新车辆报警操作指令传统数据数据存存储、更新下行指令,建议放中用Capped存放存储车辆多媒体事件存储车辆多媒体信息存储车辆注册,建议放数库。存储车辆鉴权建放在O数据,步供权务。F.存储车辆注销,建议放O据中存储车辆事件报告存储车辆信息点播,建议放数库。存储车辆电子运单,建议放数库。.专业.专注.存储车辆驾驶员信息议放数据库r止次访数库存储车辆行驶记录仪信息,建议放数据中存储、更新车辆调度信息,建议放数据中更新车辆照片信息更新终端参数信息更新路线信息,建议放数库。更新电子围栏,建议放数库。存储、更新终端参数设置,建议放据库。更新终端版本号,建议放数库。存储多媒体数据检索存储上行透传信息存储数据压缩透传更新提问应答MYSQL数据存:存储、更新下行指令,建议废弃,用redis来替代。存储车辆多媒体信息,,建议废弃,用redis来替代。4)历史数据查轨迹回放条件:时间(开始时间、接收时间)、VID;区域查车(当前区域内车辆)条件:车辆类型、车辆速度、是否报警;区域协查(历史区域内车辆)条件:时间;历史报警条件:类型、状态、时间;1.2

现有平台储服务上存问题和GPS.专业.专注.5)题于google)服3|[16569481][66064567][241][404][200][20120312/172641]|[16569423][66064545][241][415][199][20120312/172642].专业.专注.2.方设计2.1

存储服务案设计目标利用MongoDB来一体化解决GPS实时数据(高并发)存储和相关的查询统计业务(如历史轨迹查询),并解决存储服务的长期运营的高可用性问题。具体包括:A.解决GPS实时位置信息存储问题(高并发写、高速查询、高速统计分析);B.解决GPS报警数据存储问题(高并发写、高速查询、统计分析);解决司机驾驶行为数据存储问题(高并发写、高速查询、统计分析);解决拍照数据存储问题(高并发写、自动发布、高速查询);解决区域查车、区域协查等运算量大的业务统计问题;解决存储服务高可用性问题如负载均衡、线性扩容、故障转移、灾备恢复、服务监控等);最终目:简化现有台业务程,减少故节点,高存储服务高可用。2.2

存储方案计细则2.2.1GPS实数存设针对GPS实时数据存储,存储服务提C/C++客户端接口,供通信系统调用,可以直接把GPS数据存放在MongoDB中者无需关系的性能和负载问题。MongoDB采用目前通用的JSON格式,并提供格式的解析和组装包,支持C/C++等众多主流开发语言,方便平台各层面来使用。针对MongoDB的数据格式特点,我们把实时数据格式定义为标准格式,其定义如下:1)GPS实详见“附件1“和”附件2“相关定义。2)司机驾驶行为数据.专业.专注.司机驾驶行为现有平台的数据格式驶行为类型[起始位置纬度][起始位置经度][起始位置高度][起始位置速度][起始位置方向[起始位置时间]|[结束位置纬度][结束位置经度][结束位置高度][束位置速度][结束位置方向][结束位置时间]。具体数据样例:3|[16569481][66064567][241][404][200][20120312/172641]|[16569423][66064545][241][415][199][20120312/172642]3)发动机负荷率数据格式:无固定格式(BASE64后得到)具体数据:-1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000MongoDB数据库格式定义(JSON){"VID":311,"TS":

ISODate("2012-02-17T14:22:46.777Z")"DAT":“-1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000}JSON格式说明:车辆编号(VID)、时间戳(DS)、负荷数据()。2.2.2

拍数存设MongoDB提供GridFS特性,用来存储大文件,如图片文件和视频文件。由通信平台产生的有效拍照图片,可以连同属性信息(如车机、时间戳、图片ID、访问路径http))一起直接存储MongoDB中,方便前端应用查询。.专业.专注.”,2.2.3GPS历数查设GPS数据查询主要包括:实时数据查询和历史数据查询。为解决海量GPS数据查询的效率和并发负载问题时考虑从各方面来设计和优化:1)MongoDB支持对数据进行索引,即可在设计之初就设计好索引,也可在运营期间来对数据的索引进行调整,建议在采用前者。针对历史轨迹数据的查询需求条件:车ID,起止时间,可以对字段创建索引,来提高GPS历史轨迹数据的查询效率。针对报警查询查询需求:起止时间和报警状态,可以对”字段、”字段创建索引。2).专业.专注.在MongoDB服务部署方案中们采用多服务器集群写分离的部署架构通过部署多个写服务和多个读服务,来解决数据存储的效率和服务可靠性、可扩展性问题。3)MongoDB为提高数据查询的效率,也采用了内存机制,把大量的热点数据放在内存中提高数据查询的命中率们可以利用这个特性来满足车辆位置查询的需求。4)车位查询口提供查询车辆最新位置信息询条件为车辆体实现主要是通过MongoDB的缓存机制来完成。可提供Java和JavaScript接口,供上层应用调用。注此与时服的能有重建由服来一供。历轨查询口计提供查询每辆车的历史轨迹数据,查询条件为:车ID、开始时间、结束时间。返回集应包含去除除Can总线后的数据。可提供Java和JavaScript接口,供上层应用调用。注返的据结果量访问要除,少网压、提查率.警据询2.2.4GPS数统设1)提供查询某个区域内、某段时间、都有哪些车辆,查询条件为。提供查询某个区域内、某段时间、都有哪些类型的报警车辆。2)可以按报警类别来统计某个时间段内都有哪些报警车辆。可以统计某辆车在某段时间内的报警次数统计,可按总计、按报警类别来统计。.专业.专注.2.2.5

拍数发和询计通过MongoDB的插件,与Nginx应用服务代理集成,可以直接把存储在MongoDB中的数据发布成Http图片服务,供应用层调用。在具体应用中的业务流程如下:方案说明:解决图片文件储存储分布的问题用把gps数据据、视频数据等都存储在一起,方便管理和维护;解决图片文件便利访问的问题,如文件的属性,文件的存储,文件的访问路径都作为一条记录存储在中,方便上层应用获取;解决图片高效访问的问题,如利Nginx解决图片资源并发访问的问题,利用Squid/Varnishd缓存服务来解决二次访问MongoDB的问题;2.3存储服务业务流程框架设计.专业.专注.MongoDB存储服务提供C++/C#接口Java接口和JavaScript接口,分别为通讯层、服务层和应用层提供存储服务。3.方部署架设计3.1

存储服务MongoDB)部署架构规划设计为保证MongoDB的高用性(并发、高可展性、稳定),我采用了ReplicaSet+Sharding部署架构,这是一可以水扩展的模式在数据很大时给力,实际规模应一般会采用种架构构建MongoDB存系统。MongoDB存储服务方案部署架构设计,如下图所示:.专业.专注.存分片cluster:分别3台服务器(见上图Server-1运行一个mongod实例(见上图mongodshard_11,mongodshard_21shard_31)。副本集:分别3台服务器(见上Server-2运行一个mongod实例(称为mongodshard12,mongod,mongod),其中:

Server-2的mongodshard12Server-2的mongodshard_11的副本。Server-4的mongodshard22Server-2的mongodshard_21的副本。Server-2的mongodshard31Server-2的mongodshard_31的副本。.专业.专注.2台服务器,每台服务器(见上图、Server-3)运行一个实例,作为2个config,其作用是config机热备。3台服务器,每台服务器(见上Server-2运行一个mongos路由进程,用于客户端连接。E.线性扩展:可以同时增2台服务器(见上Server-5)其一个作为分片,另一个作为分片的副本和路由。备说明:mongod:用于个ConfigServer存储分mongod实3可mongodmongosServer(m,。进程在启3.2

存储服务MongoDB)数据分片规划设计1)什么叫分片数据分割以及在不同机器存储数据的过程称之为分片过在多台机器上分割数据得数据库系统能存储更多的数据处理更多的负载此过程中不需要更多更强大的机器。MongoDB分片的基本概念是分割集群成更小的块,或是文档。这些分档可以分布于很多的shards,这样每个shard负载总数据集得子集。举个例子考一下你从集合选择一个安装分片时使用分割数据。这个key称为shardkey。假设你有一个联系人的集合。如果我们选择“姓”作为key,那么一个分片可以存储“姓”开头的片可以存储“姓”开头的,最后一个分片存储“姓”以Q-Z开头的。当你添加和删除分片时会重新做数据的负载,这样每个分片会获取一定量的流量和实际量的数据。.专业.专注.所以在决定什么开始分片呢?考虑一下几个因素:

目前的机器的磁盘什么时候用完;希望比单一的mongod处理速度更快;希望在内存中保留更多的数据以改善性能;3.3

存储服务MongoDB)实例部署规划设计由于本方案是:规划4到6台服务器,多(6个mongod实2个config实例、3各mongos实例)实例同时运行在这些服务器上,所以在部署前需要先规划好服务器的IP地址、实例的名称、实例的分布(在那台服务器上)、实例的端口等,然后再实施。本方案的MongoDB数据库实例部署规划如下表所示:主”

IP

服名端

””

.专业.专注.3.4

存储服务(MongoDB)服务器硬件、网和操作系统划设计1)服务器硬件服务器内存:至少:16G,32G标配,越大越好。硬盘存储空间:1T以上,非RAID格式,越大越好。:不建议用磁盘阵列。服务器CPU:至少4核以上,标配8核,核越多越好。网卡:千兆网卡,双网卡;2)网络规划要MongoDB服务器集群在一个独立的网段内。集群服务器用千兆交换机连接。3)操作系统REDHADLinux64位企业版操作系统,支持中文字符编码。A.关闭文件系统/分区的atime选项Vi/etc/fstab在对应的分区项后面添加noatime,nodiratimeLABEL=/1/ext3defaults11LABEL=/data1/dataext4defaults,noatime,nodiratime12B.设置文件句柄4k+,目前该配置已经集成到启动脚本中。vi/etc/security/limit.conf*softnproc65536*hardnproc65536*softnofile65536*hardnofile65536C.不要使用largevmpage(不要使用大内存页选项)Linux大内存页参考/155/krishnakumar.htmlD.用dmesg查看主机的信息。E.linux文件系统的选择Mongodb采用预分配的大文件来存储数据,我们推荐ext3,xfs..专业.专注.F.Linux系统内核版本网络上对2.6.33-31以及2.6.32的表现持怀疑度,而强力推荐2.6.36G.线程堆栈的尺寸默认的线程堆栈尺寸为10M,调整为1M,已经集成在启动脚本中。3.5MongoDB本规划设计版本号:2.0.3forLiunx64位。注:偶的版本是稳版,奇是开发版,如,1.2头的是稳定1.2.01.2.1,1.2.2等等头的开版(1.3.0,1.3.1,1.3.2等。3.6

存储服务MongoDB)运营监控规划设计4.方案实4.1

实施步骤1).专业.专注.2)3)4)5)4.2

方案整体施计划附件

存储服表MongoDBCollection)结构设计GPS实:gps_his_infos。数.专业.专注.编号

字段名VIDTSLONLATSPDIRALTVSAC

中文对车辆IDGPS时间经度纬度速度方向海拔高度车辆状态报警编码

别名

字段类整数整数整数整数整数整数整数整数

是否索是是是是

备注不包含时区偏移后的偏移后的报警编码子集合

S1S2S3S4S5S6

紧报超报疲驾预导模故导系天未

S1S2S3S4S5S6

整整整整整整接29.13

S7S8S9S10S11S12S13

导天短终主源压终主源电终显屏障语模故摄头障当累驾超

S7S8S9S10S11S12S13

整整整整整整整时69.17

S14S15S16S17

超停进区进路路行时不

S14S15S16S17

整整整整过9.189.19

S18S19

路偏报车速传器

S18整S19整故59.269.279.28

S20S21S22S23S24S25S26S27S28

车油异车被车非点车非位碰侧报严故制气报油报水低警

S20S21S22S23S24S25S26S27S28

整整整整整整整整整.专业.专注.9.299.309.31

S29制蹄磨报警S30空堵报S31缓器温警信

S29整S30整S31整9.329.339.349.35

S32仓报信S33机堵信S34燃堵信S35机温报信

S32S33S34S35

整整整整号9.369.379.389.399.409.419.429.439.44

S36燃警S37空滑告S38超怠告S39怠空告S40发机转警S41急速警S42急速警S43门报S44冷液度高

S36S37S38S39S40S41S42S43S44

整整整整整整整整整9.459.469.47

报S45蓄池压警S46障告S47关点警

S45整S46整S47整

LOLAMILTOWETTERLSALSCTSBVIOWRSPSDADENP

经度纬度里程累计油耗发动机运行时长引擎转速位置状态位区域/线路报警冷却液温度蓄电池电压瞬时油耗记录仪速度机油压力大气压力发动机扭矩百分

整数整数整数整数整数整数整数字符串整数整数整数整数整数整数整数

原始经度原始纬度比

DSST

车辆信号状态系统时间

整数整数.专业.专注.建:为节G实数的存空,我们议用英首符缩方来定每个字的称,然可以、d来示个字段名称,样的处是节存空间缺是可性,但可通过相查询接函数还数项可读差问题GPS报:alarm_his_infos编号

字段名AIDVIDVNODIDSTSSLONSLATSSPSDIRSALTSMILSTOW

中文对报警ID车辆ID车牌号当班司机编号报警开始时间经度(起始位置)纬度(起始位置)速度(起始位置)方向(起始位置)海拔(起始位置)里程(起始位置)累计油位

别名11111111

字段类整数整数字符串整数整数整数整数整数整数整数整数整数

是否索是是是是

备注偏移后的偏移后的置)13

ETS

报警结束时间

E2

整数

ELONELATESPEDIREALTEMILETOW

经度(结束位置)纬度(结束位置)速度(结束位置)方向(结束位置)海拔(结束位置)里程(结束位置)累计油位

2222222

整数整数整数整数整数整数整数

偏移后的偏移后的置)21

AT

报警类型编码

M

整数

详见报警编码对照表.专业.专注.22AS

报警源N

整数

1端企业监控平台,3:政府监管平台,9:其它

BSESSAA

基本状态扩展状态报警附加信

O121

整数整数字符串始位置)26

EAA

报警附加信

P2

字符串束位置)27

ATS

报警时间/系统时

Q

整数

建议和系统时间

间合并28

APS

报警处理状态

R

整数

-1:未处理;0:不作处理;1:将来处理;2:处理完毕

UIDAPTS

报警处理人报警处理时间

整数整数

是31

TODO

督办状态

U

整数

0:未督办;1:内部督办;2:监管平台督办建:为节车报警据存储间我们建采用英首字符写方式定每个字的称,然可以、d来示个字段名称,样的处是节存空间缺是可性,但可通过相查询接函数还数项可读差问题(1)报警类型编码报警类型

报警编号紧急报警超速报警疲劳驾驶预警导航模块故障导航系统天线未接导航天线短路终端主电源欠压终端主电源掉电

0.专业.专注.终端显示屏故障语音模块故障摄像头故障当天累计驾驶超时超时停车进出区域进出路线路线行驶时间不足/过长路线偏移报警车辆速度传感器故障车辆油量异常车辆被盗车辆非法点火车辆非法位移碰撞侧翻报警严重故障制动气压报警油压报警水位低报警制动蹄片磨损报警空滤堵塞报警缓速器高温报警信号仓温报警信号机滤堵塞信号燃油堵塞信号机油温度报警信号燃油警告空档滑行告警超长怠速告警怠速空调告警发动机超转告警急加速报警急减速报警门开报警冷却液温度过高报警蓄电池电压报警ABS故障告警关键点报警(2)报警附加信息

2201.超速报警,格式:位置类型|区域或路段类型:0:无特定位置;1:圆型区域;2:矩形区域;:多边形区域;4:路段.专业.专注.当类型为0时,无区域ID或路段ID值2.进出区域/路段报警附加信息类型式:位置类型|区域或线|方向类型:0:无特定位置;1:圆型区域;2:矩形区域;:多边形区域;4:路线方向:0:进,1:出3.路线行驶时间不足/过长,格式:路段ID|路段行驶时间|结果结果:0:不足,1:过长:driver_action_infos。编号

字段名VIDAIDSTS

中文对车辆ID驾驶行为类型GPS时起始位

别名

字段类整数整数整数

是否索是是是

备注详见下表不包含时区置)

SLONSLATSSPSALTSDIRETS

经度(起始位置)纬度(起始位置)速度(起始位置)海拔(起始位置)方向(起始位置)GPS时结束位

整数整数整数整数整数整数

偏移后的偏移后的不包含时区置)

ELONELATESPEALT

经度(结束位置)纬度(结束位置)速度(结束位置)海拔高位

整数整数整数整数

偏移后的偏移后的置)

EDIRST

方向(结束位置)系统时间

整数整数注驾驶行为类定义:驾驶行为类型加热器工作空调工作发动机超转过长怠速超经济区运行.专业.专注.

行为编号空档滑行怠速空调二档起步档位不当超速疲劳驾驶

:engine_load_infos编号

字段名VIDTSDAT

中文对车辆ID时间负荷数据

别名A

字段类整数整数字符串

是否索是是

备注不包含时区:photo_infos编号

字段名VIDTSFNHPDAT

中文对车辆ID拍照时间文件名发布地址图片

别名

字段类整数整数字符串字符串二进制对象

是否索是是

备注不包含时区.专业.专注.:up_down_command_infos附件

存储服(MongoDB对接口统定存储服务的对外统一接口分为3大类:更新类接口、查询接口和统计类接口。由于写操作接口跟通信服务紧密相关,所以优先提供类型的接口。查询和统计接口跟上层服务和应用紧密相关,所以提供类型的接口和JavaScript接口,这里优先提供Java接口。2.1更类接口1)GPS实.GPSinsertGPSgpsData;:BSONObjBSON数据.专业.专注.

车辆ID

GPS时间

经度纬度::::::::

//

紧报超报疲驾预导模故导系天未接导天短终主源压终主源电终显屏障语模故摄头障当累驾超时超停进区进路路行时不:

路偏报.专业.专注.

车速传器故车油异车被车非点车非位碰侧报严故制气报油报水低警制蹄磨报警空堵报缓器温警信仓报信机堵信

燃堵信机温报信号燃警空滑告超怠告怠空告发机转警急速警急速警门报冷液度高报蓄池压警故障告关点警经度

纬度

区域/线路报警552,

录号

:::::::::2).专业.专注.

累计油耗发动机运行总时长引擎转速冷却液温度蓄电池电压瞬时油耗机油压力大气压力发动机扭矩百分比alarmData参

车辆ID

车牌号码

当班司机编号“P1”:{//报警始置息(类时间)

报警开始时间(经度纬度“P2”:{

报结束置息子)时间)

报警结束时间(经度纬度://

报警类编码(索引时

报警源

基本状态扩展状态

报警附加信息(子)

开始位置结束位置

报警处理人.专业.专注.

时督.车;注为保证储务的能强烈议条车辆警数据次性写,以类口可以提。3).司(C++)insertDriveActionData

驾驶行为类型“P1”:{//开始置息子类时间)

开始位置时间(经度纬度“P2”:{

结位置息子)时间)

结束位置时间(经度纬度.专业.专注.

系统时间4)发.发(C++)insertEngineLoadDataloadData;

车辆ID荷5)拍.拍(

车辆ID

拍照时间”2.2查询类接口1)历史轨迹回.专业.专注.查条queryDBObject对象

车辆ID,”

开始时间结束时间(返结说:DBCursorDBObject对少存

车辆ID

GPS时间

经度纬度::::::.专业.专注.

//

车状子(嵌)紧报超报疲驾预导模故导系天未接:::

导天短终主源压终主源电终显屏障语模故摄头障当累驾超时超停进区进路路行时不:

路偏报.专业.专注.

车速传器故车油异车被车非点车非位碰侧报严故制气报油报水低警制蹄磨报警空堵报缓器温警信仓报信机堵信燃堵信机温报信号燃警空滑告超怠告怠空告发机转警急速警急速警门报冷液度高报蓄池压警故障告关点警位置基本信息状态位2,

车辆信号状态为MongoDBJava驱动程序DBCursorJava驱动程为.C++接口outGPSDatas);Java接口C++接口可、查条queryDBObject对象

车辆ID,”

开始时间结束时间”:{//

车辆报状态编码(类)

//

紧报::.专业.专注.

超报疲驾::::::

预导模故导系天未接导天短终主源压终主源电终显屏障语模故摄头障当累驾超时超停进区进路路行时不:

路偏报.专业.专注.

车速传器故车油异车被车非点车非位碰侧报严故制气报油报水低警制蹄磨报警空堵报缓器温警信仓报信机堵信燃堵信机温报信号燃警空滑告超怠告怠空告发机转警急速警急速警门报冷液度高报蓄池压警故障告关点警查询条件为:VehicleID&&($gtBeginDate&&$ltEndDate(AlarmState.s1AlarmState.s4AlarmState.s9。返结说:DBCursorDBObject对少存

车辆ID

车牌号码

当班司机编号“P1”:{//报警始置息(类时间)

报警开始时间(经度纬度“P2”:{

报结束置息子)时间)

报警结束时间(经度纬度://

报警类编码统时间.专业.专注.

报警源

基本状态扩展状态“AA”{

报附加息子)

开始位置结束位置处

报警处理人

时督.C++接口;Java接口C++接口可3)司机驾驶行.C++接口outActionDatas);4)发动机负荷.C++接口.专业.专注.outActionDatas);5)拍照数据查、查条queryDBObject对象

车辆ID”

开始时间结束时间返结说:DBCursorDBObject对

车辆ID

拍照时间文:““字,.专业.专注.4).C++接口5)区域协查接.C++接口outResultDatas);2.3统计接口1)车辆报警数2)司机驾驶行.专业.专注..专业.专注.附件

存储服(MongoDB安部署说3.1安装MongoDB下载安装mongodb,下载最新文档版,目前最新稳定版为下载地址:/downloads下载列表如下所示。选择:Linux64-bit下载MongoDB,安cd/root/toolswget/linux/mongodb-linux-x86_64-2.0.3.tgztarzxvfmongodb-linux-x86_64-2.0.3.tgzmvmongodb-linux-x86_64-2.0.3/elain/apps/mongodb-linux-x86_64-2.0.3ln-s/elain/apps/mongodb-linux-x86_64-2.0.3/elain/apps/mongodb.专业.专注.ln-s/elain/apps/mongodb/bin/*/bin/添加户/usr/sbin/groupa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论