技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> 客户端应该去计算什么?

客户端应该去计算什么?

浏览:2111次  出处信息

    这是一个很有意思的话题:随着计算机技术的发展,客户端的计算能力越来越强。想要提高在服务器端运行的系统的负载能力,最直接有效的办法就是把计算任务尽可能交给客户端去做,并减少两者之间的交互;然而,另一方面,这样做又可能会带来一些其他问题,例如,客户端完成某些计算任务的时候可能会比较慢(因为在客户端可以用到的资源比较少,想要保持兼容性最好的办法就是只使用普适的Java Script子集),或者,作为安全系统的一个最基本的原则,任何来自外界的数据都是不应被信任的,等等。

    我们可以把数据根据一些规则来进行分类。一般来说数据会具有一些这样的属性:

传输方向。数据是服务器发给客户端的?还是反过来?或者,只是在客户端兜个圈?或者在两台服务器之间传递,只不过客户端是一个中间的载体(当然一般来说,这样做的系统的架构师应该去看看神经科的医生)? 敏感性。如果数据在传输过程中(从客户端到服务器,或反过来)被人截获,是否会产生安全威胁? 尺寸。这个主要是从经济方面考虑,不过多增加计算量的前提下,通常我们会希望传输的尺寸越小越好。

    这样一来,判断计算是否应在客户端进行就比较简单了:我们首先要看的第一个问题是:放在客户端进行,是否会增加服务器的计算量?例如,服务器是否需要再增加一些额外的步骤,才能够完成具体的操作?这些额外的步骤与原先的计算相比是否更少?通常来说,这个答案都是"是的",这样我们可以继续考察第二个问题。

    第二个问题是,这样做是否有助于减少通讯量?例如,对于用户输入信息的合法性检查,比如说,用户输入的内容是否可能导致SQL注入,或者,他是否在一个该输入数字的地方输入了其他字符?这些检查很显然必须在服务器端做(因为数据跨越了安全边界),但是,假如客户端也进行了这些检查的话,那么那些无效输入就可以在与服务器交互之前被拦住,从而减少通讯量并减少服务器的负担。

    第三个问题是,这样做是否会占用太多客户端资源?这个问题可能不太容易评估,一般来说,计算密集型的任务使用Java Script去做的效果有可能会不太好,有时,为了改善响应时间,有可能会希望这些操作由服务器去完成(由于可以采用任意的软件,因此服务器完成某些任务可能更高效)。简单的排序操作在客户端做有助于减少服务器负载,但如果很多客户端需要请求同样的内容,那么将排序结果在服务器端直接缓存起来就会更好一些,等等。

    

    以上仅代表个人经验供参考。

建议继续学习:

  1. 马化腾李彦宏马云首次对话:一小时掌声不断    (阅读:4440)
  2. 一个简单的基于PhoneGap的开源微博客户端    (阅读:3849)
  3. 做云这三年    (阅读:3498)
  4. 整合搜索,阿拉丁,云计算,以及框计算    (阅读:3304)
  5. 手机客户端适配性    (阅读:3300)
  6. 云计算的技术架构与实现分析    (阅读:3261)
  7. 云计算时代:运维人员会踩到哪些坑?    (阅读:3047)
  8. Amazon AWS云计算服务简介    (阅读:2853)
  9. 云计算中的结构化数据:Google GAE Datastore    (阅读:2576)
  10. 理解云计算    (阅读:2454)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1