服务器托管是企业维持在线形象和确保业务连续性至关重要的一部分。如果没有适当的计划,托管成本可能会迅速超出预算,对财务构成重大风险。
成本超支的常见原因
过度配置:选择超出实际需求的服务器计划,导致不必要的支出。带宽使用不足:支付比实际使用更多的带宽,导致浪费。未监控的资源使用:忽视服务器资源使用情况,导致意外高峰和超额费用。附加费用:未考虑备份、恢复、安全等附加服务,导致隐藏成本。不切实际的折扣:被长期折扣诱惑,而没有考虑合同期满后的实际成本。
避免成本超支的策略
1. 准确评估需求
确定您的网站或应用程序的准确流量和性能要求。使用负载测试工具模拟实际用户流量,以确定所需的服务器资源。考虑将来增长,但不要过度配置,以避免浪费。
2. 选择合适的计划
比较不同的托管提供商和计划,以满足您的特定需求。选择根据服务器资源、带宽和存储量定价的计划。寻找提供灵活扩展选项的提供商,以适应业务增长。
3. 监控资源使用情况
设置警报,在资源使用达到预定义阈值时通知您。定期审查服务器日志和指标,以识别使用模式和潜在问题。优化服务器设置以提高效率并减少资源消耗。
4. 协商附加服务
与托管提供商协商备份、恢复、安全和其他附加服务。比较不同的选项并选择最能满足您需求且最具成本效益的选项。考虑第三方服务,它们可能提供更优惠的价格或功能。
5. 避免长期折扣陷阱
长期折扣可能是诱人的
你知道服务器虚拟化的威力吗?
虚拟化已经成为少数几种彻底改变业务场景的技术之一。
值得注意的是,它仅作为一种新的创新技术开始,只有大公司才能使用,但现在它被中小型企业广泛使用。
虚拟化带来的主要好处是节省成本并集中管理您的IT运营。
1、虚拟化节省了对IT硬件的投资
在虚拟化中,您将多个物理机转换为虚拟机,并将所有虚拟机转换为托管在单个(或少数)物理机上。
这将减少您购买多个硬件资源的需求。
通过这种方式,它可以集中您的运营环境,还可以显着节省购买硬件设备的投资成本。
大幅减少运行更大工作负载所需的物理机数量会对数据中心的节省产生连锁反应。
更少的硬件意味着更少的持续支持和维护成本。
虚拟化可以将硬件和运营成本降低多达50%。
根据一项研究,虚拟化可以将每台服务器的利用率提高80%。
通过恰当地利用虚拟化,您可以轻松地将20台服务器的工作量减少到单台或几台服务器。
最终,虚拟化可以以10:1甚至更好的比例降低业务的硬件需求。
虚拟化不仅可以节省IT硬件成本,还可以节省存储硬件设备所需的基础架构空间和处理它们所需的人力资源。
此外,它还允许公司在较长时间内使用较旧的IT硬件设备。
2、虚拟化可以节省过多的电力成本
使用更大的IT基础架构的公司基本上需要在其电力成本上花费更多。
较少的IT硬件显然会节省大量的电力费用。
服务器,台式机和存储单元等设备必然会耗费大量电力来保持运行。
但如果是虚拟化环境,从长远来看,企业将能够节省大量的能源费用。
此外,服务器和台式机等硬件设备需要大量冷却才能保持平稳运行。
如果使用大量服务器和IT硬件,那么维护IT基础架构的必要冷却水平将花费很多。
然而,虚拟化环境还节省了大量的冷却费用,并鼓励环境友好的业务。
因此,通过虚拟化,您可以在更少的服务器上运行更多工作负载,从而节省能源和资金。
此外,公用事业成本从未降低,因此随着时间的推移,电力和冷却要求的降低将继续得到回报。
3、虚拟化具有更轻松,更具成本效益的维护
虚拟化基础架构可以节省人力和服务器生命周期维护费用。
使用较少的物理服务器,手动配置,监视和维护的次数较少。
物理服务器数量的减少还会降低硬件维护成本并增加可用的工作空间量。
仅在一台物理机器上运行虚拟处理器环境也会使处理过程变得更加简单和容易。
它将大大降低维护成本,否则将需要维护大型基础架构。
报告称,资本和运营支出减少了一半,每个虚拟化服务器每年可节省超过1,500美元。
它还可以减少处理多台机器所需的人力。
此外,它将导致按优先级顺序快速处理IT操作。
这将确保在集中式虚拟环境中实现更轻松,更好的IT操作。
总的来说,这将节省大量的维护成本和人力开支。
它还将确保更好的支持,并且升级和补丁将更易于使用,这意味着企业将与最新的IT更新保持一致,减少停机时间,并且肯定会节省更多成本。
4、虚拟化确保更好的可靠性和安全性
安全成本是许多企业在构建IT基础架构时可能不会考虑的一种支出。
尽管如此,虚拟化还可以提高整体安全性,因为IT人员拥有的机器数量较少,而且监控和处理的基础设施较小。
虚拟化通过使其更具流动性和上下文感知来提高安全性。
使用基于软件的安全解决方案时,与传统的物理安全性相比,安全性变得更加准确,易于管理且部署成本更低。
虚拟化环境还可以节省IT基础架构中安全漏洞期间发生的意外成本,因为IT工作人员拥有的机器较少,而且基础设施较小。
这使得解决安全威胁变得更加容易和快捷。
由于虚拟化,还可以将系统与其他系统隔离开来,并阻止安全漏洞从一台机器传播到另一台机器。
这样,虚拟化还有助于防止环境的安全性,并且从长远来看还可以节省安全成本。
虚拟化的好处结论
虚拟化正在引发数据中心形成方式的变化。
服务器虚拟化正成为整合,节能和降低成本的首选解决方案。
它还为基础架构和安全团队带来了新的挑战,能够提供一致的隔离,监控和策略实施级别-类似于当今物理服务器和系统的可用性。
现在,即使是小型企业也可以选择虚拟化,但对于所有企业而言,这对于节省额外的IT成本来说无疑是一块蛋糕。
结合虚拟环境起初可能并不容易,但大多数企业都同意这样一个事实,即从长远来看它是非常有利可图的。
因此,可以恰当地说,虚拟化不仅有助于节省企业的大量IT成本,而且同时还使企业更灵活,更高效,更高效,从而产生更好的业务成果。
搭建一个日点击量百万以上的 电子商务网站,它的硬件设备投资大概会是多少
百万级访问量网站的技术准备工作当今从纯网站技术上来说,因为开源模式的发展,现在建一个小网站已经很简单也很便宜,所以很多人都把创业方向定位在互联网应用。
这些人里大多数不是很懂技术,或者不是那么精通,而网站开发维护方面的知识又很分散,学习成本太高,所以这篇文章将这些知识点结合起来,系统的来说,一个从日几千访问的小小网站,到日访问一两百万的小网站,中间可能会产生什么问题,以及怎么才能在一开始做足工作尽量避免这些问题。
你的网站因为努力经营,访问量逐渐升高,在升高的过程中,问题也可能开始显现了。
因为带宽的增加、硬件的扩展、人员的扩张所带来的成本提高是显而易见的,而还有相当大的一部分成本是因为代码重构、架构重构,甚至底层开发语言更换引起的,最坏的情况就是数据丢失,所有努力付之一炬。
这类成本支出大多数在一开始就可以避免,先打好基础,往后可以省很多精力,少操很多心。
对于不同的初期投资成本,技术路线的选择是不同的。
这里假设网站刚刚只是一个构想,计划第一年服务器硬件带宽投入5万左右。
对于这个资金额度,有很多种方案可选择,例如租用虚拟主机、租用单独服务器,或者流行的私有云,或者托管服务器。
前两种选择,网站发展到一定规模时需迁移,那时再重做规划显然影响更大。
服务器托管因为配置自主、能完全掌握控制权,所以有一定规模的网站基本都是这种模式。
采用自己托管服务器的网站,一开始要注意以下几点——一、开发语言一般来说,技术人员(程序员)都是根据自己技术背景选择自己最熟悉的语言,不过不可能永远是一个人写程序,所以在语言的选择上还要是要费些心思。
首先明确一点,无论用什么语言,最终代码质量是看管理,因此我们从前期开发成本分析。
现在国内流行的适用于网站的语言,大概有java、php、、 python、ruby这五大阵营。
python和ruby因为在国内流行的比较晚,现在人员还是相对难招一些。
平台的人相对多,但是到后期需要解决性能问题时,对人员技能的要求比较高。
剩余的java、php用人可以说是最多的。
java和php无法从语言层面做比较,但对于初期,应用几乎都是靠前端支撑的网站来说,php入门简单、编写快速,优势相对大一点。
至于后端例如行为分析、银行接口、异步消息处理等,等真正需要时,就要根据不同业务需求来选择不同语言了。
二、代码版本管理稍微有点规模的网站就需要使用代码版本管理了。
代码版本管理两点最大的好处,一是方便协同工作,二是有历史记录可查询比较。
代码版本管理软件有很多,vss/cvs/svn/hg等,目前国内都比较流行,其中svn的普及度还是很高的。
假设选了svn,那么有几点考虑。
一是采用什么树结构。
初期可能只有一条主干,往后就需要建立分支,例如一条开发分支,一条上线分支,再往后,可能要每个小组一个分支。
建议一开始人少时选择两条分支,开发和线上,每个功能本地测试无误后提交到开发分支,最后统一测试,可以上线时合并到上线分支。
如果每人都建自己的分支,合并时会浪费很大精力,对于几乎每天都要修改几次的WEB应用来说,所费时间太多。
向服务器部署代码,可以手工部署也可以自动部署。
手工部署相对简单,一般可直接在服务器上svn update,或者找个新目录svn checkout,再把web root给ln -s过去。
应用越复杂,部署越复杂,没有什么统一标准,只是别再用ftp上传那种形式,一是上传时文件引用不一致错误率增加,二是很容易出现开发人员的版本跟线上版本不一致,导致本来想改个错字结果变成回滚。
如果有多台服务器还是建议自动部署,更换代码的机器从当前服务池中临时撤出,更新完毕后再重新加入。
三、服务器硬件在各个机房里,靠一台服务器孤独支撑的网站数不清,但如果资金稍微充足,建议至少三台的标准配置,分别用作web处理、数据库、备份。
web服务器至少要8G内存,双sata raid1,如果经济稍微宽松,或静态文件或图片多,则15k sas raid10。
数据库至少16G内存,15k sas raid 10。
备份服务器最好跟数据库服务器同等配置。
硬件可以上整套品牌,也可以兼容机,也可以半品牌半组装,取决于经济能力。
当然,这是典型的搭配,有些类型应用的性能瓶颈首先出现在web上,那种情况就要单独分析了。
web服务器可以既跑程序又当内存缓存,数据库服务器则只跑主数据库(假如是MySQL的话),备份服务器所承担就相对多一些,web配置、缓存配置、数据库配置都要跟前两台一致,这样WEB和数据库任意一台出问题,很容易就可以将备份服务器切换过去临时顶替,直到解决完问题。
要注意,硬件是随时可能坏掉的,特别是硬盘,所以宁可WEB服务器跟数据库服务器放在一起,也一定不能省掉备份,备份一定要异机,并且有异步,电力故障、误操作都可能导致一台机器上的所有数据丢失。
很多的开源备份方案可选择,最简单的就是rsync,写crontab里,定时同步。
备份和切换,建议多做测试,选最安全最适合业务的,并且尽可能异地备份。
四、机房三种机房尽量不要选:联通访问特别慢的电信机房、电信访问特别慢的联通机房、电信联通访问特别慢的移动或铁通机房。
机房要尽可能多的实地参观,多测试,找个网络质量好,管理严格的机房。
机房可以说是非常重要,直接关系到网站访问速度,网站访问速度直接关系到用户体验,访问速度很慢的网站,很难获得用户青睐。
五、架构在大方向上,被熟知的架构是web负载均衡+数据库主从+缓存+分布式存储+队列。
在一开始,按照可扩展的原则设计和编程就可以。
只是要多考虑缓存失效时的雪崩效应、主从同步的数据一致性和时间差、队列的稳定性和失败后的重试策略、文件存储的效率和备份方式等等意外情况。
缓存失效、数据库复制中断、队列写入错误、电源损坏,在实际运维中经常发生,如果不注意这些,出现问题时恢复期可能会超出预期很长时间。
六、服务器软件操作系统Linux很流行。
在没有专业运维人员的情况下,应倾向于择使用的人多、社区活跃、配置方便、升级方便的发行版,例如RH系列、 debian、ubuntu server等,硬件和操作系统要一起选择,看是否有适合的驱动,如果确定用某种商业软件或解决方案,也要提前知晓其对哪种操作系统支持最佳。
web服务器方面,apache、nginx、lighttpd三大系列中,apache占有量还是最大,但是想把性能调教好还是需要很专业的,nginx和 lighttpd在不需要太多调整的情况下可以达到一个比较不错的性能。
无论选择什么软件,除非改过这些软件或你的程序真的不兼容新版本,否则尽量版本越新越好,版本新,意味着新特性增多、BUG减少、性能增加。
一个典型的php网站,基本上大多数人都没改过任何服务器软件源代码,绝大多数情况是能平稳的升级到新版本的。
类似于jdk5到 jdk6,python2到python3这类变动比较大的升级还是比较少见的。
看看ChangeLog,看看升级说明,结合自己情况评估测试一下,越早升级越好,升级的越晚,所花费的成本越高。
对于软件包,尽量使用发行版内置的包管理工具,没有特殊要求时不建议自己编译,那样对将来运维不利。
七、数据库几乎所有操作最后都要落到数据库身上,它又最难扩展(存储也挺难)。
数据库常见的扩展方法有复制、分片,设计时要考虑到每种应用的数据如何复制、分片,当然这种考虑一般会推迟到技术设计时期。
在初期进行数据库结构设计时,要根据不同的业务类型和增长量预期来考虑是否要分库、分区,并且尽量不要使用联合查询、不使用自增ID以方便分片。
复制延时问题、主从数据库数据一致性问题,可以自己写或者用已有的运维工具进行检测。
用存储过程是比较难扩展的,这种情形多发生于传统C/S,特别是OA系统转换过来的开发人员。
低成本网站不是一两台小型机跑一个数据库处理所有业务的模式,是机海作战。
方便水平扩展比那点预分析时间和网络传输流量要重要的多的多。
另外,现在流行一种概念叫NoSQL,可以理解为非传统关系型数据库。
实际应用中,网站有着越来越多的密集写操作、上亿的简单关系数据读取、热备等,这都不是传统关系数据库所擅长的,于是就产生了很多非关系型数据库,比如Redis/TC&TT/MongoDB/Memcachedb等,在测试中,这些几乎都达到了每秒至少一万次的写操作,内存型的甚至5万以上。
在设计时,可根据业务特点和性能要求来选择是否使用这类数据库。
例如 MongoDB,几句配置就可以组建一个复制+自动分片+failover的环境,文档化的存储也简化了传统设计库结构再开发的模式。
但是当你决定采用一项技术时,一定要真正了解其优劣,例如可能你所选择的技术并不能支持你所需要的事务和数据一致性要求。
八、文件存储存储的分布几乎跟数据库扩展一样困难,不过只有百万的PV的情况下,磁盘IO方面一般不会成大问题,一两台采用SATA做条带RAID的机器可以应付,反而是自己做异步备份比较复杂,因为小文件多。
如果只有一台机器做存储,可以做简单的优化,例如放最小缩略图的分区和放中等缩略图的分区,根据平均大小调整一下块大小。
存储要规划好目录结构,否则文件增多后维护起来复杂,也不利于扩展。
同时还要考虑将来扩容,例如采用LVM,或者把文件根据不同规则散列到不同机器。
磁盘IO繁重的情况下更容易出现故障,所以要做好备份,若发现有盘坏掉,要马上行动更换,很多人的硬盘都是坏了一块之后,接二连三的坏下去。
为了将来图片走cdn做准备,一开始最好就将图片的域名分开,且不用主域名。
因为很多网站都将cookie设置到了,如果图片也在这个域名下,很可能因为cookie而造成缓存失效,并且占多余流量,还可能因为浏览器并发线程限制造成访问缓慢。
九、程序一定硬件条件下,应用能承载多少访问量,很大一部分也取决于程序如何写。
程序写的不好,可能一万的访问都承载不了,写的好,可能一两台机器就能承担几百万PV。
越是复杂、数据实时性要求越高的应用,优化起来越难,但对普通网站有一个统一的思路,就是尽量向前端优化、减少数据库操作、减少磁盘IO。
向前端优化指的是,在不影响功能和体验的情况下,能在浏览器执行的不要在服务端执行,能在缓存服务器上直接返回的不要到应用服务器,程序能直接取得的结果不要到外部取得,本机内能取得的数据不要到远程取,内存能取到的不要到磁盘取,缓存中有的不要去数据库查询。
减少数据库操作指减少更新次数、缓存结果减少查询次数、将数据库执行的操作尽可能的让你的程序完成(例如join查询),减少磁盘IO指尽量不使用文件系统作为缓存、减少读写文件次数等。
程序优化永远要优化慢的部分,换语法是无法“优化”的。
然而编程时不应该把重点放在优化上,应该关注扩展性。
当今的WEB应用,需求变化非常之快,适应多种需求的架构是不存在的,我们的扩展性就要把要点放在跟底层交互的架构上,例如持久化数据的存取规则、缓存的存取规则等,还有一些共用服务,例如用户信息等。
先把不变的部分做完善,剩下的部分就很容易将精力放在业务逻辑上面了。
为什么使用CDN??有什么好处??
CDN是一种提高用户访问网页速度的技术,全名叫内容分发网络。
对网站最大的影响就是让网站速度变快,CDN技术的发明之初就是为了解决未来可能出现的网络拥塞的问题。
我国第一家CDN服务商是2000年出现的+——蓝讯。
cdn加速可以简单理解为网络分发,对访问并发或非并发的请求进行流量分散,减少源服务器的请求。
简单来说可以这样理解,没有cdn的话,用户访问网站,就会直接请求到你的源头服务器/空间,这时候你是一个源IP响应N个用户请求的,如果流量大,受到带宽等原因影响,你网站就会变得非常卡,应用了cdn的话,就相当于将你的网站内容分发/复制到了节点服务器,比如30个节点的cdn,那么用户这时候访问的话,就会以就近原则获得节点服务器的响应,当然要结合cdn的缓存策略,部分没有的数据会回源请求,这时候访问速度就大大提高了,可能只有30%的响应需要你的源服务器来反馈,响应压力大大降低,稳定性也更好。
对网站优化是没有负面影响的,现在搜索引擎对于cdn节点的变化不会误判IP变化,整体来讲访问速度的提升对于用户体验是有正向影响的,综合来说更利于优化。

