欢迎光临
我们一直在努力
广告
广告
广告
广告
广告
广告
广告
广告
广告
广告
广告
广告
广告

优酷服务器数量背后的技术挑战与解决方案 (优酷服务器数据异常)

优酷服务器数量背后的技术挑战与解决方案
优酷服务器数量背后的技术挑战与解决方案

一、引言

随着互联网的快速发展,视频流媒体服务已成为人们日常生活中不可或缺的一部分。

优酷作为中国领先的在线视频平台之一,其服务器规模及数量承载着巨大的用户需求和流量压力。

本文将探讨优酷服务器数量增长背后所面临的技术挑战及解决方案,并以近期优酷服务器数据异常为例,进行深入剖析。

二、优酷服务器数量的增长与面临的挑战

近年来,优酷的服务器数量呈现爆发式增长,这无疑提升了优酷的服务能力,但同时也带来了诸多技术挑战。面临的挑战主要包括以下几个方面:

1. 数据处理压力:随着服务器数量的增加,数据处理压力日益增大。大量用户同时在线观看视频,产生了海量的数据请求,要求服务器具备更高的数据处理能力。

2. 负载均衡与资源分配:在服务器集群中,如何合理分配资源、实现负载均衡,是确保服务器高效运行的关键。若资源分配不当,可能导致部分服务器过载,影响用户体验。

3. 安全性与稳定性:服务器数量的增长也意味着安全风险的增加。如何保障数据安全、防止数据泄露和攻击,是优酷面临的重大挑战。同时,服务器的稳定性也是确保服务正常运行的关键因素。

4. 系统管理与维护:随着服务器数量的增加,系统管理与维护的难度也逐渐加大。如何实现对大量服务器的实时监控、故障排查与修复,是优酷必须面对的问题。

三、优酷服务器数据异常案例分析

近期,优酷遭遇了一次服务器数据异常事件。

在高峰时段,部分服务器出现负载过高、响应缓慢等问题,导致部分用户无法正常访问。

经过分析,原因主要包括以下几个方面:

1. 流量洪峰冲击:在热门视频发布或大型活动期间,用户访问量急剧增加,超过服务器集群的承载能力。

2. 资源分配不均:部分服务器资源分配不均,导致部分服务器过载,而其他服务器则处于空闲状态。

3. 安全攻击:外部攻击者可能利用此次数据异常事件进行安全攻击,加剧了问题的严重性。

四、解决方案与对策

针对上述挑战与问题,优酷可采取以下解决方案与对策:

1. 提升数据处理能力:采用更先进的数据处理技术和设备,提升服务器的数据处理能力,以应对海量数据请求。

2. 优化负载均衡策略:采用智能负载均衡技术,实时监测服务器集群的负载情况,合理分配资源,确保各服务器之间的负载均衡。

3. 加强安全防护:建立完善的安全体系,采用先进的安全技术,如防火墙、入侵检测系统等,保障服务器的安全稳定。

4. 改进系统管理与维护:采用自动化监控系统,实现对大量服务器的实时监控、故障排查与修复。同时,加强人员培训,提高运维团队的技术水平。

5. 引入云计算技术:云计算技术可以实现动态扩展和弹性伸缩,能够很好地应对流量洪峰冲击。通过将部分业务部署在云端,可以极大地提升服务器的承载能力。

6. 建立多活数据中心:建立多个数据中心,实现数据的冗余备份和灾备恢复,提高服务的可用性和稳定性。

五、总结

优酷服务器数量的增长带来了诸多技术挑战,但通过采取先进的技术的解决方案,可以有效地应对这些挑战。

未来,随着技术的不断发展,优酷将继续优化其技术架构,提升服务质量,为用户提供更好的视频观看体验。


企业大数据项目实施过程中遇到的那些挑战

企业大数据项目实施过程中遇到的那些挑战

说到大数据,人们很多还停留在概念的阶段,不过对于一些企业来说,大数据已经就在眼前,业务的需求驱使着IT部门不得不去做大数据的分析与处理。

企业需要大数据的分析和处理,但是大数据并不是想象中的那么简单,在实际部署实施的过程中会遇到很多方面的问题。

