实现服务端与客户端通讯的方法和装置制造方法

文档序号:7805128阅读:139来源:国知局
实现服务端与客户端通讯的方法和装置制造方法
【专利摘要】本发明提供一种实现服务端与客户端通讯的方法和装置,有助于在采用thrift进行SOA组件封装时提高效率。本发明的这种实现服务端与客户端通讯的方法,基于thrift协议和spring框架实现,该方法包括:服务端在所要发布应用服务的服务系统中进行服务注册;服务端根据与客户端约定的类型,保存服务类型接口、协议类型、以及传输类型的配置信息;服务端在启动应用服务时,获取所述配置信息并发布所述应用服务;在所述客户端启动的情况下,服务端接受所述客户端对所述服务系统的接口的调用。
【专利说明】实现服务端与客户端通讯的方法和装置
【技术领域】
[0001]本发明涉及计算机网络【技术领域】,特别地涉及一种实现服务端与客户端通讯的方法和装置。
【背景技术】
[0002]近年来,随着企业发展的需要,企业的业务需要变得更加敏捷,软件系统变得更有弹性,使企业能快速响应需求的变化。因此面向服务架构SOA(Service-OrientedArchitecture)思想被提出来,它是一种支持面向服务的架构样式,主要解决信息孤岛问题,使系统具有更大的弹性。目前流行的SOA组件也非常多,比较流行的有jboss组件webservice组件和rest组件,这些组件各有特色如jboss组件安全性更好,web service组件安全性也相对较好,rest组件形式通讯效率会更好一些。对于海量用户在大并发下SOA交互的情况下,这几个组件效率不够理想。
[0003]Thrift最早是Facebook的项目,后来Facebook提供给Apache作为开源项目,它主要实现跨语言通讯,使各系统用户不再为编程语言发愁,从而选择最拿手或项目规定的编程语言。采用thrift进行二次开发的原因是该组件在事件响应和传输通信效率上要好于其他组件。
[0004]Thrift的应用流程可参考图1,图1是根据现有技术的Thrift应用流程的示意图。如图1所示,将.thrift文件和编程语言编写的程序代码输入Thrift代码生成器,输出若干服务端和客户端代码文件,该代码文件在thrift应用框架(或框架库)以及在需要的情况下的其他第三方支持库的支撑下进行编译就可以得到服务端和客户端的可执行程序。这里的服务端和客户端通过互联网连接。
[0005]采用Thrift进行二次开发,封装SOA组件的实现的过程主要包括定义通讯服务接口、在服务端和客户端分别实现接口类、在业务实现类中注册服务,以及在传输协议上绑定端口、设置传输类型等步骤。
[0006]首先通过通信接口定义文件IDL即接口定义语言,主要是用来定义接口数据格式,通过该文件生成指定语言的接口类,在服务端和客户端分别实现该接口。
[0007]接下来在服务端业务实现类中需要先创建TPiOcessor处理器实现类,如TSimpleServer> TThreadedServer 和 TThreadPoolServer 类,再设置服务传输类型实现类TServerTransport,如 TBufferedTransport 和 TFramedTransport 类,再设置服务传输协议类 TProtocol,如 TBinaryProtocol 和 TCompactProtocol 类,最后启动 Server 类。
[0008]对于客户端来说,客户端根据服务端配置情况设置对应的Transport和TProtocol传输协议,再根据定义好的业务接口,编写业务实现类,再配置到client服务类中,启动服务类。
[0009]按上述的组件封装方式,开发者必须了解thrift协议,开发过程也较为繁琐,影响开发效率。
【发明内容】

