玩转开源系统总概述

        开源系统现在是无处不在,大大小小的公司都会使用很多开源系统来搭建自己的IT系统,但是每一个公司对于开源系统的需求又是不一样的,有的只需要简单的可以使用就满足要求了,有的需要进行优化,在上一层的就需要做定制的二次开发,在高一层就是研究开源系统的架构,借鉴优秀的设计然后架构自己的系统,最后一种完全自主设计架构和开发的基本上很少了,至少在开源系统发展到目前这个阶段。上面5种层次的需求也对应了我们IT从业人员对开源系统掌握的5各层次,当然也给我们指出了学习一个开源系统的步骤,下面将根据这个5种需求或者层次或者学习开源系统的5各步骤进行详细论述,最后在说说本博客以后的主要内容和希望完成什么工作,最后达到什么效果。

一。简单使用层次
        这个层次的多半是个人开发者和中小企业,对于这种使用的大多数是一些比较成熟单机开源软件,例如apache,nginx和一些开发库等,对于这些开源软件的使用在网上google一下有很多文章介绍,根据那些文章的介绍进行简单安装配置即可使用,使用的过程中就是逐渐熟悉开源软件的功能。这也是我们学习一个开源系统的第一个步骤,熟悉开源系统的使用和基本功能。

二。优化使用
        很多开源系统功能强大,因为开源系统一般需要做得比较通用,很多功能主要满足大部分的基本需求,如果我们对某一些功能有特殊需求或者更高级的使用,通常需要了解和熟悉开源系统的配置,熟悉配置项的意义,有的配置是增强功能,有的是优化特殊场景下的性能,例如使用nginx做反向代理,那么需要特殊的配置,如果访问量很大需要考虑nginx的优化配置,如果要达到最好的运行效率可能还需要根据硬件服务器的配置进行相应的配置。
        这也是我们学习开源系统的第二个层次,深入熟悉功能,并且能够通过配置文件调优开源系统,这个可能需要我们首先要熟悉配置项的意义,然后通过测试不同配置下开源系统的运行情况来熟悉各个配置项对开源系统的影响,通过不断的测试我们会更加熟悉这个系统提供的功能和使用方法。
        其实在这个层次有很多,大部分使用nginx都主要通过不同的配置来实现不同的需求,java系统很多通过配置jvm运行参数调优jvm,让java系统表现更加稳定和性能更加出色,很多分布式系统通过配置网络参数来增强通信质量和稳定性。

三。基于开源系统的二次开发
         这个层次的使用基本上都是大型的互联网公司,因为这些公司业务需求特殊而且要求性能和容错性等更加出色,但是大部分开源系统没有在这种情况下进行过实际应用,所以也不可能开发出这些场景下的功能,当然性能就更加不可评估了。例如现在流行的hadoop开源系统,很多公司基于开源的hadoop进行定制开发来满足自己公司的数据分析和计算需求,当然也有很多公司基于hadoop开源系统做定制的产品开发。
        这个层次中的学习就需要各位码农进行开源系统的深入学习,第一要熟悉系统的架构和设计原理,第二需要详细阅读每一句代码,至少需要阅读你需要二次开发模块的那一部分代码。

四。借鉴开源系统或者论文自主设计架构并完成开发
        这个基本上也大公司的专利,至于为什么需要自主开发每一个公司有自己的考虑,最简单的一点考虑就是,使用开源系统也有学习和维护成本的,如果达到一定程度自主研发的成本比使用开源系统更低,风险控制更加可控。这里使用的例子也很多,例如hadoop系统本身也是借鉴gfs的论文而开发出来的。
        达到这个层次的学习一般对开源系统有很深入的认识,能够清楚的知道各种开源系统的优缺点,包括架构的优缺点,这样才能借鉴好的设计并且改进不好的设计从而完成自己系统的架构和开发。

五。完全的自己设计架构与开发
        这类应该不属于开源系统的范畴了,不过作为我们学习和进阶的一个层次,还是简单介绍一下。需要做完全的自己架构设计与开发应该有如下原因吧,第一开源系统还没有这类系统,或者没有比较成熟和好的,第二,有这类开源系统,但是自己有信心和实力做得比开源系统更出色并且愿意投入人力成本,第三,挑战现有开源系统,第四,满足同样功能但是不同领域需求。

最后在简单介绍一下自己为什么准备做玩转开源系统的博客,有如下几个愿意:
(1)我的工作中使用了大量的开源系统,上面5各层次的都涉及到,我觉得把这些经验分享出来和大家一起交流共同进步;
(2)自己业余爱好也喜欢学习和研究各种比较流行或者很火的开源系统软件;
(3)总结自己;
(4)锻炼自己;
(5)寻找共同爱好者。

你可能感兴趣的:(开源,开源软件)