尤其是目前社交网络的兴起带来了更多的数据量,企业需要面对的挑战就越来越高,因为社交网络的数据本身就是一个无底洞。

一位企业CTO说:“目前我们的数据来源基本都是在社交网络上面,我么收集这些数据加以分析,帮助企业理解这些人的消费规律以及个人偏好。

企业大数据项目遇到的那些挑战

这位CTO所在的团队运营着一个可以产生12亿美元的数据平台,以及每天超过400万人的PB级数据集群。

所在团队的大数据环境中包括了大量的开源平台,他们所用的技术包括:Hadoop、HBase,Hive,ElasticSearch,Scala,Storm,以及其他的很多工具。

这确实是一个非常严峻的挑战。

我们通过企业大数据项目的具体实施过程不难看出,在实施的过程中技术与人是最关键的两个问题。

选择一个成熟的技术,并且让最合适的人来进行实施,这样才会有一个比较合理的结果。

目前,以及有不少的企业开始进行部署自己的大数据项目,下面我们就为大家总结一下企业在部署大数据项目过程中遇到的那些难题与挑战。

复杂的数据计算与存储

大数据,顾名思义海量的数据是不可避免的。

这项对于传统的数据分析而言,大数据需要大量的存储空间来进行数据存储,现在数据的产生量已经不是人们所能想象的,传统的存储介质与存储方式并不能满足如此快速的数据产生量。

换句话来说,看看新浪微博、Facebook每分钟产生的数据量你就会明白了,电商更是夸张,阿里双十一,百亿的交易额,这样的数据量需要具有针对性的数据存储方式。

而从项目的整体出发,只是存储并不能算得上大数据。

在存储之后还需要对海量的数据进行分析与计算,只有最后得出的分析结果才会对企业有所帮助。

存储只是万里长征的第一步,大数据处理团队需要弄清楚这些数据背后的价值,需要合理的对数据进行归档,并且数据价值是需要进行计算分析得出的,庞大的数据量需要更加庞大的计算能力才能完成。

技术的成熟度的挑战

开源技术就好比一只小狗,它很可爱,也很好。

但你需要养活它。

就目前的技术发展而言,开源的大数据技术还并不是十分成熟,商业的大数据解决方案价格有非常昂贵,所以对于大部分企业来讲,开源貌似是唯一的解决方向。

但开源技术并不能很好的适应每一个企业的具体业务线,所以企业还要投入大量的技术力量进行维护与二次开发。

开源技术是条可爱的小狗,但是你需要养活他。

许多大数据技术是在建工程。

虽然基础技术日趋完善,管理和配置的工具都处于起步阶段,让IT专业人员做工作解决的差距。

企业的IT团队不得不开发工具,从管理的角度,从工作流程的角度,从配置等不同的角度出发。

期待,努力发现人才

之前讲了,大数据需要成熟的技术以及合适的人来执行,这里指的合适的人是一个真正的数据分析专家。

而这样的人往往是可遇而不可求的,除非你花重金去其他公司去挖人,而且还不能确定这个人是否能适应这个团队。

其实从技术的角度出发,大数据的技术与工具正在迅速发展,但是这些技术与工具只掌握在少数人的手里,并不能得到大规模的应用。

所以对于企业来讲,大数据的技术与人同样重要。

拥有了成熟稳定的技术,但是没有可以执行它的人,那么大数据项目也会相当危险,没准什么时候就成为了企业财政的累赘。

3产品线与项目的对接

想想模块化,准备投资

任何一个项目的组建都不可能是无成本的。

每一个项目都会意味着人力与财力的投入。

尤其是在大数据项目上,每一个关键的业务点都意味着大量的资源投入。

相比于其他项目,大数据项目耗费的资源会更多,在基础设施上的投入,服务器、存储以及计算资源和开发人员的投入都是相当庞大的。

模块化的基础设施一直是重要的,因为它可以让IT团队能够处理的业务优先级的变化,并提供业务透明度。

企业的IT团队有必要投资的管理和生产力工具。

这就是20%,25%都集中在我的工程资源,生产力工具和工作流程管理。

将产品与业务线做对接

