目前已全面拥抱开源技术,这不是一时头脑发热所做出的决定。根据现状、未来的发展策略理性来选择的。Windows服务器很难做到大规模的部署、管理与维护。打个比方,一个中级工程师可以很轻松维护500~700台Linux服务器,相比之下300台windows服务器就能让管理员力不从心了。原因是windows平台在集群管理方面还是很弱,只能自己开发一套工具或购买商业软件来实现,这样一来无疑给公司带来了高成本。另一点是Windows OS/Service本身就不便宜,具体价格请拨打MS-800。经常有朋友问,windows服务器操作简单,动动几下鼠标就可以完成一项任务。而Linux需要敲N多命令才能完成相同的操作。告诉我为什么说windows管理成本比Linux高呢?这个得从Windows适用的场景说起,比如较低的技术门槛、中小规模集群等。很难想像通过鼠标在1000台服务器上去完成一项任务,这也是windows2008中引入PowerShell的原因吧。
再说说天涯目前使用开源技术现状,已经在包括前端缓存、应用代理、WEB服务、数据库服务、开发框架、Nosql、负载均衡器、运维工具等方面大量被使用,涉及到天涯整个技术体系的每个角落。运用开源技术架构,给应用平台提供了高性能、可扩展、高可用性的解决方案,同时也大大节约了成本。另一个好处是碰到问题总能找到解决方案。交流空间、个人视野都得到了开阔。天涯是一个使用开源技术并回馈开源的公司。虽然 不能贡献顶级的开源项目,至少可以尽自己一份微薄之力。在2009~2010期间,天涯共开源了8个项目,涉及运维管理、Nosql等。包括“天涯LVS管理系统”、"天涯服务器管理系统(C/S版)"、"SDR1.0-Linux主机集中管理"、"Varnish缓存推送平台V1.0"、"高性能数据引擎Memlink"等等。这些项目得到诸多同行及网友的支持,收到大量的反馈建议。部分项目已被第三方公司所使用或进行改良升级。希望更多热衷于开源技术的朋友加入,一起学习,一起提高 。
下面给准备从微软技术转开源的一些建议,任何技术平台的变迁都需要付出代价。除了前期做大量的技术储备外,还应根据自身的应用及技术特点选择合适的开源架构。天涯一路走来,不断在尝试->失败->回滚->再尝试的过程。如何给企业选择适合的开源技术构架呢?
一、开发语言
如果是web2.0的网站,注重快速开发、快速实现。我们看到web2.0是数据组织结构在不断变迁,从最典型的SNS到目前炙手可热的微博。个人建议选择敏捷开发或胶水语言,如php、python、ruby等。它们都具有开发速度快、入门门槛低、功能强大等优势。web2.0的兴起带动了这类技术的普及,招人已经不成问题。经常有朋友问,说脚本语言会不会很慢?我相信很多人都存在这样的困惑。可以肯定的是95%的应用平台的瓶颈不会在语言的运算上,建议花更多的时间在代码算法、缓存、数据库及网络结构的优化上,这才是比较务实的做法,相信你会得到意想不到的效果。对于电子商务型的网站,注重安全、稳定、高效等,java作为主流电子商务开发技术为首选。凭着成熟的中间件技术、跨平台性,可复用性高、多层架构等优势,在国内大型电子商务平台普遍使用,如网上银行、在线支付、在线购物、证卷等业务。
二、数据库&Nosql
MS SQLServer转开源数据库,Mysql是所有开源数据库中最活跃的,具有体积小、高性能、稳定性高及跨平台等特点,提供大部分编程语言API。在web2.0网站中大量被使用,Nosql是2010年IT界的技术亮点。与关系型数据库的关系是相辅相成的,不存在代替的关系,所适用的场景也不一样,Nosql的诞生是为了解决关系型数据库存在的缺陷,比如高密集的IO、大量数据的存储及查询、数据的扩展、分布式等等。个人推荐Mysql+memlink/Mongodb的组合,相互可以弥补各自的不足,将需要事务的数据让关系型数据库来存储,非关键且大存储数据全部丢给Nosql,这样的好处是可以保证数据的一致性的同时提供高效的数据查询。随着业务量的不断增长,需要更多的处理节点加入集群,个人推荐集群模式为多组One-Master->Multi-Slave,可以减少数据同步出现的延时及应用的复杂度,便于维护。组的划分是根据应用业务层进行,这样有非常好的扩展性。大致结构为:App Layer <--->Routing layer<--->LVS<--->Slave note。以最简单的策略满足复杂的需求,因为简单就是美。
三、负载均衡
我们的原则是高并发、逻辑简单走4层架构,比如LVS。7层架构着重在流量不高、规则要求比较灵活的应用中部署。例如URL哈希、过滤、路由、拆分等等。个人推荐Haproxy、Nginx。好的URL规则可以提高30~60%的缓存命中率。参考架构:F5/LVS<--->Haproxy<--->Squid/Varnish<--->AppServer。
四、运维平台
运维是一项复杂、细致的工作,我们可以借助大量的开源工具来实现监控、操作、分析、部署等工作。Cacti、Nagios作为监控、分析的佼佼者,是运维人员的必备工具。现重点讲一下我们在“操作”这块是如何实现管理成百上千台服务器的,以Func、Cfengine作为基础平台,在此基础平台上进行开发、扩展日常操作管理模块。包括“天涯LVS管理系统”、"天涯服务器管理系统(C/S版)"、"天涯服务器管理系统(HTTPS版)"都是基于该平台引伸出的项目。
除了以上所述,还有缓存技术、全文检索、分布式存储、云计算等都有非常成熟的开源解决方案,希望开源技术架构能给您多一种选择。