[0010]有鉴于此,本发明提供一种实现服务端与客户端通讯的方法和装置,有助于在采用thrift进行SOA组件封装时提高效率。
[0011]为实现上述目的,根据本发明的一个方面,提供了一种实现服务端与客户端通讯的方法。
[0012]本发明的这种实现服务端与客户端通讯的方法,基于thrift协议和spring框架实现,该方法包括:服务端在所要发布应用服务的服务系统中进行服务注册;服务端根据与客户端约定的类型,保存服务类型接口、协议类型、以及传输类型的配置信息;服务端在启动应用服务时,获取所述配置信息并发布所述应用服务;在所述客户端启动的情况下,月艮务端接受所述客户端对所述服务系统的接口的调用。
[0013]可选地,所述进行服务注册的步骤包括保存以XML方式配置的配置信息;所述服务类型接口、协议类型、以及传输类型的配置信息包括以XML方式配置的配置信息。
[0014]可选地,所述进行服务注册的步骤包括保存以在业务实现类中添加@ThriftService注解的方式配置的配置信息;所述服务类型接口、协议类型、以及传输类型的配置信息包括以在业务实现类中添加OThriftService注解的方式配置的配置信息。
[0015]可选地,在所述服务端启动应用服务前,还包括:保存报警方式配置信息;在所述服务端启动应用服务后,还包括:服务端按预设的间隔时间调用所述应用服务,在该应用服务调用失败的情况下根据所述报警方式配置信息输出报警信息。
[0016]根据本发明的另一方面,提供了另一种实现服务端与客户端通讯的方法。
[0017]本发明的这种实现服务端与客户端通讯的方法基于thrift协议和spring框架实现,该方法包括:客户端在所要调用的服务系统中进行注册;客户端根据与服务端约定的类型,保存服务类型接口、协议类型、以及传输类型的配置信息;客户端在启动服务时,获取所述配置信息;然后根据所述配置信息调用所述服务系统的接口。
[0018]可选地,所述进行注册的步骤包括保存以XML方式配置的配置信息;所述服务类型接口、协议类型、以及传输类型的配置信息包括以XML方式配置的配置信息。
[0019]可选地,所述进行注册的步骤包括保存以在业务实现类中添加OThriftClient注解的方式配置的配置信息;所述服务类型接口、协议类型、以及传输类型的配置信息包括以在业务实现类中添加OThriftClient注解的方式配置的配置信息。
[0020]根据本发明的又一方面,提供了 一种实现服务端与客户端通讯的装置。
[0021]本发明的这种实现服务端与客户端通讯的装置基于thrift协议和spring框架实现,其中包括thrift组件,该装置还包括:XML解析模块,用于解析以XML方式配置的配置信息;注解解析模块,用于解析以在业务实现类中添加OThriftService注解的方式配置的配置信息;服务注册解析模块,用于解析以XML方式配置的配置信息以及以在业务实现类中添加OThriftService注解的方式配置的配置信息。
[0022]根据本发明的又一方面,提供了另一种实现服务端与客户端通讯的装置。
[0023]本发明的这种实现服务端与客户端通讯的装置基于thrift协议和spring框架实现,其中包括thrift组件,该装置还包括:XML解析模块,用于解析以XML方式配置的配置信息;注解解析模块,用于解析以在业务实现类中添加OThriftClient注解的方式配置的配置信息;服务注册解析模块,用于解析以XML方式配置的配置信息以及以在业务实现类中添加OThriftClient注解的方式配置的配置信息。
[0024]根据本发明的技术方案,通过采用spring框架,在服务端和客户端进行相应的配置;在封装的SOA组件中,以thrift模块为基础添加用于解析上述配置的模块,使开发者不必关心thrift组件中的传输、协议、组件模块的原理构成和相互之间的关系,提高了开发效率。并且,根据本实施例的方案,通过设置多组配置文件,能够增加对统一接口不同服务的版本和组的配置,使统一接口可以由多个服务使用。另外可以通过对报警方式的配置,实现在服务的后续扩展中增加对服务稳定性和存活性进行管理和监控。
【专利附图】