在企业中项目需要围绕着业务进行实施,再好的产品项目如果不能很好的与业务进行对接,也是不能实现其真正的价值。

这很容易让大数据的专家紧密合作,产品专家和业务利弊谈,但它可以是难以贯彻的想法。

越来越多在??过去的几年中,我们已经给他们带来了起来,因为双方都需要了解的另一边。

在很多失败的案例中我们不难看出,企业大数据产品的最终失败原因有一条就是产品不能很好的服务于企业核心业务,这样就会导致大量投入的资源变成没有价值体现的投入。

而成功的大数据产品就不是这样子。

一个成功的大数据分析产品可以为企业揭示风险并且识别新的商业机会,并且可以根据客户的喜好进行商业活动,并获得洞察客户情绪-然后与该公司分享成果。

大数据展示业务和IT事件有助于创造一个时髦围绕大数据分析的潜力。

领导层到技术人的思想贯彻

这里说的还是与人有关,大数据项目在企业中算是一个牵动企业发展战略的大项目。

这需要从企业领导层到开发人员的整体投入。

企业花了很多的时间映射可以利用大数据在我们的承保和理赔流程,并回馈业务线。

项目团队需要企业从领导层到技术层从上倒下的支持。

ACE集团的督导委员会,负责领导公司的大数据议程。

令人惊讶的是,它不是堆叠技术人员。

“这是很难得的任何科技。

有四个技术人员和大约20商界领袖在那个队。

关键的事情之一是投资建设第一的技能和资源,在我们开始这段旅程。

如果没有,我们将不得不一个不可接受的滞后值回业务。

一位成功部署大数据项目的CTO说。

4把业务人员下放到项目中去

把业务人员下放到项目中去

既然大数据项目是为了企业业务服务的,而对企业业务最为熟悉就是业务人员,在整个项目中业务人员的需求往往是必然的需求。

企业需要进行完全嵌入的做法,将一线的业务人员下派到项目的每一个关键环节。

只要这样,整个项目完成之后才能更好的为业务服务。

企业通过建立核心竞争力,搭配新的技能,在我们的业务统计人员,数据洗涤器,数据分析,工艺专家我们的赔款及承保专长。

其实这是一只搭配的意识,分享知识,发展和创新,我们利用大数据帮助业务发展。

不要小看管理供应商或系统集成商

对于一些技术力量有限的企业来说,他们更喜欢寻找一个系统集成商或者方案供应商来进行外包。

在这期间会进行方案招标,而每一家集成商的方案都不尽相同,而且没有一家可以提供即用的解决方案,对于供应商的管理也是一个挑战,整合所有不同的系统,将这些系统整合成为一个巨大的方案进行协同运行。

独立评估投资回报率

在很多企业中,使用大数据分析,改进和验证的营销活动的有效性。

当大数据项目是成功的,每个人都希望它的一部分,当你走在你开始为公司创造新的收入,项目带来这么多钱,大家突然出来的木制品和希望声称。

对于他的团队,问题解决了,当CFO加强仲裁,提供独立意见的投资回报率,公司就会更加承认大数据计划。

转变并不会在一夜之间发生。

从多来源的数据采集,到通过深度分析获取洞察力,之间会是一段并不平坦的征程。

毫无疑问,Hadoop等技术的日趋成熟,让企业用户可以更方便地、在更大的范围内收集业务的相关数据,但同时真正的挑战也会接踵而至。

这就是如何高效地处理多来源的海量数据,并且为其找到适合的商业用途。

这款沙盒射击游戏快速EA测试背后,运用了哪些黑科技?

最近几年来,游戏市场进入精品化阶段已经成为了行业共识。

对于用户而言,精品化意味着更好的画面、更大的世界、更有趣的玩法以及更丰富的内容;但对于开发者来说,这就意味着他们的研发和运维能力遇到了越来越大的挑战。

比较有趣的一个问题是:随着游戏开发技术和工具的持续升级,游戏研发的门槛不断降低,但与此同时,随着用户对内容质量的要求越来越高、而可用的资源有限,中小团队想要打造精品化的游戏,往往很难平衡技术与创意之间的关系。

