转载表面上看,是一套基于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管理系统还是可以排上的。
前端:
通常是针对浏览器而开发的,是在浏览器端运行的程序。
后端:
针对的是服务器,准确的来说应该是服务器端开发。
小结:
1、前端开发偏向于用户体验,比较直观,服务器端开发偏向于性能。
2、两者结合起来,是比较吃香的,可以称之为Web开发,偏向于编程。而PS,可以看成是视觉设计方面的职能。
前端主要是直接与用户交互的,主要涉及的是html,css,js等技术
后端主要是用于为前端提供数据以及从前端获取数据,涉及到的技术主要是PHP,javaweb,数据库等
而后台一般是指管理员 *** 作的系统/软件,这本身也是个软件/网页,包括它自己的前端和后端
举个例子:
你来百度搜索东西,你看到的这个网页是前端,你输入搜索内容是前端,百度把你的内容进行分析然后返回给你搜索结果是后端,你看到的搜索结果的页面是前端,而百度的数据分析员浏览近一个月的搜索记录和相关事件热度,这是后台。
ERP的英文全称是EnterpriseResourcePlanning,直译过来是企业资源计划。
ERP最初的功能是把企业所有可用资源(资金,库存,人力,供应商,客户等等)集中到计算机数据库中,通过合理的公司运作流程,最大程度的利用这些资源,为企业创造最大的价值。
但是随着科技的高速发展,目前ERP更像是一个代词,即企业信息化综合管理系统。功能是把企业日常经营所涉及到的全部内容数据化并集中到计算机数据库中,除了最大化利用企业资源外,同时利用计算的强大计算能力,结合不同功能模块,消灭大部分重复劳动,极大提升全员工作效率,为企业节约运营成本。比如移动办公功能让员工在路上也能工作,自动报表功能秒杀枯燥的统计工作,自动单据功能秒杀办公室大部分重复劳动等等。
开发语言选择很多,完全根据自己的实际情况来选择,Java,C,VB,HTML等等都可以开发。因为开发这种软件,编程主要是为了实现两个功能,第一是访问数据库,第二就是处理数据,上面说的任何一种语言都完全能够胜任这两个功能。我曾经还用过Excel给两个企业开发过管理系统。
对于管理系统来说,比开发编程更重要的是软件功能设计,就像一座大楼,首先要设计好,才能安全好用,否则程序编得再好,做出来对企业来说也是一场灾难。不但没有提升效率和利用好资源,反而可能浪费企业大量的时间和金钱。
管理系统在发达国家普及度很高,大多数公司都有各类型的管理系统辅助公司运营管理。但是在中国,管理系统普及度很低,实施成功率也很低。第一是因为我国企业对管理系统了解很局限,它能做什么?我们应该让它做什么?第二是因为我们属于发展中国家,国家和企业都在高速发展,那么管理系统也必须跟上节奏,不断进化,否则就会拖后腿。
最佳的方式就是企业自己要有技术团队来进行开发,在充分了解软件的能力和企业的需求的基础上设计开发出最适合企业的系统,同时保持系统的及时进步更新。
当然难题也来了,对于大型企业来说,养个技术团队不但不是问题,而且绝对必要。但对于中小企业,尤其是小微企业来说,成本就太高了,只能找软件外包公司来定制。不过外包定制费用也不低,而且每次升级开发都需要再花钱,像个无底洞。
云服务器 *** 作系统分为两类:Linux和Windows,每个都包括不同的版本。总的来说,如果需要asp、ASPNETSQLServer体系结构和LinuxforphpMySQL体系结构,则必须使用Windows系统。首先,linux *** 作系统,包括Ubuntu、debian、CentOS和其他系统,这些都是非常优秀的开源系统,功能基本相同,界面和 *** 作方法略有不同,请参考您对系统和首选项的熟悉程度。Ubuntu系统适合资金充足的网站管理员使用。Ubuntu拥有明亮的用户界面,完善的软件包管理系统,强大的软件源代码支持,丰富的技术社区,以及ubuntu对计算机硬件的支持优于Centos和Debian,兼容性强,Ubuntu应用程序很多,但对于云服务器系统来说,不需要太多的应用程序,需要的是稳定、易于 *** 作、维护简单的系统。如果您需要在服务器端使用图形界面,ubuntu是一个不错的选择,您需要注意的是,图形界面占用了大量内存,内存云服务的价格越高。Debian系统是技术力量雄厚的站长首选系统。与Ubuntu相比,它不太花哨和稳定,对于服务器系统来说是一个不变的事实。Debian是一个Linux系统,底层非常稳定,内核和内存占用都很小,在小内存中VPS可以正常运行Debian,比如128M内存,但是Debian没有多少帮助文档和技术信息。对于小型内存,debian是非常熟悉linux系统的云服务器老手的首选,而debian则是首选。CentOS系统是初学者配置云服务器的首选CentOS是由redhat源代码编译的重新发布版本。CentOS删除了许多独立于服务器功能的应用程序,系统简单但非常稳定,消耗的资源也较少。命令行 *** 作可以方便系统和应用程序的管理,并有帮助文档和社区的支持。第二,Windows *** 作系统是通用的,Server2003和Server2008r2中常用Windows *** 作系统,分为x86和x64。x86是32位,x64(64位)主要限于内存。由于32位本身的限制,可以最大限度地支持4GB内存。如果您需要使用大于4GB的内存,请使用64位 *** 作系统。选择版本2003或2008?推荐的版本越高,越好,因为较高版本的漏洞较少,IIS5提供了比IIS6更多功能和更方便的控制台。
首先,换服务器或主机前要试用,一般的服务器提供商都有试用服务,为了避免以后再次更换,建议先试用,试用没有问题后,再确定是否更换。当然在试用时,不能把自己的域名解析到试用服务器上,可以解析个二级域名。
其次,要进行步骤规划,这是关键。我们知道,要更换服务器,需要做这些工作:备份程序和数据,上传程序,导入数据库,重新解析域名,域名绑定,配置数据库,原来服务器中内容清理等,这些工作中,有许多步骤需要关闭网站。虽然看起来很多,但只要规划好顺利和时间,可以使工作有序而且缩短网站关闭时间。我的做法:先把程序和数据备份出来,然后联系服务商提供新空间的名称和密码,这样,可以先把程序上传并把数据库导入,然后配置好数据库,并把空间中需要的配置一并做好。这期间,因为原来的服务器还能使用,域名解析也没有改变,所以网站可以正常访问。激光切割机接下来,需要关闭网站来做:解析域名到新的ip地址,域名重新绑定。这时候网站不能访问了,但重新解析和绑定后,一般经过几分钟最多十几分钟,新服务器就可以访问了。在这等待的时间里,原来服务器的内容可以清理一下。这样整个过程下来,网站就可以只关闭很短的时间。
最后要提醒的是,在初次选择服务器时,考虑尽量全面些,尽可能避免更换。这个更换服务器的步骤和想法,其实说起来也很简单,只要自己仔细考虑一下就可以做出正确的步骤选择
企业软件定制开发做得好的公司有哪些?
1、北京华盛恒辉软件开发公司
互联网是个神奇的大网,大数据开发和软件定制也是一种模式,这里提供最详细的报价,如果你真的想做,可以来这里,这个手机的开始数字是一伍扒中间的是壹壹三三最后的是泗柒泗泗,按照顺序组合起来就可以找到,我想说的是,除非你想做或者了解这方面的内容,如果只是凑热闹的话,就不要来了。
上榜理由:华盛恒辉是一家专注于高端软件定制开发服务和高端建设的服务机构,致力于为企业提供全面、系统的开发制作方案。在开发、建设到运营推广领域拥有丰富经验,我们通过建立对目标客户和用户行为的分析,整合高质量设计和极其新技术,为您打造创意十足、有价值的企业品牌。
在军工领域,合作客户包括:中央军委联合参谋(原总参)、中央军委后勤保障部(原总后)、中央军委装备发展部(原总装)、装备研究所、战略支援、军事科学院、研究所、航天科工集团、中国航天科技集团、中国船舶工业集团、中国船舶重工集团、第一研究所、训练器材所、装备技术研究所等单位。
在民用领域,公司大力拓展民用市场,目前合作的客户包括中国中铁电气化局集团、中国铁道科学研究院、济南机务段、东莞轨道交通公司、京港地铁、中国国电集团、电力科学研究院、水利部、国家发改委、中信银行、华为公司等大型客户。
2、北京五木恒润科技有限公司
上榜理由:五木恒润拥有员工300多人,技术人员占90%以上,是一家专业的军工信息化建设服务单位,为军工单位提供完整的信息化解决方案。公司设有股东会、董事会、监事会、工会等上层机构,同时设置总经理职位,由总经理管理公司的具体事务。公司下设有研发部、质量部、市场部、财务部、人事部等机构。公司下辖成都研发中心、西安研发中心、沈阳办事处、天津办事处等分支机构。
3、海辉软件(国际)集团
IDC最近发布的市场报告称,海辉仍保持中国家入围美国及欧洲、日本及韩国市场前五名的服务提供商。2007年,海辉的离岸收入获得了显著的增长,并通过海外并购不断增强全球竞争力。
4、毕博管理咨询(上海)有限公司
战略咨询能力是毕博赢取客户的一大优势。凭借全球资源和语言优势,毕博执行了不少全球订单。而难能可贵的是,其本地订单的比例也已经上升到了40%。下一步的目标是增加本土订单,提升BPO的比例。
5、浪潮
前10名中,浪潮跟东软的转型路线最为相似。与东软不同,浪潮强调自己凭借的3大优势之一是低成本。目前100%业务都是ITO。作为以低成本取胜的浪潮,人力成本的提升将会对其形成挑战。
6、文思创新软件技术(北京)有限公司
获得充足资本实力的文思将优势项目扩展为研发外包、IT服务和企业及解决方案3大部分。近两年来的成长速度惊人。
7、大展集团
总部在美国加州圣拉蒙的大展集团,有着深厚的国际化背景,大展创始人美籍华人李本能有着30年的高科技企业运营经验,邀请了多位资深IT人士前来加盟。这两年来,大展以年增幅超过40%的速度发展。
8、简柏特(大连)有限公司
其80%业务都来自BPO。具备较好的外包服务和语言优势;主要客户为通用电气和辉瑞制药等。
9、北京九五太维资讯有限公司
这是一家很特殊的企业,以呼叫中心业务为主,尽管销售额不算很大,但是80%的业务都来自BPO,而且80%的订单都来自国内,因此获得了比较高的得分。
10、博彦科技(北京)有限公司
一家低调而有实力的外包企业。中国用户最早使用的许多微软办公软件,其国内的汉化工作就是由博彦承担的。创始人和主要创业合作伙伴皆为本土人士,擅长于应用软件的测试、托管和采购。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)