【附图说明】
[0025]附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0026]图1是根据现有技术的Thrift应用流程的示意图;
[0027]图2是根据本发明实施例的设置在服务端的SOA组件的基本结构的示意图;
[0028]图3是根据本发明实施例的设置在客户端的SOA组件的基本结构的示意图;
[0029]图4是根据本发明实施例的实现服务端与客户端通讯的方法的主要步骤的示意图。
【具体实施方式】
[0030]以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识至IJ,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0031]本实施例中利用spring框架的AOP和IOC功能,可以针对thrift框架进行XML(可扩展标记语言)方式的各项配置,还可以在spring中使用的thrift注解来让thrift组件配置更加灵活。Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,并且是开源框架,它由Rod Johnson创建。本实施例中的SOA组件的基本结构如图2和图3所示。图2是根据本发明实施例的设置在服务端的SOA组件的基本结构的示意图。图3是根据本发明实施例的设置在客户端的SOA组件的基本结构的示意图。
[0032]如图2所示,在已开发完成的thrift组件21的基础上,SOA组件20还包括XML解析模块22、注解解析模块23、以及服务注册解析模块24。XML解析模块22用于解析以XML方式配置的配置信息;注解解析模块23用于解析以在业务实现类中添加OThriftService注解的方式配置的配置信息;服务注册解析模块24用于解析服务端注册模块保存的以XML方式配置的配置信息以及以在业务实现类中添加OThriftService注解的方式配置的配置信息。
[0033]如图3所示,在已开发完成的thrift组件31的基础上,SOA组件30还包括XML解析模块32、注解解析模块33、以及服务注册解析模块34。XML解析模块32用于解析以XML方式配置的配置信息;注解解析模块33用于解析以在业务实现类中添加OThriftClient注解的方式配置的配置信息;服务注册解析模块34用于解析服务端注册模块保存的以XML方式配置的配置信息以及以在业务实现类中添加OThriftClient注解的方式配置的配置信肩、O[0034]本实施例的SOA组件需要分别在服务端和客户端进行配置,可作为jar包来实现。以下结合图4对本发明实施例的实现服务端与客户端通讯的方法做出说明,图4是根据本发明实施例的实现服务端与客户端通讯的方法的主要步骤的示意图。其中的步骤S411至步骤S422是服务端与客户端进行配置的步骤。
[0035]步骤S411:服务端在所要发布应用服务的服务系统中进行服务注册。具体可以采用XML方式配置,也可以采用在业务实现类中添加OThriftService注解的方式来配置。
[0036]步骤S412:服务端根据与客户端约定的类型,保存服务类型接口、协议类型、以及传输类型的配置信息。类似地,这些配置可以采用XML方式配置,也可以采用在业务实现类中添加OThriftService注解的方式来配置。这里的约定的类型由开发人员预先确定。月艮务端在启动应用服务时,进入步骤S413。
[0037]步骤S413:服务端获取配置信息并发布应用服务。服务端在获取配置信息时,使用SOA组件解析上述步骤S411、S412中的配置。
[0038]步骤S421:客户端在所要调用的服务系统中进行注册。具体可以采用XML方式配置,也可以采用在业务实现类中添加OThriftClient注解的方式来配置。
[0039]步骤S422:客户端根据与服务端约定的类型,保存服务类型接口、协议类型、以及传输类型的配置信息。类似地,这些配置可以采用XML方式配置,也可以采用在业务实现类中添加OThriftClient注解的方式来配置。客户端在启动应用服务时,进入步骤S423。
[0040]步骤S423:客户端调用服务系统的接口。
[0041]步骤S43:客户端与服务端进行交互通讯。
[0042]以下再对本实施例中的服务端与客户端的配置举例说明。
[0043]利用spring框架的AOP和IOC功能,可以针对thrift框架的传输方式类进行XML 方式配置,配置传输方式如 TBufferedTransport、TFramedTransport、TMemoryBuffer等方式。具体可以采用〈property〉方式配置到实现业务接口类中。配置传输协议例如TBinaryProtocol、TCompactProtocol> TJSONProtocoal> TSImpleJSONProtocoal 等。对于业务类可以通过属性适配的方式配置〈property〉来配置传输协议。对于传输服务模型如TSimpleServer > TThreadPoo I Server > TNonblockingServer 类,可以通过〈property〉来配置到业务类上作为属性添加。通过开发适配器类并在XML文件中配置,可以在业务类配置属性时以适配的方式配置,在具体类中开发时则不用关心具体的方式和类型。并且可以在XML配置服务模型时,自定义配置服务版本,所属的组、接口等具体参数。
[0044]服务端配置举例如下:
[0045]<thiftservice id = 〃mythift〃name = 〃thift〃port = 〃4260〃/>
[0046]〈property name =,,interface,,value =,,com.books, service,,>〈/property>
[0047]〈property name =,,transport,,value =,,TBufferedTransport,,>〈/property>
[0048]〈property name =,,protcol,,value =,,TCompactProtocol,,>〈/property>
[0049]〈property name =,,server,,value =,,TSimpleServer,,>〈/property>
[0050]</thiftservice>
[0051]客户端配置举例如下:
[0052]〈thiftclient:protocol id = 〃mythift〃name = 〃thift〃port = 〃4260〃/>
[0053]〈property name =,,interface,,value =,,com.books, service,,>〈/property>[0054]〈property name =,,transport,,value =,,TBufferedTransport,,>〈/property>
[0055]〈property name =,,protcol,,value =,,TCompactProtocol,,>〈/property>
[0056]〈property name =,,server,,value =,,TSimpleServer,,>〈/property>
[0057]</thiftclient>
[0058]通过开发在spring中使用的thrift注解来让thrift组件配置更加灵活,方便开发人员对thrift组件的使用。具体配置方式为在业务实现类中配置OThriftService注解,即使用了配置服务类,在OThriftService注解中配置value参数即为配置服务模型类,配置protocol传输协议模式如TJSONProtocoal,配置transport参数即配置传输方式如TFramedTransport,同时可以配置版本号参数、组参数和超时参数。
[0059]服务端配置举例如下:
[0060]OThriftService (value = 〃getBooksServer〃,server=,,TThreadPoolServer,,,protocol = "TJSONProtocoal", transport = "TFramedTransport〃,group = 〃1.0〃,version = 〃1.0〃,timeout = 3000)
[0061]客户端配置举例如下:
[0062]OThriftClient (value = ^getBooksServer ^ , server=,,TThreadPoo I Serve r,,,protoco I = "TJSONProtocoal 〃,transport =〃TFramedTransport〃,group = 〃1.0〃,versio n = 〃1.0〃,timeout = 3000)
[0063]本实施例中,还可以在服务端配置报警方式,例如采用XML方式配置如下:
[0064]<thiftservice id = 〃mythift〃name = 〃thift〃port = 〃4260〃/>
[0065]〈property name =,,interface,,value =,,com.books, service,,>〈/property>
[0066]〈property name =,,transport,,value =,,TBufferedTransport,,>〈/property>
[0067]〈property name =,,protcol,,value =,,TCompactProtocol,,>〈/property>
[0068]〈property name =,,server,,value =,,TSimpleServer,,>〈/property>
[0069]〈property name = ”alarm”value = ”**2**/,,telephone =,,***,,mail =,,***,,>〈/property)
[0070]</thiftservice>
[0071]本实施例中的这种做法的目的是利用spring框架下的SOA组件对应用服务的接口的稳定性进行监控和管理。在上述的配置信息中,通过“tel印hone =”***”mail= ”***””配置了报警时需要呼叫的电话号码和发送邮件的地址。服务端可以间隔地调用应用服务以检查该服务的存活性。当调用失败时,按照上述报警方式的配置,可以呼叫配置的电话号码或者向邮件地址发送邮件。
[0072]根据本发明实施例的技术方案,通过采用spring框架,在服务端和客户端进行相应的配置;在封装的SOA组件中,以thrift模块为基础添加用于解析上述配置的模块,使开发者不必关心thrift组件中的传输、协议、组件模块的原理构成和相互之间的关系,提高了开发效率。并且,根据本实施例的方案,通过设置多组配置文件,能够增加对统一接口不同服务的版本和组的配置,使统一接口可以由多个服务使用。另外可以通过对报警方式的配置,实现在服务的后续扩展中增加对服务稳定性和存活性进行管理和监控。
[0073]以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本发明的方法和设备的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
[0074]因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来开发出的任何存储介质。
[0075]还需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
[0076]上述【具体实施方式】,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
【权利要求】
1.一种实现服务端与客户端通讯的方法,该方法基于thrift协议和spring框架实现,其特征在于,该方法包括: 服务端在所要发布应用服务的服务系统中进行服务注册; 服务端根据与客户端约定的类型,保存服务类型接口、协议类型、以及传输类型的配置信息; 服务端在启动应用服务时,获取所述配置信息并发布所述应用服务; 在所述客户端启动的情 况下,服务端接受所述客户端对所述服务系统的接口的调用。
2.根据权利要求1所述的方法,其特征在于, 所述进行服务注册的步骤包括保存以XML方式配置的配置信息; 所述服务类型接口、协议类型、以及传输类型的配置信息包括以XML方式配置的配置信息。
3.根据权利要求1所述的方法,其特征在于, 所述进行服务注册的步骤包括保存以在业务实现类中添加OThriftService注解的方式配置的配置信息; 所述服务类型接口、协议类型、以及传输类型的配置信息包括以在业务实现类中添加OThriftService注解的方式配置的配置信息。
4.根据权利要求1,2或3所述的方法,其特征在于, 在所述服务端启动应用服务前,还包括:保存报警方式配置信息; 在所述服务端启动应用服务后,还包括:服务端按预设的间隔时间调用所述应用服务,在该应用服务调用失败的情况下根据所述报警方式配置信息输出报警信息。
5.一种实现服务端与客户端通讯的方法,该方法基于thrift协议和spring框架实现,其特征在于,该方法包括: 客户端在所要调用的服务系统中进行注册; 客户端根据与服务端约定的类型,保存服务类型接口、协议类型、以及传输类型的配置信息; 客户端在启动服务时,获取所述配置信息;然后根据所述配置信息调用所述服务系统的接口。
6.根据权利要求5所述的方法,其特征在于, 所述进行注册的步骤包括保存以XML方式配置的配置信息; 所述服务类型接口、协议类型、以及传输类型的配置信息包括以XML方式配置的配置信息。
7.根据权利要求5所述的方法,其特征在于, 所述进行注册的步骤包括保存以在业务实现类中添加OThriftClient注解的方式配置的配置信息; 所述服务类型接口、协议类型、以及传输类型的配置信息包括以在业务实现类中添加OThriftClient注解的方式配置的配置信息。
8.一种实现服务端与客户端通讯的装置,该装置基于thrift协议和spring框架实现,其中包括thrift组件,其特征在于,该装置还包括: XML解析模块,用于解析以XML方式配置的配置信息;注解解析模块,用于解析以在业务实现类中添加OThriftService注解的方式配置的配置信息; 服务注册解析模块,用于解析以XML方式配置的配置信息以及以在业务实现类中添加OThriftService注解的方式配置的配置信息。
9.一种实现服务端与客户端通讯的装置,该装置基于thrift协议和spring框架实现,其中包括thrift组件,其特征在于,该装置还包括: XML解析模块,用于解析以XML方式配置的配置信息; 注解解析模块,用于解析以在业务实现类中添加OThriftClient注解的方式配置的配置信息; 服务注册解析模块,用于解析以XML方式配置的配置信息以及以在业务实现类中添加OThriftClient注解 的方式配置的配置信息。
【文档编号】H04L29/08GK104009994SQ201410238129
【公开日】2014年8月27日 申请日期:2014年5月30日 优先权日:2014年5月30日
【发明者】吕波 申请人:北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1