不过,随着沙盒射击游戏《Scavengers》正式进入了EarlyAccess阶段,越来越多的用户得以亲自进入这个广袤唯美的冰封未来世界,体验独特的PvPvE玩法。

通过这款游戏,英礴旗下的MidwinterEntertainment团队向同行们展示了在英礴IMS(ImprobableMultiplayerServices)的帮助下,小团队也有能够做成大项目的可能。

这方面,英礴的多人游戏服务(IMS)就为研发团队提供了足够的灵活性。

英礴IMS主要包括SpatialOS和zeuz两大组成部分,前者通过解决开发者面临的技术难题,让研发团队可以将更多精力聚焦于创意,后者则通过灵活而高性价比的运维方案让开发者根据游戏实际需求随时对服务器扩容,降低多人游戏的运维成本,提高了中小团队研运能力的上限。

为游戏创意赋能:英礴IMS让研发团队摆脱“体力活”对于游戏玩家而言,决定体验的是游戏玩法和内容,但对于开发者来说,想要实现这些看似天马行空的想法,就要聚焦于提升玩法趣味性和内容丰富性、不能让技术和工具分散团队过多的精力。

据Midwinter工作室CEOJoshHolmes透露,对于《Scavengers》这个项目,他们的目标是“打造一张能扩展并容纳所有玩家的地图,让所有玩家团队可以在同一个世界里追寻目标,而且这个世界还能将AI和复杂的系统、MMO与动作射击完美地结合在一起”。

对于最初只有4人的Midwinter而言,打造这样一款游戏,面临的挑战是难以想象的。

作为《光环4》的前创意总监,JoshHolmes很清楚,为了实现高品质体验,即便是3A游戏团队也不得不在玩家数量、AI等多个方面作出妥协。

比如在《光环5》的战区模式里,343团队就简化了AI逻辑,以确保不会突破服务器承载上限。

不过,与很多游戏比起来,《Scavengers》面临的问题显然更多,对于Midwinter来说,团队主要面临的技术挑战在于:如何快速创造丰富复杂的大世界,以及如何在同一个游戏世界里平衡PvE和PvP两种玩法。

很多时候,由于缺乏好用的工具和技术,在内容量较大、玩法复杂的游戏制作当中,开发者们很容易将原本应注重创意的“脑力活”,做成了批量甚至重复打造资源的“体力活”。

考虑到时间和资源成本,很多中小团队不得不在多人游戏的玩家数量、AI密度等关键领域做出妥协,因为这些决策会对游戏研发带来深远的影响。

SpatialOS最重要的功能之一,就是帮助研发团队减轻不必要的工作量,它可以通过更智能的AI、更合理的架构,让中小团队也能快速创造内容丰富的无缝大世界,即便大型团队在它的加持之下,也可以有余力尝试更多的可能。

SpatialOS丰富多元的AI可以为每一个玩家带来多个高智能NPC,二级游戏服务器模拟AI,还在不影响游戏玩法和体验的前提下,最大化增加了AI数量。

在SpatialOS的帮助下,Midwinter打造了一个鲜活而丰富的大世界,比如在《Scavengers》游戏里,不仅有极端天气、数百个聪明复杂的AI对手,你还需要面临其他团队的威胁,带来了前所未有的沙盒射击体验。

中小团队之所以无法打造3A级的游戏世界,很大程度上是因为按照传统研发流程,大世界的打造和运行都需要庞大的人力和资源投入,比如游戏后台、数据库以及网络和服务器托管等工作,可能就需要专门的数十人团队才能完成。

不过,在SpatialOS云端分布式平台、无缝分区的多服务器架构的帮助下,Midwinter只需要投入两名工程师就足以胜任。

有了新技术之后,开发者们往往还会面临一个新问题:如果新技术的学习门槛较高,那就意味着额外的时间成本,这在快速变化的游戏行业,无疑是有风险的。

SpatialOS很明显也考虑了这一点,以熟悉Unreal引擎的Midwinter为例,SpatialOSGDKforUnreal就可以允许团队用熟悉的工具和流程,轻松实现分发及早期规模化测试。

