提高磁盘可靠性的技术:保障数据安全的四大方法
目录
1. 第一级容错技术
磁盘镜像(Mirroring)
工作原理
RAID 1
工作原理
优点
缺点
适用场景
示例
2. 第二级容错技术
概述
RAID 5
RAID 6
优点
缺点
适用场景
3. 基于集群系统的容错技术
概述
Hadoop HDFS
Ceph
优点
缺点
适用场景
4. 后备系统
磁带库
优点
缺点
云备份
优点
缺点
优点总结
缺点总结
适用场景
示例
综合对比
结语
在现代计算机系统中,磁盘存储是数据存储的核心。然而,磁盘故障会导致数据丢失和系统中断,因此提高磁盘可靠性显得尤为重要。本文将探讨四种提高磁盘可靠性的技术:第一级容错技术、第二级容错技术、基于集群系统的容错技术和后备系统。
1. 第一级容错技术
概述
第一级容错技术主要通过硬件冗余实现数据保护,即在物理磁盘层面提供容错能力。这类技术包括磁盘镜像(Mirroring)和 RAID 1。它们的主要目的是确保在硬件故障时,数据能够得到保护,并且系统可以迅速恢复。
磁盘镜像(Mirroring)
磁盘镜像 是将数据实时复制到另一块磁盘上。这样,即使一块磁盘发生故障,数据仍然可以从镜像磁盘上恢复。磁盘镜像是一种简单而有效的数据冗余方法,广泛应用于各种存储系统中。
工作原理
在磁盘镜像配置中,所有写入操作都会同步到主磁盘和镜像磁盘。读取操作可以从任意一块磁盘进行,通常读取压力会均匀分布到两块磁盘上以提高性能。
RAID 1
RAID 1(Redundant Array of Independent Disks Level 1) 是一种常见的磁盘镜像技术,通过将数据同步写入两个或多个磁盘,实现数据冗余。RAID 1 是 RAID 技术中最基本的镜像级别。
工作原理
RAID 1 配置中,所有数据块同时写入两个或多个磁盘。这样,如果其中一块磁盘发生故障,系统可以立即从另一块磁盘读取数据,确保数据的完整性和可用性。
优点
- 高数据安全性:即使一块磁盘损坏,数据仍然可以从镜像磁盘恢复,确保数据的安全性。
- 快速恢复:故障发生时,系统可以立即切换到镜像磁盘,减少停机时间,保持业务连续性。
- 读取性能提升:读取操作可以从多块磁盘中并行进行,提高读取性能。
缺点
- 成本高:磁盘镜像和 RAID 1 都需要两倍的存储空间,以实现数据冗余,从而增加了硬件成本。
- 写入性能影响:写操作需要同步到多块磁盘,可能会影响写入速度,尤其是在写入频繁的应用场景中。
适用场景
第一级容错技术适用于对数据安全性要求极高的应用场景,特别是那些无法容忍数据丢失或长时间停机的业务环境。例如:
- 金融系统:银行、证券交易系统等,对数据完整性和可用性要求极高,使用磁盘镜像或 RAID 1 可以确保数据安全和系统高可用性。
- 关键业务数据库:企业的核心业务数据库,如客户信息系统、订单处理系统等,数据丢失将造成严重后果。
- 医疗系统:医院的电子病历系统、医疗影像存储系统等,确保数据的安全和实时可用至关重要。
- 政府和公共服务机构:数据安全和业务连续性对政府和公共服务机构至关重要,使用第一级容错技术可以确保关键数据不丢失。
示例
假设我们有一个重要的业务应用系统,采用 RAID 1 来保护数据。系统配置了两块 1TB 的硬盘,组成 RAID 1 阵列。写入操作如下图所示:
写操作:数据 -> 磁盘1(Data1) -> 磁盘2(Data1)
如果磁盘1发生故障:
读取操作:系统自动切换 -> 磁盘2(Data1)
即使磁盘1损坏,系统仍然可以从磁盘2读取数据,保持业务持续运行。与此同时,系统管理员可以更换损坏的磁盘1,并重新构建镜像。
2. 第二级容错技术
概述
第二级容错技术(Second-Level Fault Tolerance)通过数据校验和纠错机制实现更高的容错能力。常见的第二级容错技术包括RAID 5和RAID 6,它们利用奇偶校验信息来保护数据,当磁盘发生故障时,可以通过校验信息恢复数据。
RAID 5
RAID 5 通过将数据和奇偶校验信息分布存储在多个磁盘上,实现数据冗余。每个磁盘上都存储一部分数据和一部分奇偶校验信息。当一块磁盘发生故障时,可以通过剩余磁盘的数据和校验信息恢复丢失的数据。
示例:
数据块 1 | 数据块 2 | 数据块 3 | 数据块 4磁盘 A: 1 | 2 | P1,2 |磁盘 B: 3 | P2,3 | 4磁盘 C: P1,3 | 3 | 2
(P代表奇偶校验块)
RAID 6
RAID 6 在RAID 5的基础上增加了一个额外的奇偶校验信息,能够容忍两块磁盘同时故障。RAID 6使用双重奇偶校验技术存储冗余信息,确保在两块磁盘同时故障的情况下依然能够恢复数据。
示例:
数据块 1 | 数据块 2 | 数据块 3 | 数据块 4磁盘 A: 1 | 2 | P1,2 | Q1,2磁盘 B: 3 | P2,3 | 4 | Q2,3磁盘 C: Q1,3 | 3 | P1,4 | 2磁盘 D: P3,4 | Q4,1 | 1 | 3
(P和Q代表两种不同的奇偶校验块)
优点
-
较高的数据安全性:
- 能有效抵御单块或双块磁盘故障。RAID 5可以容忍一块磁盘故障,RAID 6可以容忍两块磁盘同时故障。
-
存储效率较高:
- 相比RAID 1,RAID 5和RAID 6的存储空间利用率更高。RAID 1需要多倍的存储空间来保存冗余数据,而RAID 5和RAID 6通过奇偶校验信息实现冗余,节省了存储空间。
缺点
-
复杂性增加:
- 数据恢复过程复杂,尤其是RAID 6。双重奇偶校验技术增加了系统的复杂性,数据恢复和重建的过程也更加复杂。
-
写入性能影响:
- 奇偶校验计算和分布存储增加了写入延迟。每次写操作需要计算和更新奇偶校验信息,这对写入性能有一定的影响。
适用场景
第二级容错技术适用于需要高可靠性和高存储效率的企业级应用和数据中心,如:
- 企业级存储系统:需要高可靠性和高性能的企业存储解决方案,以确保业务连续性和数据安全。
- 数据中心和云存储:大规模数据存储和管理需要高效的数据保护机制,RAID 5和RAID 6能够提供可靠的存储解决方案。
3. 基于集群系统的容错技术
概述
基于集群系统的容错技术(Cluster-Based Fault Tolerance)通过多台计算机组成集群系统,实现数据冗余和故障切换。该技术利用多个节点来存储和处理数据,即使某些节点发生故障,系统仍能正常运行,确保数据的安全性和可用性。以下是两种常见的集群系统容错技术:Hadoop HDFS 和 Ceph。
Hadoop HDFS
HDFS(Hadoop Distributed File System)是 Hadoop 生态系统的一部分,专为大数据处理设计。它通过将数据分块存储在多个节点上,并为每个块创建多个副本,实现容错和高可用性。
- 数据分块和副本:HDFS 将文件划分为固定大小的数据块(通常为64MB或128MB),每个数据块存储在不同的节点上,并创建多个副本(通常为3个)。
- NameNode 和 DataNode:HDFS 由一个 NameNode 和多个 DataNode 组成。NameNode 负责管理文件系统的元数据,而 DataNode 负责存储实际的数据块。
- 故障检测和恢复:如果某个 DataNode 发生故障,NameNode 会检测到并启动副本的重新复制,确保数据块的副本数量符合预期。
Ceph
Ceph 是一种高性能、可扩展的分布式存储系统,支持对象存储、块存储和文件存储。它通过 CRUSH(Controlled Replication Under Scalable Hashing)算法将数据分布在集群中的不同存储设备上,实现高可靠性和高可用性。
- CRUSH 算法:CRUSH 算法根据集群拓扑和存储策略,将数据分配到不同的存储设备上,避免单点故障。
- OSD(Object Storage Daemon):Ceph 采用 OSD 进程来管理存储设备,每个 OSD 进程负责管理一个存储设备。
- Monitor 和 Manager:Ceph 的 Monitor 负责维护集群状态和一致性,而 Manager 提供集群管理和监控功能。
优点
- 高可扩展性:基于集群系统的容错技术可以根据需要增加存储节点,灵活扩展存储容量,满足大规模数据存储和处理的需求。
- 高可靠性:通过多个副本和智能数据分布算法,确保数据的高可靠性,即使某些节点发生故障,数据仍能得到保护。
- 高可用性:集群系统具有自动故障切换和恢复机制,确保系统的高可用性,减少因故障导致的停机时间。
缺点
- 管理复杂:集群系统的部署和维护需要专业知识和经验,包括硬件配置、网络配置、监控和故障排除等。
- 网络带宽需求高:数据复制和同步需要消耗大量网络带宽,可能对网络性能造成影响,特别是在大规模集群环境下。
适用场景
基于集群系统的容错技术适用于以下场景:
- 大数据处理:例如 Hadoop HDFS,适用于需要处理和存储大规模数据的应用,如数据分析、机器学习和日志处理等。
- 云存储系统:例如 Ceph,适用于云计算环境中的对象存储、块存储和文件存储,满足高扩展性和高可用性的需求。
- 高性能计算:需要高可靠性和高可用性的应用,如科学计算、金融分析和实时数据处理等。
4. 后备系统
概述
后备系统通过定期将数据备份到独立存储设备上,实现数据保护和恢复。常见的后备系统包括磁带库和云备份。这些系统确保在发生自然灾害、人为错误或硬件故障时,重要数据能够被恢复。
磁带库
磁带库 使用磁带介质存储数据备份。磁带库具有成本低和存储容量大的优点,特别适合长期数据归档和大规模数据备份。
优点
- 成本效益高:磁带介质相对廉价,适合存储大量历史数据。
- 大容量存储:磁带库能存储大量数据,适合长期归档和冷数据存储。
- 防灾能力强:磁带可以离线存储,物理隔离防止自然灾害和网络攻击。
缺点
- 恢复时间长:从磁带库恢复数据需要较长时间,包括找到相应磁带、加载和读取数据。
- 数据访问不便:磁带介质的随机访问速度较慢,不适合频繁访问的数据。
云备份
云备份 将数据备份到云存储服务提供商的数据中心。云备份具有高可用性和灵活性,用户可以随时随地访问备份数据。
优点
- 高可用性:云备份的存储服务通常有很高的可用性,数据可以快速恢复和访问。
- 灵活性:用户可以根据需求动态调整存储空间,按需付费。
- 防灾能力强:备份数据存储在异地云数据中心,能够防止自然灾害和人为错误导致的数据丢失。
缺点
- 成本:云存储按使用量付费,长时间大量数据存储可能成本较高。
- 数据一致性问题:备份通常是定期进行的,可能导致最新数据未被备份。
- 网络依赖:数据备份和恢复都依赖于网络带宽和稳定性,可能受到网络条件限制。
优点总结
- 防灾能力强:通过将备份数据存储在异地(无论是物理隔离的磁带库还是云数据中心),后备系统可以有效防止自然灾害和人为错误导致的数据丢失。
- 成本效益高:尤其是磁带库,适合大量历史数据的长期存储,能够以较低成本实现大容量数据备份。
缺点总结
- 恢复时间长:从后备系统恢复数据需要较长时间,可能导致较长的停机时间,影响业务连续性。
- 数据一致性问题:备份是定期进行的,这意味着在备份之间的时间段内生成的新数据可能未被备份,存在数据丢失的风险。
适用场景
- 数据归档:后备系统特别适用于需要长期存储大量数据的企业和组织,如金融机构、政府部门和大规模数据处理企业。
- 灾难恢复:为应对自然灾害、人为错误或系统故障等突发情况,后备系统提供了可靠的灾难恢复手段,确保数据安全和业务连续性。
示例
假设一家大型企业使用磁带库和云备份作为后备系统:
-
磁带库:
- 企业每月将所有财务数据备份到磁带库中,磁带库存储在异地的安全设施中。
- 优点是成本低、存储容量大,适合长期归档。
- 缺点是恢复数据时,需要找到相应的磁带并加载,恢复时间较长。
-
云备份:
- 企业每天将生产数据备份到云存储,确保数据的高可用性和灵活性。
- 优点是数据可以快速恢复和远程访问,适合频繁访问和快速恢复的场景。
- 缺点是长期存储大量数据可能成本较高,并且依赖网络条件。
综合对比
特性 | 磁带库 | 云备份 |
---|---|---|
成本效益 | 高 | 依数据量和使用时间变化 |
恢复时间 | 长 | 较短 |
存储容量 | 大 | 动态调整 |
易用性 | 低 | 高 |
防灾能力 | 强 | 强 |
数据一致性问题 | 存在 | 存在 |
结语
提高磁盘可靠性对于保障数据安全和系统稳定性至关重要。第一级和第二级容错技术提供了硬件级和数据校验级的保护,基于集群系统的容错技术通过分布式存储实现高可靠性,而后备系统则为数据灾难恢复提供了保障。根据具体应用需求和预算,选择合适的技术可以大大提高系统的可靠性和数据安全性。
相关文章:
提高磁盘可靠性的技术:保障数据安全的四大方法
目录 1. 第一级容错技术 磁盘镜像(Mirroring) 工作原理 RAID 1 工作原理 优点 缺点 适用场景 示例 2. 第二级容错技术 概述 RAID 5 RAID 6 优点 缺点 适用场景 3. 基于集群系统的容错技术 概述 Hadoop HDFS Ceph 优点 缺点 适用场…...
CesiumJS【Basic】- #006 浏览器控制台查看位置角度
文章目录 浏览器控制台查看位置角度1 目标 浏览器控制台查看位置角度 1 目标 浏览器控制台查看位置角度...
Mac 终端报错 zsh: command not found: brew 解决方案
Homebrew安装 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装成功后,在终端输入下面命令 brew -v如果成功输出brew版本,则安装成功 关闭终端重新打开终端,报错zsh: comm…...
详解 HBase 的常用 API
一、环境准备 创建一个 Maven 工程并引入依赖 <dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-server</artifactId><version>1.3.1</version> </dependency> <dependency><groupId>org.apach…...
JSR303校验
校验的需求 前端请求后端接口传输参数,需要校验参数。 在controller中需要校验参数的合法性,包括:必填项校验、数据格式校验等在service中需要校验业务规则,比如:课程已经审核过了,所以提交失败。 servi…...
04 远程访问及控制
1、SSH远程管理 SSH是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。 SSH协议对通信双方的数据传输进行了加密处理(包括用户登陆时输入得用户口令)。 终端:接收用户的指令 TTY终端不能远程,它…...
[晕事]今天做了件晕事38 shell里的source 点号
今天碰到一个问题脚本里使用点号引入某个文件形式如下: . /tmp/abc但是脚本运行出现错误,一开始还以为是/tmp没有可执行权限(https://mzhan017.blog.csdn.net/article/details/112178736#t16),导致abc运行不了。 后来…...
java如何分割字符串
java要实现对字符串的分割,需要用到split语句 语法格式是 str.split(分隔符) 其中 str是字符串 示例代码如下 public class Stringsplit {public static void main(String[] args) {String a"蒸羊羔,蒸熊掌,蒸鹿尾,烧花…...
胡说八道(24.6.12)——数字电子技术以及Modelsim
上回书说到数电中的最常用的表达式——逻辑表达式(由布尔代数组成)以及常用的两种图表——真值表(真值表表示的是所有的输入可能的线性组合以及输出)和卡诺图(卡诺图则是一种化简工具,排除冗余项,合并可合并项)。 今天,先来看看昨天说的基本逻…...
【Android面试八股文】AsyncTask中的任务是串行的还是并行的
文章目录 串行执行并行执行示例代码串行执行(默认)并行执行总结AsyncTask 的任务执行方式可以是串行的,也可以是并行的,这取决于使用的执行器 ( Executor)。 串行执行 默认情况下,AsyncTask 使用的是 SERIAL_EXECUTOR,即任务按顺序一个接一个地执行。这意味着下一个任务…...
无人机RTMP推流EasyDSS直播平台推流成功,不显示直播按钮是什么原因?
互联网视频云平台/视频点播直播/视频推拉流EasyDSS支持HTTP、HLS、RTMP等播出协议,并且兼容多终端,如Windows、Android、iOS、Mac等。为了便于用户集成与二次开发,我们也提供了API接口供用户调用和集成。在无人机场景上,可以通过E…...
经验分享,xps格式转成pdf格式
XPS 是一种电子文档格式、后台打印文件格式和页面描述语言。有时候微软默认打印机保存的是xps格式,我们如何转换为pdf格式呢,这里分享一个免费好用的网站,可以实现。 网站:https://xpstopdf.com/zh/ 截图:...
基于51单片机的音乐彩灯设计
基于51单片机的音乐彩灯设计 (程序+原理图+设计报告) 功能介绍 具体功能: 由STC单片机ADC0809模块LM386功放模块喇叭音频接口发光二极管电源构成 1.通过音频线输入可以播放电脑、手机、MP3里面的音乐。 2.AD对音频…...
API接口设计的艺术:如何提升用户体验和系统性能
在数字时代,API接口的设计对于用户体验和系统性能有着至关重要的影响。良好的设计可以显著提升应用程序的响应速度、可靠性和易用性。以下是几个关键点,帮助改善API接口的设计: 1. 理解并定义清晰的要求 用户研究:与最终用户进行…...
韩兴国/姜勇团队在《Trends in Plant Science》发表植物根系氮素再分配的观点文章!
氮素是陆地生态系统中的关键限制性营养元素,通过生物固氮和土壤氮供应通常远低高等植物的氮需求。当土壤氮素供应无法充分满足植物茎叶生长需求时,植物会通过自身营养器官(如根或根茎)再分配来实现氮的内部循环和再利用。尽管植物…...
52.Python-web框架-Django - 多语言编译-fuzzy错误
目录 1.起因 2.原因 3.解决方法 3.1手动移除fuzzy标记 3.2重新生成po文件,并检查是否还存在fuzzy标记 3.3重新编译生成mo文件 1.起因 在Django的国际化和本地化过程中,当你发现某些字段仅显示msgid,而不显示msgstr时,可能是…...
Linux自旋锁
面对没有获取锁的现场,通常有两种处理方式。 互斥锁:堵塞自己,等待重新调度请求自旋锁:循环等待该锁是否已经释放 本文主要讲述自旋锁 自旋锁其实是一种很乐观的锁,他认为只要再等一下下锁便能释放,避免…...
服务器----阿里云服务器重启或关机,远程连接进不去,个人博客无法打开
问题描述 在使用阿里云免费的新加坡服务器时,发现重启或者是关机在开服务器后,就会出现远程连接不上、个人博客访问不了等问题 解决方法 进入救援模式连接主机,用户名是root,密码是自己设置的 点击访问博客查看更多内容...
go 定时任务
在 Go 语言中,可以使用内置的 time 包来实现定时任务。以下是一个简单的示例: go package main import ( "fmt" "time" ) func main() { timer : time.NewTimer(2 * time.Second) <-timer.C fmt.Println(…...
Java Character 类
Java Character 类 Character 类用于对单个字符进行操作。 Character 类在对象中包装一个基本类型 char 的值 char ch a;// Unicode 字符表示形式char uniChar \u039A; // 字符数组char[] charArray { a, b, c, d, e };然而,在实际开发过程中,我们经…...
MQTT协议应用场景
MQTT协议的应用场景非常丰富,特别是在物联网领域。以下是对MQTT协议应用场景的清晰归纳: 1.物联网设备控制和监控:MQTT被广泛应用于物联网设备之间的通信,如智能家居、智能城市和工业自动化等领域。设备可以发布自身状态到特定主题…...
3.4.马氏链-随机游走的常返性
随机游走的常返态 1. 随机游走常返性定义1.1. 随机游走常返值和可能集1.2. 随机游走常返性2. 简单随机游走: 维数与常返性的关系2.1. 简单随机游走2.2. 二维及以下简单随机游走常返, 三维及以上简单随机游走非常返3. 随机游走 ( d ≤ 2 ) (d\leq 2) (d≤2): 常返的充分条件4. 随…...
HOT100与剑指Offer
文章目录 前言一、41. 缺失的第一个正数(HOT100)二、6. 从尾到头打印链表(剑指Offer)总结 前言 一个本硕双非的小菜鸡,备战24年秋招,计划刷完hot100和剑指Offer的刷题计划,加油! 根…...
【AI开发】CRAG、Self-RAG、Adaptive-RAG
先放一张基础RAG的流程图 https://blog.langchain.dev/agentic-rag-with-langgraph/ 再放一个CRAG和self-RAG的LangChain官方博客 Corrective RAG(CRAG) 首先需要知道的是CRAG的特色发生在retrieval阶段的最后开始,即当我们获得到了近似的document(或者…...
FFmpeg中内存分配和释放相关的源码:av_malloc函数、av_mallocz函数、av_free函数和av_freep函数分析
一、av_malloc函数分析 (一)av_malloc函数的声明 av_malloc函数的声明放在在FFmpeg源码(本文演示用的FFmpeg源码版本为5.0.3,该ffmpeg在CentOS 7.5上通过10.2.1版本的gcc编译)的头文件libavutil/mem.h中:…...
七天进阶elasticsearch[Four]
依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId>...
数据库-数据定义和操纵-DDL语言的使用
创建一个数据库: create database 数据库名; 选择数据库: use 数据库名; 创建表 create table 表名( ); 添加字段; ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件] [FIRST|AFTER 已存在字段名] ; 删除字段: ALTER TABLE 表…...
黄金价格与美元的关系变了?
在一些传统的定价框架中,现货黄金的价格走势取,决于美元的实际利率水平——实际利率越高,黄金价格越低,反之亦然。在大多数的时候,美元的实际利率决定了美元指数的高低所以人们通常认为,现货金价与美元呈反…...
VB.net与C# 调用InitializeComponent的区别
VB.NET与C# 调用InitializeComponent的区别 在VB.NET和C#中,InitializeComponent 方法的调用方式有所不同。 C#: 在C#中,InitializeComponent 方法通常是在构造函数中显式调用的。它用于初始化窗体和控件的属性。代码示例如下: public pa…...
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法 经典例题》C语言 期待您的关注 目录 一、问题描述 二、解题思路 方法一:数学公式推导法 方法…...
房地产行业现状与未来/百度seo优化
物联网因其宏大主题,以及巨大的应用想象空间而备受政府和企业的关注。国际电信联盟 (ITU) 对物联网的定义:“物联网主要解决物品到物品 (Thing to Thing,T2T),人到物品(Human to Thing,H2T),人到人 (Human …...
网站建设中 网页代码/国外外链平台
参加项目已经有一段时间了,笔者在web标准设计方面的学习有了不少进步.之前学习和实践都是边Google边看书进行的,只输入没输出,也很少和大家进行交流.项目已经接近尾声,有必要进行总结,把自己学到的悟到的在博客园与大家分享交流,同时温故知新,希望在此过程中学到更多的东西.于是…...
国家网站备案查询系统/软件开发培训学校
一道easy题,题目如下,不过是一道数学题,以后可能会用到相关的结论,所以记录下 其实就是相当于 [ ]1[ ]2[ ]3[ ]...[ ]n target 让你在括号里填上符号,使得n最小 思路: 如果不按照某个方向一直走&#x…...
代做毕业设计网站有哪些/微信营销模式有哪些
它是 子Logger 是否继承 root的Logger 的 输出源(appender) 的标志位。 具体说,默认情况下子Logger会继承root的Logger的appender,也就是说子Logger会在root的Logger的appender里输出。 1.若是additivity设为false,则…...
怎样使wordpress网站文章左对齐/免费外链发布
热电偶在工业生产和科学研究等领域中已成为应用最广泛的感温元件。热电偶保护套管材料的性能影响热电偶长期稳定性、使用寿命等各项性能指标。在高温下工作的热电偶,对其套管材料的要求更加严格。制作高温条件下应用的热电偶保护套管,材料除具备普通热电…...
惠东做网站/重庆网络seo公司
更多招聘详情请登录http://www.itcast.cn/subject/zpcyr/index.html 了解 招聘说明: 大部分程序员刚转型到讲师岗位,总会有一些怕自己不适合的担忧,我们对这部分程序员可提供丰富的周末兼职机会,让您稳定后,再进行职业…...