`
zhang_xzhi_xjtu
  • 浏览: 536562 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

web service设计中的性能问题

    博客分类:
  • SOA
阅读更多
SOA架构已经成为很多系统的架构选择,在基于SOA架构的系统的编程开发中,可以从以下三个点来关注性能问题。

1 web service的调用。
众所周知,web service的调用中,网络上的时间消耗是一个比较大的部分。这里有两个可以注意的地方。soap消息的大小,标准的soap消息以是xml文档的形式传送的,而一个重型的web service的结果可以达到几十甚至更大,可以考虑用压缩后的形式传送比较大的soap消息。web service的调用频率,在一次业务中,有可能调用同一个系统多次web service,可以考虑设计一些重型的service来减少调用次数。

2 业务逻辑编程时的考量
一般来说,代码中的性能bug会比较少,但是,质量很差的代码一样有可能是性能杀手。对关键系统的代码一定要做性能测试,以便尽早发现低质量的代码。

3 数据库优化
数据库访问一直是性能杀手,对数据库的优化应该持续的测量与改进。加索引,分表,加缓存等等任何常见的优化措施都有可能对性能有一个大的提升。

4 对ws约定的理解
很多时候大家都忘了性能同样是ws的一个约定。只不过是隐含的。
一个ws在发布之前,应该有充分的性能测试。

性能的问题,永远都不会有一个最终的完美方案。其要点在于,设计,编程,配置,测试时要有性能的概念。要思考自己的每一个动作会对性能造成什么样的影响。性能的改进依赖于测试,任何改进都必须有性能测试报告来证明其是行之有效的,而不是yy出来的。性能的改进依赖于团队对于性能持久的关注,而不是有了问题才解决。
分享到:
评论
20 楼 zhang_xzhi_xjtu 2010-08-23  
miwucc 写道
请问楼主~如果一个ws服务遇到高并发访问的情况下该如何来保证他的稳定性呢?

一个ws服务的并发性应该在发布之前就测试好。这个也是ws的一个约定。
19 楼 miwucc 2010-08-23  
请问楼主~如果一个ws服务遇到高并发访问的情况下该如何来保证他的稳定性呢?
18 楼 neo_q 2010-06-30  
mp_juan 写道
todd_liu 写道
哪这么多的“唧唧歪歪”,直接socket,解决

直接支持,socket完全搞定的事,东扯西扯的

兄弟,WS是规范的、自描述的,如果是放在真正的互联网上,你难道额外放一个文档来描述你的socket字节意义?当然在有限客户端的情况下socket从某种意义上来说是可以作为解决方案的。
17 楼 mercyblitz 2010-06-30  
mp_juan 写道
todd_liu 写道
哪这么多的“唧唧歪歪”,直接socket,解决

直接支持,socket完全搞定的事,东扯西扯的


如果是Socket的实现,连接的两方都需要实现通讯协议,意义就不同了。 WS的意义就是标准化,通讯终端只需要实现SOAP。

现有的方案都提供了相应语言的实现。
16 楼 mp_juan 2010-06-29  
todd_liu 写道
哪这么多的“唧唧歪歪”,直接socket,解决

直接支持,socket完全搞定的事,东扯西扯的
15 楼 andot 2010-06-29  
mercyblitz 写道
Hprose在浏览器是怎么支持的?看了你的测试结果,貌似比PHPRPC还快!

Hprose提供了一种可以高效解析的格式,对于各种语言都非常友好。因此在浏览器中,可以通过js快速的完成构造和解析。Hprose是从PHPRPC发展而来的商业化版本,其性能是PHPRPC的10倍甚至更高,如果比PHPRPC还要慢的话,那商业化就没有意义了。
14 楼 todd_liu 2010-06-29  
哪这么多的“唧唧歪歪”,直接socket,解决
13 楼 mercyblitz 2010-06-29  
andot 写道
mercyblitz 写道
andot 写道
zhang_xzhi_xjtu 写道
berlou 写道
其实现在看webservice调用也可以考虑不用xml传输,用json或者其他更轻量级的格式貌似都可以。

json貌似减轻了一些性能负担,但是不如2进制来的爽快。


跨平台的话,二进制不见得会多爽。至少javascript里面没办法处理二进制。


javascript传递XML?速度更慢,要提供好的性能,最好不要使用解释型语言。


当然不是XML,XML在远程调用中是最不可取的东西。javascript作为ajax实现中必须的技术,在浏览器中具有不可替代性,所以想要不使用也是不现实的。最好的方式就是使用Hprose,不但可以高效的支持JavaScript,还可以实现跨域调用,另外还能跨语言,跨平台,对于各种常见语言都有非常好的支持,是其他技术所无法相比的。


Hprose在浏览器是怎么支持的?看了你的测试结果,貌似比PHPRPC还快!
12 楼 andot 2010-06-29  
mercyblitz 写道
andot 写道
zhang_xzhi_xjtu 写道
berlou 写道
其实现在看webservice调用也可以考虑不用xml传输,用json或者其他更轻量级的格式貌似都可以。

json貌似减轻了一些性能负担,但是不如2进制来的爽快。


跨平台的话,二进制不见得会多爽。至少javascript里面没办法处理二进制。


javascript传递XML?速度更慢,要提供好的性能,最好不要使用解释型语言。


当然不是XML,XML在远程调用中是最不可取的东西。javascript作为ajax实现中必须的技术,在浏览器中具有不可替代性,所以想要不使用也是不现实的。最好的方式就是使用Hprose,不但可以高效的支持JavaScript,还可以实现跨域调用,另外还能跨语言,跨平台,对于各种常见语言都有非常好的支持,是其他技术所无法相比的。
11 楼 mp_juan 2010-06-29  
传递XML怎么会有那么多的性能问题呢,难道非要用WS才能解决问题吗,socket都能解决问题吧,传递二进制可能在网络上面的消耗比较低,如果LZ没有比较妥善的二进制处理机制的话,建议还是使用xml报文传输数据
10 楼 shuiguozheng 2010-06-29  
mercyblitz 写道
如果要用WS的话,建议可以使用二进制协议的Hession或者PHPRPC,如果不用的话,用REST。

   我们都是用hessian 提供出去的!至于传输的数据过大也遇到过,当时调用方是。net,我们服务端这边返回的结果集就有9w多条,对方直接超时了。
9 楼 mercyblitz 2010-06-29  
andot 写道
zhang_xzhi_xjtu 写道
berlou 写道
其实现在看webservice调用也可以考虑不用xml传输,用json或者其他更轻量级的格式貌似都可以。

json貌似减轻了一些性能负担,但是不如2进制来的爽快。


跨平台的话,二进制不见得会多爽。至少javascript里面没办法处理二进制。


javascript传递XML?速度更慢,要提供好的性能,最好不要使用解释型语言。
8 楼 andot 2010-06-28  
zhang_xzhi_xjtu 写道
berlou 写道
其实现在看webservice调用也可以考虑不用xml传输,用json或者其他更轻量级的格式貌似都可以。

json貌似减轻了一些性能负担,但是不如2进制来的爽快。


跨平台的话,二进制不见得会多爽。至少javascript里面没办法处理二进制。
7 楼 zhang_xzhi_xjtu 2010-06-28  
berlou 写道
其实现在看webservice调用也可以考虑不用xml传输,用json或者其他更轻量级的格式貌似都可以。

json貌似减轻了一些性能负担,但是不如2进制来的爽快。
6 楼 zhang_xzhi_xjtu 2010-06-28  
恩,以前用xml是为了标准简单,真正关键时刻要性能的话,还是得用2进制。
5 楼 zhang_xzhi_xjtu 2010-06-28  
berlou 写道
这个有点问题, 如果是SOA架构,那必须面对的就是原有系统和异构系统。
如果你的SOAP被压缩为某一个格式,你怎么确定接收方会识别你的压缩格式,正确解压缩?改造所有的旧有系统?
不过对于新系统内部可以考虑用自己的实现去传输。


旧系统也可以考虑加一个薄层,这个薄层可以加在应用服务器上,也可以加在一个中心转发机器上。
4 楼 mercyblitz 2010-06-28  
如果要用WS的话,建议可以使用二进制协议的Hession或者PHPRPC,如果不用的话,用REST。
3 楼 andot 2010-06-28  
其实做异构系统集成,还可以不用webservice,有更好用的技术。
2 楼 berlou 2010-06-28  
其实现在看webservice调用也可以考虑不用xml传输,用json或者其他更轻量级的格式貌似都可以。
1 楼 berlou 2010-06-28  
这个有点问题, 如果是SOA架构,那必须面对的就是原有系统和异构系统。
如果你的SOAP被压缩为某一个格式,你怎么确定接收方会识别你的压缩格式,正确解压缩?改造所有的旧有系统?
不过对于新系统内部可以考虑用自己的实现去传输。

相关推荐

    使用SOA Test进行Web Service 的性能测试

    通过SOA Test进行Web Service性能测试,不仅可以评估服务的性能极限,还可以发现潜在的问题,优化服务设计,提升整体服务质量。在实际操作中,应根据具体业务需求调整测试参数,并结合监控工具进行深入分析,以获取...

    《实战Delphi6/Kylix2/SOAP/Web Service程序设计篇》(

    在《实战Delphi6/Kylix2/SOAP/Web Service程序设计篇》这本书中,作者李维精心编撰了一套系统而全面的教程,针对的是Delphi6和Kylix2这两个经典的Visual Basic derivative (VBD) 编程环境,尤其是针对SOAP(Simple ...

    Java web Service性能监视

    Java Web Service性能监视是针对基于Java的Web服务应用程序的性能监控过程,主要目的是确保系统高效稳定运行,并在问题出现时能够快速定位和解决。在大型企业如电信或移动级别公司的运营中,数据库管理员(DBA)的...

    实战Delphi6.Kylix2.SOAP.Web Service程序设计篇李维著

    《实战Delphi6.Kylix2.SOAP.Web Service程序设计篇》是由知名技术专家李维撰写的一本专业书籍,主要涵盖了使用Delphi6和Kylix2进行SOAP(简单对象访问协议)以及Web Service开发的核心技术和实践应用。这本书是...

    delphi 6/Kylik2 soap/Web Service程序设计篇下册+代码,非常好的教程。

    9. **最佳实践**: 教程可能还会介绍一些最佳实践,比如如何优化性能、处理错误、版本控制以及如何设计可扩展和可维护的Web Service。 通过学习这个教程,开发者将掌握在Delphi 6中创建和使用Web Service的全面技能...

    asp.net写的web service例子

    这个例子是为初学者设计的,旨在演示如何创建和使用Web Service,以及如何在ASP.NET环境中调用这些服务。 Web Service是一种通过HTTP协议进行通信的服务,允许不同系统之间交换数据。它基于SOAP(Simple Object ...

    PB11开发Web Service应用

    1. **错误处理**:PB11提供了一套完整的错误处理机制,允许开发者捕获和处理Web Service调用过程中可能出现的问题。 2. **数据映射**:PB11允许开发者定义数据类型与Web Service之间的映射,确保数据在不同系统间...

    Java完整的Web Service示例代码,学会做web service程序

    在Java中,现代的Web Service实现已经转向了Apache CXF、JAX-WS(Java API for XML Web Services)和Spring-WS等框架,它们提供了更强大的功能和更好的性能。然而,XFire作为早期的框架,对于理解Web Service的基本...

    《实战Delphi6/Kylix2/SOAP/Web Service程序设计篇》源码

    《实战Delphi6/Kylix2/SOAP/Web Service程序设计篇》是一本专注于使用Delphi 6和Kylix 2开发SOAP(简单对象访问协议)和Web Service应用的实战指南。这本书的源码提供了丰富的实例,帮助读者深入理解如何在这些编程...

    web service入门教程ppt

    2-WS--WebService-Developing Web Service with Visual Web Developer Express 2005.ppt详细讲解了如何使用微软的Visual Web Developer Express 2005工具创建Web服务。这个IDE提供了一个直观的环境,使得开发者能够...

    T100 Web Service 接口开发v1.5版.rar

    文件“T100 Web Service 开发v1.5版.pdf”可能是该接口开发文档的详细指南,其中可能包含了关于如何构建、测试和优化接口的步骤,以及错误处理和性能优化的策略。开发者可以从中获取到接口的API定义、调用方法、参数...

    开发高性能的Web Service应用

    总结,开发高性能的Web Service应用涉及服务设计、服务器配置、网络传输、数据库、并发处理等多个层面。理解这些关键技术并结合实际应用场景进行优化,是提升Web Service性能的关键。提供的20051222pm--开发高性能的...

    PB11开发Web Service应用介绍

    1、跨平台可移植性:Web Service基于SOAP协议,可以跨平台和语言进行调用,PB11开发的Web Service应用可以在不同的平台和语言环境中运行。 2、松耦合:Web Service的松耦合特性使得PB11开发的应用程序可以独立于...

    .net Web Service Studio

    - **开发阶段**:快速验证Web Service接口设计,确保其符合预期的功能和性能要求。 - **测试阶段**:模拟不同场景下的调用,检查服务的稳定性和容错性。 - **维护阶段**:当服务出现故障时,通过历史记录和预览功能...

    XML Web Service 开发XML Web Service 开发

    在本文中,我们将深入探讨XML Web服务的开发过程、核心概念以及相关的技术栈。 1. **XML Web服务的基本概念** - **SOAP(简单对象访问协议)**:SOAP是一种轻量级的消息协议,用于在分布式环境中交换结构化的和...

    调用Biztalk发布的web service演示

    在本场景中,“调用Biztalk发布的Web Service演示”意味着我们将探讨如何利用BizTalk Server来发布Web服务,并且如何在其他应用程序中消费这些服务。 BizTalk Server 2004是该系列的一个版本,它提供了强大的企业...

    利用PB11 开发 Web Service 应用

    3. 性能优化:合理设计数据结构,减少不必要的数据传输,提高Web Service性能。 通过掌握以上知识,开发者可以充分利用PB11的强大功能,高效地开发出稳定、可靠的Web Service应用程序。不断学习和实践,将有助于...

Global site tag (gtag.js) - Google Analytics