在打造《Scavengers》多人玩法的过程中,Midwinter使用英礴提供的SpatialOS网络框架替换了UE4网络层代码,并通过多个服务器分配负载的方式提升CPU计算上限,不仅保障了同一个地图内的高玩家数量,还降低了用户的设备负载,让更多用户得到激烈而流畅的多人游戏体验。

SpatialOS还配备了内置日志、测量和检查工具帮开发者分析和排除故障,简化游戏创意实现过程;而独特的负载拆分技术还让研发团队在主游戏服务器上负载拆分出了AI系统,并可以根据游戏玩法需要调整容纳的玩家数量,保证了PVP和PVE两种截然不同的体验互不干涉。

通过英礴提供的基础设施和服务,Midwinter不仅解决了后端技术压力,让团队专注于游戏玩法和创意的实现,还可以通过熟悉的工具和研发流程(目前SpatialOS已支持Unreal、Unity和自研引擎),以及灵活的运维解决方案实现快速测试迭代,缩短游戏的研发和上线周期,将创意风险降到最低。

一体化服务解决运维难题,英礴IMS助力游戏行业精品化对于一款多人游戏而言,研发完成只是产品寿命的开始,随后的测试和运营才是决定其长线成功的关键。

在这个阶段,除了解决玩法反馈的问题之外,游戏生命周期内玩家数量的变化还会带来运营成本难题。

虽然网络服务并不会让一款游戏更加好玩,但网络问题却会让开发者费尽心血打造的体验大打折扣。

可能很多开发者都有同感,在游戏真正上线之前,你很难预测当天的玩家数量是多少,因此在服务器数量的选择方面就会陷入两难:如果低估了玩家数量导致服务器容量过低,很容易带来口碑雪崩;如果准备的服务器数量过多而实际上线之后大量闲置,又会导致运营成本飙升。

JoshHolmes表示,“多服务器架构可以让不同平台的数百万名玩家共同体验Midwinter打造的极寒世界,实现更具互联性和社交性的体验。

它就像是一个音量旋钮,你不需要重构网络解决方案,只需要增加计算量,就可以把玩家数量从40人增加到800人甚至更多”。

SpatialOS可支持任何规模的跨平台游戏这里的多服务器架构,指的是zeuz提供的一项服务。

作为英礴旗下的一站式托管和运维方案,zeuz提供了混合云与裸机服务器方案,开发者能够根据游戏具体需求控制服务器数量,在保证降低运营成本的同时,快速部署测试服务器、收集玩家数据。

据GameLook了解,在《Scavengers》进入EA测试之前,Midwinter曾顺利进行过8次Playtest,并且基于玩家反馈及时解决了游戏出现的诸多问题,将很多bug对用户体验的影响控制在了最小范围之内。

EA测试开启之后,英礴IMS混合云解决方案帮助Midwinter在短短4小时内就启用并扩容亚洲和南美服务器,根据实际玩家人数的变化而随时调整游戏服务器数量,并且将成本控制在了合理的动态范围之内。

随着用户量的增长和运维成本的降低,英礴IMS提供的研运一体化服务带来的优势将更加明显。

不夸张的说,如果把创意玩法比作梦想中的小鸟,那么英礴IMS无异于给中小团队的梦想插上了“飞翔的翅膀”。

JoshHolmes在谈到技术问题的时候提到,“花越少的时间搭建技术(比如定制的游戏引擎、物理引擎或者网络层解决方案),就可以把更多的时间投入在为玩家创造更具价值和影响力的事情上——更丰富的游戏玩法和更酷的游戏体验”。

游戏市场进入存量阶段之后,国产游戏出海已经成为了大多数同行的选择,面对陌生市场和用户带来的挑战,英礴IMS还提供了上线后的全方位支持,并为中国开发者提供了海外渠道对接、出海合作开发、规模化测试以及运维咨询等多方面的支持,最大化解决了开发者们出海的后顾之忧,让他们可以聚焦创意,为行业带来更多的精品游戏。

结语从本质上来说,游戏精品化背后真正的问题是玩家对于游戏内容品质的要求提升:他们希望游戏世界不是机械式的资源堆砌,而是充满了生命与活力、允许社交并对他们行为作出反应的真实世界。

