
2linux和unix兼容,unix是早期的服务器霸主,现在份额逐渐让给linux了
3linux是多用户多进程系统,windows是单用户伪多用户系统,不适合服务器
4互联网开放,linux也是开放的,像apach这样的开放软件优先在linux上实现
5linux是模块化的,可裁减,出现问题只要关闭一个模块,windows只有微软自己才会裁减
6linux的用户管理严格,病毒难以破坏,windows漏洞百出,用户管理混乱
7linux硬件需求小,大部分版本免费,总得成本低
8windows常会蓝屏、需要磁盘清理,linux下kernel panic几年一遇,也可以好几年不关机,一两年一次磁盘清理
9win的图形界面浪费了太多资源,linux使用x-window systerm,平时根本不用开图形界面肯定是不好。好比说,如果应用软件不通过 *** 作系统提供的接口,而是直接自行访问硬件,这样好吗?
C/S结构中的S有三点作用。1,向客户端提供服务;2,管理客户端连接;3,安全。
个人建站可以去第三方博客网站上,也可以自己用服务器搭建。
推荐你自己建立个人博客,有自己的域名、空间、网站等。这样是比较自由的。而第三方博客是受到人家的管束,这也不行,那也不准发的,很麻烦。
个人博客网站和一般个人网站在制作方法上是基本相同的。原料/工具
注册域名。最好能和博客有点关联2选择博客系统。例如wordpress。3选择云服务器,例如阿里或者腾讯等4解析域名到服务器5发布博客系统到云主机以上步骤还是需要一些知识的。
转载表面上看,是一套基于B/S方式实现的分布式管理系统,但其实背后的架构是基于C/S完成的。你以为他是一只鞋吗?其实他是一个吹风机。作为界面化的系统,浏览器框架是不可或缺的,但更加重要的东西在Socket上面。
一、需要解决中央控制端到各节点服务器之间的通信。
这个其实牵扯到一个通信协议的问题,各语言都有自己的socket,thread的库,直接调用即可。但是这个通信协议就需要自己来完成了。既不能太简单,太简单了,明码传输,如果别人获知了这个接口,就很容易执行一些令人讨厌的 *** 作。也不能太复杂,太复杂了等于是给自己找麻烦,所以简单的数据包编解码的工作或者用token验证的方式是需要的。通信协议起码要两种,一种是传输命令执行的协议,一种是传输文件的协议。
二、跨语言的socket通信
为什么要跨语言,主控端和代理端通信,用什么语言开发其实无所谓。但是为了给自己省事,尽可能使用服务器上已经有了的默认语言,Ambari前期采用phppuppet的方式管理集群,这不是不可以,puppet自己解决了socket通信协议和文件传输的问题,可你需要为了puppet在每台服务器上都安装ruby。我是个有点服务器和代码洁癖的人。光是为了一个puppet就装个ruby,我觉得心里特对不起服务器的资源。所以我自己写了一个python的代理端。python是不管哪个linux系统在安装的时候就都会有了。然后主控端的通信,可以用python实现,也可以用php实现,但是考虑到对于更多的使用者来说,改php可能要比改tornado简单许多,所以就没用python开发。hadoop分支版本众多,发布出去,用户要自己修改成安装适合自己的hadoop发行版,就势必要改源码,会php的明显比会python的多。php里面的model封装了所有的 *** 作,而python只是个 *** 作代理人的角色而已。
所以也延伸出一个问题,什么语言用来做这种分布式管理系统的代理端比较合适,我自己觉得,也就是python比较合适了, *** 作系统自带,原生的package功能基本够用。用java和php也可以写agent,但是你势必在各节点预先就铺设好jre或者php运行环境。这就跟为什么用python和java写mapred的人最多是一样的。没人拦着你用nodejs写mapred,也可以写,就是你得在每个节点都装v8的解释引擎,不嫌麻烦完全可以这样干。原理参看map/rece论文,不解释。perl也是 *** 作系统原生带的,但是perl的可维护性太差了,还是算了吧。
所以这就牵扯到一个跨语言的socket问题,理论上来说,这不存在什么问题。但这是理论上的,实际开发过程中确实存在问题,比如socket长连接,通信数据包在底层的封装方式不同。我没有使用xml-rpc的原因之一就是我听说php的xmlrpc跟其他语言的xmlrpc有不同的地方,需要修改才能用,我就没有用这种办法。最早是自己定义的 *** 作协议,这时就遇到了这些问题,所以后来直接采用了thrift方式。就基本不存在跨语言的socket通信问题了。
三、代理端执行结果的获取
无论命令还是文件是否在代理端执行成功,都需要获取到执行结果返回给中央端。所以这里也涉及一个读取节点上的stdout和stderr的问题。这个总体来说不是很难,都有现成的包。当然这个时候你需要的是阻塞执行,而不能搞异步回调。
还有个问题是,我要尽可能使用python默认就带的包,而尽量不让服务器去访问internet下载第三方的包。
还有代理端最重要的一点,就是python的版本兼容性。centos5用python24,centos6用python26,ubuntu基本默认都是27。所以一定要最大限度的保证语言的跨版本兼容性,要是每个 *** 作系统和每一个版本我都写一个代理,我一个人就累死了。
四、浏览器端的model,view,controller
这里面你要封装好所有的通信协议,以及需要在节点上面执行的脚本。发送文件的 *** 作和数据库 *** 作也要在model里面完成。
如果对tcl/tk很熟,也可以写基于 *** 作系统界面方式的管理,不用浏览器就是了。
view对我来说是最痛苦的事,都是现学的jQuery怎么用,前端的工作太可怕了。关于这方面,没有太多可描述的,html和js带给我的只有痛苦的回忆,万恶的undefined。
五、跨 *** 作系统的安装文件封装。
要适应不同的 *** 作系统也是个很麻烦的事情,需要用agent提前获知 *** 作系统的发行分支,版本号。然后去找到对应的安装文件去执行。你不能保证一个分布式系统的集群中所有的节点都可以访问internet,更多的情况是这些节点都存在在一个安全的内网中。只有个别几个节点是可以访问外网的。所以,我势必要把所有的安装文件以及他们的依赖尽可能集中起来。我不确定安装 *** 作系统的lzo,yum或者apt-get会去下什么鬼东西,甚至无论是yum还是apt-get,里面都没有hadoop-lzo的库文件。所以,最好的办法是自己编译打包rpm和deb包。直接安装就好了,别去找repo下载什么。
这就是第五步工作,把需要的依赖的东西自己编译打包成rpm和deb。
deb包很好解决,但是rpm就没那么好办了,需要学习rpm的编译文件如何编写,这块是挺麻烦的,但是这玩意用好了还是挺不错的。现在我自制的安装包里面就已经包含了自己编译的lzo和snappy两种压缩库,以及hadoop-gpl-packaging的rpm和deb。下一个发布的easyhadoop将直接支持centos5,6,suse,以及ubuntu/debian的系统上安装hadoop。已经自带了lzo和snappy以及lzop和snzip。
六、把这些所有东西,整合到一个系统里面。
关联这些所有事情间的联系,整合到一个浏览器界面里面去。写一个分布式的管理脚本不难,写一个界面也不难,但是也许是我的水平不行,这两件事结合起来让他们协同工作还是有点难度的。对我来说,写界面的工作可能更难一点。
Cloudera可能是十来个人在写Manager的东西,ambari也是放到github和apachesvn上面,apache基金会的各种committer在写。easyhadoop没他们功能那么强大,一年来只有我一个人设计架构,功能,各种语言的编码,测试,发布。Fortheloveofgod,WhathaveIdone(英文部分请站在山顶仰天长啸)T_T。从前台到后台,到hadoop和生态系统以及他们的依赖软件的单独patch、编译打包。(系统yum或者apt-get的包不如自己打的好使。)
从时间上来看,全球第一款开源的hadoop部署管理系统应该还是属于ambari,2011年8月开始写的,2012年9月底进入apache的incubator。我是大概2012年8月开始写的easyhadoop,全球第一没赶上,估计国内第一个开源的hadoop管理系统还是可以排上的。
您好,非常荣幸能在此回答您的问题。以下是我对此问题的部分见解,若有错误,欢迎指出。可以,不过前提是 你必须付费购买独立ip,如果要是虚拟主机的话,一般都是ip共享,就是一个ip几十个网站共用,服务商只会给你添加主机头,而不会把ip直接分配你,狠多服务商的ip访问都绑定到自己的产品那里。还有一个原因是ip与域名相比不容易记,也不利于搜索引擎优化。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!现在的企业只要是有互联网需求的,一般都会用到服务器或者是网站空间,在选择服务器的时候,一些中小型企业会很纠结,不知道该选择服务器托管还是选择服务器租用,因为两者是不同的服务器需求,需要的成本也有差别。很多企业想要选择一个性价比更高的服务,其实,选择一个适合自己的性价比就高。现在的企业只要是有互联网需求的,一般都会用到服务器或者是网站空间,在选择服务器的时候,一些中小型企业会很纠结,不知道该选择服务器托管还是选择服务器租用,因为两者是不同的服务器需求,需要的成本也有差别。很多企业想要选择一个性价比更高的服务,其实,选择一个适合自己的性价比就高。在选择服务器之前,我们需要先了解一下服务器托管和服务器租用,了解两者有哪些不同,之后再结合自己的实际需求,选择一个最适合自己的方案,这样,在一定程度上也可以减少成本的浪费。服务器托管
服务器托管就是客户自己购买服务器硬件,然后将自己购买的服务器放到IDC机房,由机房这边提供稳定的网络环境和日常的维护,一般日常维护包括重启、重做系统、安装一些常用的应用软件等等。服务器托管的费用只要是带宽的大小和服务器的规格来决定的。其中,带宽的大小占了很大的比重;服务器规格也就是厚度,厚度大的机器不光要多耗费一些电力,更重要的是要多占用一个机位,因此,这多出来的一个机位也是要收取一定的机位费用的,所以建议大家在购买机器来托管的时候,尽量选择机架式的机器,这样托管起来比较节省一些。
服务器租用
服务器租用是自己不需要单独购买机器,只需要将你对硬件和带宽方面的要求告诉IDC商,他们会准备硬件,然后配置机器。对于不懂服务器硬件的用户,一般会选择这个业务,这样可以预防后期在托管期间出现硬件问题无法处理的情况。当然,在租用期间,一旦硬件出现问题,IDC商也需要承担一定的风险。另外,这种租用业务,机器是不属于客户的,租用到期之后,客户可以选择继续租用,也可以选择不再使用。
服务器租用的优劣势分析
向IDC运营商租用服务器的好处是便捷和低价,我们知道,大部分服务器买来以后都需要安装系统和软件,再经过调试通过最终放到 IDC 机房的,那因此直接租用IDC机房的服务器就相对要更加省事一点。但是,租用机房的服务器也有其劣势,主要是用户大部分情况下都看不到自己租用的服务器什么样子,一些运营商倒是会如实的告诉客户他们所租用的服务器品牌和型号。不过也会有极少数IDC采用自行组装的服务器作为租用业务使用以便降低成本,这种情况,要想看机器的配置型号就需要远程服务器。
自己购买服务器的优劣势分析
自己购买服务器遇到的最大障碍恐怕就是价格。但是现在随着服务器成本的降低,大部分专业客户和大客户都已经改为采用自行采购设备然后拿去托管的方式,因为自行采购的优势比较明显。自己组装一台服务器,可能是一半新配件一半二手配件组装而成,这种价格其实也不会太高;要想机器有高性能,还是需要有足够的成本去支撑的,一些注重品牌和稳定的用户也可以直接购买 IBM、HP之流的一线大厂产品。另外,有些用户可能要使用比较特殊的 *** 作系统和软件,又或者是事先需要copy大量的资料到服务器硬盘上,这些 *** 作远程控制机房的服务器都不是很方便,一般是先调试或者复制好再拿去机房托管。
通过对以上两种服务器业务的比较,可以得出结论:对于离机房较远的地方,可以选择租用服务器。如果离机房不很远的话,可以选择自行购买服务器再放机房托管,即使价格会比租用来得贵。如果是自己做OA系统,或者企业内部数据等,可以考虑自己买服务器。如果自己不知道买哪种服务器,可以先咨询一些IDC商,给他们说一下自己的要求,然后看看用哪种服务器比较合适,然后再自行购买。
如果有帮到你,请采纳,谢谢。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)