
您好,第一、什么是C/S结构。
C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系
统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的 *** 作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高,效率低。
第二、什么是B/S结构。
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着
Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过>
(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
以目前的技术看,局域网建立B/S结构的网络应
用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地
点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和 *** 作共同的数据库;它能有效地保护数据平台和管理访问权限,服
务器数据库也很安全。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。
第三、管理软件主流技术。
管理软件技术的主流技术与管理思想一样,也经历了三个发展时期。首先,界面技术从上世纪DOS字符界面到Windows图形界面(或图形用户界面GUI),直至Browser浏览器界面三个不同的发展时期。其次,今天所有电脑的
浏览器界面,不仅直观和易于使用,更主要的是基于浏览器平台的任何应用软件其风格都是一样的,使用人对 *** 作培训的要求不高,而且软件可 *** 作性强,易于识
别;再者,平台体系结构也从过去单用户发展到今天的文件/服务器(F/S)体系、客户机/服务器(C/S)体系和浏览器/服务器(B/S)体系。
二、C/S和B/S之比较
C/S和B/S是当今世界开发模式技术架构的两大主流技术。C/S是美国Borland公司
最早研发,B/S是美国微软公司研发。目前,这两项技术以被世界各国所掌握,国内公司以C/S和B/S技术开发出产品也很多。这两种技术都有自己一定的市
场份额和客户群,各家企业都说自己的管理软件架构技术功能强大、先进、方便,都能举出各自的客户群体,都有一大群文人墨客为自己摇旗呐喊,广告满天飞,可
谓仁者见仁,智者见智。
1、C/S架构软件的优势与劣势
(1)、应用服务器运行数据负荷较轻。
最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何 *** 作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。
(2)、数据的储存管理功能较为透明。
在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,前台应用可以违反的规则,并且通常把那些不同的(不管是已知还是未知的)运行数据,在服务器程序中不集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在C/S体系的下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。
(3)、C/S架构的劣势是高昂的维护成本且投资大。
首先,采用C/S架构,要选择适当的数据库平台来实现数据库数据的真正“统一”,使分布于两地的数据同步完全交由数据库系统去管理,但逻辑上两地的 *** 作者要直接访问同一个数据库才能有效实现,有这样一些问题,如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高,维护任务量大。
其次,传统的C/S结构的软件需要针对不同的 *** 作系统系统开发不同版本的软件,由于产品的更新换代十分快,代价高和低效率已经不适应工作需要。在JAVA这样的跨平台语言出现之后,B/S架构更是猛烈冲击C/S,并对其形成威胁和挑战。
2、B/S架构软件的优势与劣势
(1)、维护和升级方式简单。
目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。对一个稍微大一点单位来说,系统管理人员如果需要在几百甚至上千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的 *** 作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。因此,维护和升级革命的方式是“瘦”客户机,“胖”服务器。
(2)、成本降低,选择更多。
大家都知道windows在桌面电脑上几乎一统天下,浏览器成为了标准配置,但在服务器 *** 作系统上windows并不是处于绝对的统治地位。现在的趋势是凡使用B/S架构的应用管理软件,只需安装在Linux服务器上即可,而且安全性高。所以服务器 *** 作系统的选择是很多的,不管选用那种 *** 作系统都可以让大部分人使用windows作为桌面 *** 作系统电脑不受影响,这就使的最流行免费的Linux *** 作系统快速发展起来,Linux除了 *** 作系统是免费的以外,连数据库也是免费的,这种选择非常盛行。
比如说很多人每天上“网易”(原文为新浪)网,只要安装了浏览器就可以了,并不需要了解“网易”的服务器用的是什么 *** 作系统,而事实上大部分网站确实没有使用windows *** 作系统,但用户的电脑本身安装的大部分是windows *** 作系统。
(3)、应用服务器运行数据负荷较重。
由于B/S架构管理软件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过>
第一步要确保主机服务器可以处理一个快速的文件系统,通过分派足够大量的RAM开始
一个调整好但内存不足的文件系统不能提供优化的性能,因为没有足够的空间来恰当地缓存这个文件系统元数据表
要知道你的服务器是否有足够的内存,就使用免费命令
如果缓存器和缓存使用的总内存超过了RAM总量的20%,它就会工作
但是越多就越好
理想来说,你需要大概40%的服务器内存用在缓存器和缓存上
下一步,检查你的磁盘
为了获得尽可能好的性能,你将需要用到尽可能好的磁盘
这不是说你只需要SSD磁盘
但是如果你需要速度,不要使用7200RPMSATA,要使用15000RPM串列SCSI(SAS)代替
还要将磁盘域控制器参数纳入考虑
确保启用了电池备份的缓存
为了增加写入性能,将写入配置为延迟
如果你更注重读取性能,配置预读取来增加机会,让你下一步需要的数据更可能在你需要时已经在内存中负载了
优化Ext4文件系统服务器也检查过了,现在我们就来优化Ext4文件系统
你需要考虑两个东西,然后你就可以检查更具体的性能参数了
几乎在所有情况下都有所帮助的一个参数是关闭文件系统访问时间,使用/etc/fstab中的“一次都不(noatime)”安装选项
没有这个选项,每次文件被访问(包括读取)时,这个文件的元数据都会变更
大部分服务器没有对这些信息做处理,所以关闭它就行了
另一个有意思的安装选项是dealloc选项,它打开了延迟的块配置功能
这个功能在最后时刻决定写入文件发生时使用哪个块,优化这个写入程序
另一个重要的安装选项调整文件系统日志
有三种日志模式:data=journal、data=ordered和data=writeback
默认设置data=ordered提供性能和防护之间的最佳平衡
但是如果你的服务器需要写入大量数据,它可以长期冻结你的服务器
如果是这种情况,使用iotop等工具,你会看到kjournald程序的高负载
如果你的服务器遇到了这种行为,使用data=writeback选项来获得更好的写入性能
但是使用这个选项增加了风险,最新修改的数据会在宕机事件中崩溃
创建文件系统来获取更好性能时,可以用到多个选项
第一个是inode大小
inode用来存储元数据,如果扩展属性或访问控制列表(ACL)用在一个文件系统上,默认的inode不足以存储所有数据并且配置了二级的inode
这也就是说,所有的文件访问你都需要用两个 *** 作来代替一个
ERP的英文全称是EnterpriseResourcePlanning,直译过来是企业资源计划。
ERP最初的功能是把企业所有可用资源(资金,库存,人力,供应商,客户等等)集中到计算机数据库中,通过合理的公司运作流程,最大程度的利用这些资源,为企业创造最大的价值。
但是随着科技的高速发展,目前ERP更像是一个代词,即企业信息化综合管理系统。功能是把企业日常经营所涉及到的全部内容数据化并集中到计算机数据库中,除了最大化利用企业资源外,同时利用计算的强大计算能力,结合不同功能模块,消灭大部分重复劳动,极大提升全员工作效率,为企业节约运营成本。比如移动办公功能让员工在路上也能工作,自动报表功能秒杀枯燥的统计工作,自动单据功能秒杀办公室大部分重复劳动等等。
开发语言选择很多,完全根据自己的实际情况来选择,Java,C,VB,HTML等等都可以开发。因为开发这种软件,编程主要是为了实现两个功能,第一是访问数据库,第二就是处理数据,上面说的任何一种语言都完全能够胜任这两个功能。我曾经还用过Excel给两个企业开发过管理系统。
对于管理系统来说,比开发编程更重要的是软件功能设计,就像一座大楼,首先要设计好,才能安全好用,否则程序编得再好,做出来对企业来说也是一场灾难。不但没有提升效率和利用好资源,反而可能浪费企业大量的时间和金钱。
管理系统在发达国家普及度很高,大多数公司都有各类型的管理系统辅助公司运营管理。但是在中国,管理系统普及度很低,实施成功率也很低。第一是因为我国企业对管理系统了解很局限,它能做什么?我们应该让它做什么?第二是因为我们属于发展中国家,国家和企业都在高速发展,那么管理系统也必须跟上节奏,不断进化,否则就会拖后腿。
最佳的方式就是企业自己要有技术团队来进行开发,在充分了解软件的能力和企业的需求的基础上设计开发出最适合企业的系统,同时保持系统的及时进步更新。
当然难题也来了,对于大型企业来说,养个技术团队不但不是问题,而且绝对必要。但对于中小企业,尤其是小微企业来说,成本就太高了,只能找软件外包公司来定制。不过外包定制费用也不低,而且每次升级开发都需要再花钱,像个无底洞。
转载表面上看,是一套基于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管理系统还是可以排上的。
超越科技联合龙芯中科成功推出新一代基于龙芯 3C5000 的双路服务器(超越申泰 RM5220-L 机架式服务器),匹配龙芯 7A2000 独显桥片龙芯 3C5000 于 2022 年 6 月正式发布,是龙芯中科面向服务器领域倾力打造的高性能通用处理器,单片 16 核,采用独立自主的 CPU 指令系统架构--龙架构(LoongArch),基于 LA464 核设计,具备超强算力特别声明:本页面标签名称与页面内容,系网站系统为资讯内容分类自动生成,仅提供资讯内容索引使用,旨在方便用户索引相关资讯报道。如标签名称涉及商标信息,请访问商标品牌官方了解详情,请勿以本站标签页面内容为参考信息,本站与可能出现的商标名称信息不存在任何关联关系,对本页面内容所引致的错误、不确或遗漏,概不负任何法律责任。(反馈错误)
推荐关键词
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)