传统研发模式下,想要打造这样高品质的内容,往往意味着需要更多的资源、人手和时间投入,这对初期捉襟见肘的中小团队来说,是非常不友好的。

英礴提供的IMS多人游戏服务方案解决了多人游戏研发和运维当中的技术难题,让游戏开发者能够专注于他们热爱并擅长的创意领域。

对于开发者而言,《Scavengers》或许让他们看到的不止是打破了小团队的研发品类和项目规模天花板,还意味着将整个研发运维流程的创意风险降到了最低。

随着这款游戏进入EA阶段,英礴IMS未来将为更多研发团队赋能,给业内带来更多的精品游戏。

联系英礴获取更多英礴IMS相关信息。

java方面主流的技术有哪些

StructshibernatespringStrutsStruts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。

Struts框架可分为以下四个主要部分,其中三个就和MVC模式紧密相关:1、模型(Model),本质上来说在Struts中Model是一个Action类(这个会在后面详细讨论),开发者通过其实现商业逻辑,同时用户请求通过控制器(Controller)向Action的转发过程是基于由文件描述的配置信息的。

2、视图(View),View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用她们我们可以快速建立应用系统的界面。

3、控制器(Controller),本质上是一个Servlet,将客户端请求转发到相应的Action类。

4、一堆用来做XML文件解析的工具包,Struts是用XML来描述如何自动产生一些JavaBean的属性的,此外Struts还利用XML来描述在国际化应用中的用户提示信息的(这样一来就实现了应用系统的多语言支持)。

SpringSpring是轻量级的J2EE应用程序框架。

Spring的核心是个轻量级容器(container),实现了IoC(Inversion of Control)模式的容器,Spring的目标是实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间彼此可以独立,也可以使用其它的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案 。

Spring不会特别去提出一些子框架来与现有的OpenSource框架竞争,除非它觉得所提出的框架够新够好,例如Spring有自己的 MVC框架方案,因为它觉得现有的MVC方案有很多可以改进的地方,但它不强迫您使用它提供的方案,您可以选用您所希望的框架来取代其子框架,例如您仍可以在Spring中整合您的Struts框架 。

Spring的核心概念是IoC,IoC的抽象概念是「依赖关系的转移」,像是「高层模组不应该依赖低层模组,而是模组都必须依赖于抽象」是 IoC的一种表现,「实现必须依赖抽象,而不是抽象依赖实现」也是IoC的一种表现,「应用程序不应依赖于容器,而是容器服务于应用程序」也是IoC的一种表现。

Spring的架构性的好处Spring能有效地组织你的中间层对象,无论你是否选择使用了EJB。

如果你仅仅使用了Struts或其他的包含了J2EE特有APIs的framework,你会发现Spring关注了遗留下的问题。

能消除在许多工程上对Singleton的过多使用。

根据我的经验,这是一个主要的问题,它减少了系统的可测试性和面向对象特性。

Spring 能消除使用各种各样格式的属性定制文件的需要,在整个应用和工程中,可通过一种一致的方法来进行配置。

曾经感到迷惑,一个特定类要查找迷幻般的属性关键字或系统属性,为此不得不读Javadoc乃至源编码吗?有了Spring,你可很简单地看到类的JavaBean属性。

倒置控制的使用(在下面讨论)帮助完成这种简化。

Spring能通过接口而不是类促进好的编程习惯,减少编程代价到几乎为零。

被设计为让使用它创建的应用尽可能少的依赖于他的APIs。

在Spring应用中的大多数业务对象没有依赖于Spring。

.使用Spring构建的应用程序易于单元测试。

能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。

你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。

帮助你解决许多问题而无需使用EJB。

Spring能提供一种EJB的替换物,它们适于许多web应用。

例如,Spring能使用AOP提供声明性事务而不通过使用EJB容器,如果你仅仅需要与单个的数据库打交道,甚至不需要JTA实现。

为数据存取提供了一致的框架,不论是使用JDBC或O/R mapping产品(如Hibernate)。

Spring确实使你能通过最简单可行的解决办法解决你的问题。

这些特性是有很大价值的。

Spring能做什么?Spring提供许多功能,在此我将快速地依次展示其各个主要方面。

