51CTO专家门诊第196期 服务器并行开发基础

企业动态
在服务器集群开发、大型工程程序开发中,我们越来越多地碰到多线程、多任务模型的开发。这已经成为现代程序设计的一个重要特征。这其实已经是并行开发了,涉及到方方面面的知识储备,如内存控制、IO控制、锁的控制等,甚至包括全新的程序世界观。

在服务器集群开发、大型工程程序开发中,我们越来越多地碰到多线程、多任务模型的开发。这已经成为现代程序设计的一个重要特征。这其实已经是并行开发了,涉及到方方面面的知识储备,如内存控制、IO控制、锁的控制等,甚至包括全新的程序世界观。 (专家门诊链接:http://doctor.51cto.com/develop-210.html

本期门诊邀请分布式数据库研发、数据传输工程师、无错化程序设计专家肖舸先生,针对服务器并行开发基础技术展开讨论。欢迎网友积极提问,与专家一起交流学习!

Q:肖专家您好:

对于现在中小型企业,有没有必要实施服务器群集?对于服务器上的网站数据备份和数据库的备份,有没有很好解决方案,另外O-bug是一项技术么?数据库的开发和应用,就现在的技术而言,能不能完全解决企业的问题?

A:肖舸

这位朋友,你好:

我觉得你的问题有点见仁见智,现在是大规模数据时代,我们目前一个应用需要处理的数据规模,可能在10年,甚至5年前,想都不敢想的,因此,我认为即便是中小型企业,为了处理日益增长的数据使用需求,应该考虑使用服务器集群技术,另外,很可能在不久的将来,可能使用的是云技术,这个我个人理解,是服务器集群基于应用细分后,更高一层的抽象。

毕竟,即便是再小的企业,只要它不断成长,成为百年老店也是有可能的,那,一百年的数据积累下来,你猜猜会怎么样?呵呵。

数据库备份我做得比较少,不好提太多意见,如果是程序员,我会建议他从并行角度,在后台直接实现缓步备份技术,但一般应用型企业的网管,我的建议是可以考虑采购商用备份软件。

0bug是我写的一本书的名字,其实也是我作为程序员的一个梦想,很多年以前,我受困于bug,就想,以后如果写出程序来就没有bug,该多好啊。呵呵,这么多年一直努力,但是,可惜现在我也没能写出一个真正0bug的程序。

但是,我想作为程序员,有这个追求是最重要的。你说呢?

我书里面主要探讨了很多无错化程序设计的方法和原则,特别是近年来很多,但是程序员学习比较少的多线程、多任务、并行环境下,在增加了锁的干扰之后,如何实现0bug的程序设计办法,有兴趣可以看看。

数据库的开发和应用,我的理解是一门应用科学,需要结合具体应用场景、业务来考量,我认为这是一个永远有发展前途的工作,我本人目前也在进行工业用实时数据库的开发工作。

我认为,IT行业走到今天,已经不能仅仅是炒概念了,而是要为社会实实在在做点贡献了,而最突出的贡献无非两个,一个是软硬结合,提供全方位的完美用户体验,比如ipad,还有就是切实针对用户实际数据需求的数据库技术。

起码到目前为止,我认为各个企业的数据库需求,其实都有解决方案,无非是成本高低而已。我认为程序员以后的发展方向,更多的是在熟练掌握各项基本技能的基础上,在掌握无错化开发技巧上,以更低的成本,为用户提供更高效的数据服务。

嗯,一家之言哈,仅供参考。

Q:舸哥,你好!

我现在一家大型企业从事网络管理工作,对于服务器集群及负载均衡技术类的硬件产品你觉得使用哪个厂家的比较好呢;

A:肖舸

目前这方面其实可选择余地并不多。因为真正的负载均衡,除非量身定制的开发,其实都差不多。

不过,如果是大型集群,我建议可以与IBM合作。

Q:老师您好:

如果是中小型事业集群,WindowsServer系列的DataCenter版,也不错。

嗯,其实这么说我心里也没底,我建议,具体问题具体分析,你可以email我你们具体的应用数据需求,我试试看,能不能给点具体的建议。

不好意思啊。

如果我要做一个操作,需要通过查询得到数据结果,可是如果数据量大的话每次查询势必会耗费性能,怎么做才能既只要消耗小部分性能又能得到数据呢?

A: 肖舸

其实我们目前面临的很多应用,都属于数据中心型(Data Center),只要是数据中心,就免不了增改删查四个基本动作。

所以数据查询是永恒存在的。

而且,我发现近年来很多趋势和过去不一样了。

过去,IT业主要解决“有无”问题,即数据的有和没有这个问题,因此,我们花了大量的功夫,来做数据的采集和存储,包括工业现场的各种DCS系统等等。

但是,现在用户口味“刁了”:“你能采集,能存储,嗯,我承认你有这个本事,但是,这些采集和存储的数据,对我有什么意义?怎么才能真正帮助我的工作和生活?你回答我?”

这是现在的用户环境。

因此,我觉得现在IT业面临的一个重大转型,就是如何从数据的采集、存储这类“计算机”界擅长的东东,转为真正针对细分市场,针对用户个性化需求的数据的“用”的技术。我想,这大概是今后几十年,我们IT业面临的一个巨大的问题。

能应对的,会笑到最后。

而这个问题,不可避免的,就是你说的“查询”技术。

这包括很多,海量数据的挖掘、高效的数据分析。还得结合具体软硬件环境构建的用户使用环境,等等。

目前我做的工作,可以说就是在前期高效存储的基础上,研究如何更好提升查询效率的办法。

我的解决方案是从开发阶段就做优化,比喻一些数据预处理技术,一些存储优化技术,比如采用B+树模型存储,数据取模,多级定位等技术。嗯,还有就是Cache技术。

方法有很多啦,无一定之规,这个要针对具体需求来。

因此,对于你的问题,我唯一的建议就是基于“顺序遍历、平衡二叉树管理、哈希型管理”这个顺序来,逐一在符合成本需求的前提下,尽可能好地解决问题。

Q:舸哥

您好!我是企业的系统管理员,现在企业慢慢在扩大,有可能要实施服务器集群,我想问下具体应该注意哪些事项,感觉现在压力很大!!!

A: 肖舸

你也说了企业慢慢在扩大,那说明这个服务器集群化,应该是一个循序渐进的过程,我觉得此时从心理上,还是不要焦急。

不过呢,既然有这个压力,我认为针对这些东东,现在开始学习,做一些知识预储备比较好。

你已经是网管员,基础知识应该已经有了,下面就是针对应用需求开始做针对性的准备。

我建议你这段时间,可以多接触一些大公司,比如hp、IBM、cisco、华为的技术人员和销售人员,把自己的需求提出来,请教他们,并作为潜在的客户和他们沟通,我想,在他们给你的方案建议和技术白皮书里面,你应该能学到很多东东。

还有就是多看一些书籍,多到网站提问哈,请大家帮忙解答。

我认为所有问题,都是可以细分拆解的,你的问题也类似,其实,这个拆解过程本身,就体现你的一个网络拓扑设计能力。

因此,我建议你从现在开始,对企业未来3~5年的IT应用需求开始着手分析,要有一定前瞻性,然后还可以写一些相关文档,做一些方案建议,请你的主管点评,并且为主管申请预算留出足够的时间,如何?

当把问题拆细了,比如公司有几个分支机构,分支机构之间保密数据通信方案,VoIP语音方案甚至IP视频会议方案等,企业总部的安全性问题,防火墙的设计,企业总的带宽流量需求和管控,各个分支机构的管控等等,我觉得不难的。

另外,这里也说明一点,我是程序员,不是专业的网管人员,这方面的问题,我能提点建议,但是不是很专业,很多网管类的话题,还请咨询更加专业的人士哈。

嗯,我说的分布式数据库研发,可能和大家想的也不太一样,别人可能是利用现成的数据库,组建分布式服务器集群,来处理海量数据,属于数据应用类开发。

我这边稍稍有点不同,我是在研发一种能高效处理的海量数据的数据库产品,这个产品是卖给别人后,别人在我的数据库基础上做上述事情的,嗯,可能我的更底层一点哈,希望大家不要误会了。

Q:老师您好:

对于企业来说,什么样的服务才需要的群集?

那么群集自然会提高服务的高可用性,怎么样才能有效的管理呢?

A: 肖舸

这个问题很难讲,因为服务种类太多了,需要细分,逐一分析来判定。

讲点原则吧。

需要高安全性,高吞吐量,高稳定性的服务,大概需要集群服务。

这个看数据规模,以及用户对数据安全性的敏感程度。这个安全性一个是数据被访问的安全性,也有数据保存的安全性。

使用群集,只能说有可能提高可用性,但是还是要看设计,因此,群集服务可以说是研发者和使用者共同来完成的一项工作,仅仅有钱购买产品是不够的,需要管理员仔细分析本企业的用户需求,设计合适的方案,选择合适的产品,来搭配合理的集群。

我想,这个群集服务,是最能体现网管员的技术实力的。

至于管理,很多群集软件产品,都带有自己的管理器,但是,往往不合用,因此,群集前端,一般需要企业定制,或者自主研发一套合适的UI,比如自己的ERP系统等,才能更好地利用数据。

Q:老师您好:

我是一名学校网管,我校教师用机基本上超过300台,现在,服务器也有6台,有学校的资源库、web、教学ftp和视频点播、直播服务器,请问如何维护才能保证数据不会因为服务器的损坏而丢失,谢谢您能回答我的问题!

A: 肖舸

感觉服务器少了。基本上每种应用一台服务器,这肯定是有问题的。

建议先考虑镜像,即再增加6台服务器,与现有服务器做镜像拷贝,一起服务,一来避免数据丢失,二来也分担压力。

对于高安全性数据,建议后台再单独建立一台备份服务器,专门备份这部分数据。

Q:老师您好:

我是大一新生学软件的,现在对学些什么感觉很迷漫,希望您能给点意见

A: 肖舸

呵呵,这类问题我博文中很多,你看看我博客吧。http://tonyxiaohome.blog.51cto.com/

总的来说,我建议刚上大学的学生,不要太早接触语言,不要太早接触商业化的设计模式、类库之类的东东。

建议先从基础学期,特别是数学、算法、数据结构,把这些基础打牢了,后面学起来后劲足。

要是刚上大学,不学专业课,专门跑去学编程,也能学出来,不过,没有基础,在程序员道路上走不远的。

下期专家门诊预告:

 ①预告:下期门诊将邀请中国综合布线光纤及光纤测试领域的权威专家团队,针对光纤布线系统的设计与测试等要点、难点问题给予解答,届时欢迎网友积极提问,与专家一起讨论!
 
  ②链接:http://doctor.51cto.com/develop-211.html
 

责任编辑:桑丘 来源: 51CTO
相关推荐

2011-06-08 08:57:29

2010-05-31 17:04:17

2011-03-29 09:39:18

2011-04-19 08:59:33

2011-05-19 10:40:28

2011-03-24 10:55:35

2011-04-26 09:43:22

2011-04-11 10:34:58

2010-06-21 09:45:59

2011-08-01 10:07:38

2011-07-25 10:24:01

2011-09-06 14:59:32

开发技术周刊

2010-04-12 13:50:15

CDP技术

2010-05-24 16:36:19

2012-07-30 11:48:30

51CTO技术周刊

2013-01-15 17:39:21

开发技术周刊

2010-01-19 11:21:20

51CTO驻站专家

2011-11-23 13:50:05

开发技术周刊

2010-03-04 12:38:36

技术快讯

2010-08-03 09:43:59

IT技术周刊
点赞
收藏

51CTO技术栈公众号