任务描述:首先,让我们明确Spring范围。

尽管Spring覆盖了许多方面,但我们已经有清楚的概念,它什么应该涉及和什么不应该涉及。

Spring的主要目的是使J2EE易用和促进好编程习惯。

Spring 不重新开发已有的东西。

因此,在Spring中你将发现没有日志记录的包,没有连接池,没有分布事务调度。

这些均有开源项目提供(例如 Commons Logging 用来做所有的日志输出,或Commons DBCP用来作数据连接池),或由你的应用程序服务器提供。

因为同样的的原因,我们没有提供O/R mapping层,对此,已有有好的解决办法如Hibernate和JDO。

Spring的目标是使已存在的技术更加易用。

例如,尽管我们没有底层事务协调处理,但我们提供了一个抽象层覆盖了JTA或任何其他的事务策略。

Spring没有直接和其他的开源项目竞争,除非我们感到我们能提供新的一些东西。

例如,象许多开发人员,我们从来没有为Struts高兴过,并且感到在MVC web framework中还有改进的余地。

在某些领域,例如轻量级的 IoC容器和AOP框架,Spring有直接的竞争,但是在这些领域还没有已经较为流行的解决方案。

(Spring在这些区域是开路先锋。

)Spring也得益于内在的一致性。

所有的开发者都在唱同样的的赞歌,基础想法依然是Expert One-on-One J2EE设计与开发的那些。

并且我们已经能够使用一些主要的概念,例如倒置控制,来处理多个领域。

Spring在应用服务器之间是可移植的。

当然保证可移植性总是一次挑战,但是我们避免任何特定平台或非标准化,并且支持在WebLogic,Tomcat,Resin,JBoss,WebSphere和其他的应用服务器上的用户。

Spring的核心即是个IoC/DI的容器,它可以帮程序设计人员完成组件之间的依赖关系注入,使得组件之间的依赖达到最小,进而提高组件的重用性,Spring是个低侵入性(invasive)的框架,Spring中的组件并不会意识到它正置身于Spring中,这使得组件可以轻易的从框架中脱离,而几乎不用任何的修改,反过来说,组件也可以简单的方式加入至框架中,使得组件甚至框架的整合变得容易。

Spring最为人重视的另一方面是支持AOP(Aspect-Oriented Programming),然而AOP框架只是Spring支持的一个子框架,说Spring框架是AOP框架并不是一件适当的描述,人们对于新奇的 AOP关注映射至Spring上,使得人们对于Spring的关注集中在它的AOP框架上,虽然有所误解,但也突显了Spring的另一个令人关注的特色。

Spring也提供MVC Web框架的解决方案,但您也可以将自己所熟悉的MVC Web框架与Spring解合,像是Struts、Webwork等等,都可以与Spring整合而成为进用于自己的解决方案。

Spring也提供其它方面的整合,像是持久层的整合如JDBC、O/R Mapping工具(Hibernate、iBATIS)、事务处理等等,Spring作了对多方面整合的努力,故说Spring是个全方位的应用程序框架。

AJAXAJAX全称“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

它有机地包含了以下几种技术:基于web标准(standards-based presentation)XHTML+CSS的表示; 使用 DOM(Document Object Model)进行动态显示及交互; 使用 XML 和 XSLT 进行数据交换及相关操作; 使用 XMLHttpRequest 进行异步数据查询、检索;使用 JavaScript 将所有的东西绑定在一起。

类似于DHTML或LAMP,AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。

事实上,一些基于AJAX的“派生/合成”式(derivative/composite)的技术正在出现,如“AFLAX”。

ajax优势传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。

服务器接收并处理传来的表单,然后返回一个新的网页。

这个做法浪费了许多带宽,因为在前后两个页面中的大部分HTML代码往往是相同的。

由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。

这导致了用户界面的响应比本地应用慢得多。

与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。

因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。

同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。

HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使得Java程序员可以使用对象编程思维来操纵数据库。

Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化。

它还可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用 Hibernate不会对您造成妨碍,也不会强迫您修改对象的行为方式。

它们不需要实现任何不可思议的接口以便能够持续存在。

惟一需要做的就是创建一份XML“映射文档”,告诉Hibernate您希望能够保存在数据库中的类,以及它们如何关联到该数据库中的表和列,然后就可以要求它以对象的形式获取数据,或者把对象保存为数据。

与其他解决方案相比,它几乎已经很完美了。

运行时,Hibernate读取映射文档,然后动态构建Java类,以便管理数据库与Java之间的转换。

在Hibernate中有一个简单而直观的API,用于对数据库所表示的对象执行查询。

要修改这些对象,(一般情况下)只需在程序中与它们进行交互,然后告诉Hibernate保存修改即可。

类似地,创建新对象也很简单;只需以常规方式创建它们,然后告诉Hibernate有关它们的信息,这样就能在数据库中保存它们。

Hibernate API学习起来很简单,而且它与程序流的交互相当自然。

在适当的位置调用它,就可以达成目的。

它带来了很多自动化和代码节省方面的好处,所以花一点时间学习它是值得的。

而且还可以获得另一个好处,即代码不用关心要使用的数据库种类(否则的话甚至必须知道)。

我所在的公司就曾有过在开发过程后期被迫更换数据库厂商的经历。

这会造成巨大的灾难,但是借助于Hibernate,只需要简单地修改Hibernate配置文件即可。

这里的讨论假定您已经通过创建Hibernate映射文档,建立了一个关系数据库,并且拥有要映射的Java类。

有一个Hibernate“工具集”可在编译时使用,以支持不同的工作流。

例如,如果您已经拥有Java类和映射文档,Hibernate可以为您创建(或更新)必需的数据库表。

或者,仅仅从映射文档开始,Hibernate也能够生成数据类。

或者,它可以反向设计您的数据库和类,从而拟定映射文档。

还有一些用于Eclipse的alpha 插件,它们可以在IDE中提供智能的编辑支持以及对这些工具的图形访问。

如果您使用的是Hibernate 2环境,这些工具鲜有提供,但是存在可用的第三方工具。

使用Hibernate的场合既然Hibernate看起来如此灵活好用,为什么还要使用其他的工具呢?下面有一些场景,可以帮助您做出判断(或许通过提供一些比较和上下文,可以有助于鉴别非常适用Hibernate的场合)。

如果应用对于数据存储的需要十分简单——例如,您只想管理一组用户优先选择——您根本不需要数据库,更不用说一个优秀的对象-关系映射系统了(即使它也如Hibernate这般易于使用)!从Java 1.4开始,有一个标准的Java Preferences API可以很好地发挥这个作用。

(在ONJava文章中可以找到有关Preferences API的更多信息。

)对于熟悉使用关系数据库和了解如何执行完美的SQL查询与企业数据库交互的人来说,Hibernate似乎有些碍手碍脚,这就像带有动力和自动排挡的快艇车会使注重性能的赛车驾驶员不耐烦一样。

如果您属于这种人,如果您所在的项目团队拥有一个强大的DBA,或者有一些存储过程要处理,您可能想研究一下iBATIS。

Hibernate的创建者本身就把iBATIS当作是另一种有趣的选择。

我对它很有兴趣,因为我们曾为一个电子商务站点开发了一个类似的系统(其功能更为强大),而且从那时到现在,我们已经在其他环境中使用过它,尽管在发现Hibernate之后,在新项目中我们通常更喜欢使用Hibernate。

您可以认为,以SQL为中心的解决方案(比如iBATIS)是“反向的”对象/关系映射工具,而Hibernate是一个更为传统的ORM。

当然,还有其他的外部原因会导致采用另外的方法。

比如,在一个企业环境中,必须使用成熟的EJB架构(或者其他的一些非普通对象映射系统)。

可以为提供自己的数据存储工具的平台量身定做代码,比如Mac OS Xs Core Data。

使用的可能是像XML DTD这样的存储规范,而它根本不涉及关系数据库。

赞(0)
未经允许不得转载:优乐评测网 » 优酷服务器数量背后的技术挑战与解决方案 (优酷服务器数据异常)

优乐评测网 找服务器 更专业 更方便 更快捷!

专注IDC行业资源共享发布,给大家带来方便快捷的资源查找平台!

联系我们