《实现服务端与客户端通讯的方法和装置.pdf》由会员分享,可在线阅读,更多相关《实现服务端与客户端通讯的方法和装置.pdf(11页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104009994 A (43)申请公布日 2014.08.27 CN 104009994 A (21)申请号 201410238129.6 (22)申请日 2014.05.30 H04L 29/06(2006.01) H04L 29/08(2006.01) H04L 29/10(2006.01) (71)申请人 北京京东尚科信息技术有限公司 地址 100195 北京市海淀区杏石口路 65 号 西杉创意园四区11C楼东段1-4层西段 1-4 层 申请人 北京京东世纪贸易有限公司 (72)发明人 吕波 (74)专利代理机构 中原信达知识产权代理有限 责任公司 11219。
2、 代理人 刘光明 陆锦华 (54) 发明名称 实现服务端与客户端通讯的方法和装置 (57) 摘要 本发明提供一种实现服务端与客户端通讯的 方法和装置, 有助于在采用 thrift 进行 SOA 组件 封装时提高效率。本发明的这种实现服务端与客 户端通讯的方法, 基于thrift协议和spring框架 实现, 该方法包括 : 服务端在所要发布应用服务 的服务系统中进行服务注册 ; 服务端根据与客户 端约定的类型, 保存服务类型接口、 协议类型、 以 及传输类型的配置信息 ; 服务端在启动应用服务 时, 获取所述配置信息并发布所述应用服务 ; 在 所述客户端启动的情况下, 服务端接受所述客户 端对。
3、所述服务系统的接口的调用。 (51)Int.Cl. 权利要求书 2 页 说明书 6 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书6页 附图2页 (10)申请公布号 CN 104009994 A CN 104009994 A 1/2 页 2 1.一种实现服务端与客户端通讯的方法, 该方法基于thrift协议和spring框架实现, 其特征在于, 该方法包括 : 服务端在所要发布应用服务的服务系统中进行服务注册 ; 服务端根据与客户端约定的类型, 保存服务类型接口、 协议类型、 以及传输类型的配置 信息 ; 服务端在启动应用服务时, 获取所述。
4、配置信息并发布所述应用服务 ; 在所述客户端启动的情况下, 服务端接受所述客户端对所述服务系统的接口的调用。 2. 根据权利要求 1 所述的方法, 其特征在于, 所述进行服务注册的步骤包括保存以 XML 方式配置的配置信息 ; 所述服务类型接口、 协议类型、 以及传输类型的配置信息包括以 XML 方式配置的配置 信息。 3. 根据权利要求 1 所述的方法, 其特征在于, 所述进行服务注册的步骤包括保存以在业务实现类中添加 ThriftService 注解的方 式配置的配置信息 ; 所述服务类型接口、 协议类型、 以及传输类型的配置信息包括以在业务实现类中添加 ThriftService 注解的。
5、方式配置的配置信息。 4. 根据权利要求 1, 2 或 3 所述的方法, 其特征在于, 在所述服务端启动应用服务前, 还包括 : 保存报警方式配置信息 ; 在所述服务端启动应用服务后, 还包括 : 服务端按预设的间隔时间调用所述应用服务, 在该应用服务调用失败的情况下根据所述报警方式配置信息输出报警信息。 5.一种实现服务端与客户端通讯的方法, 该方法基于thrift协议和spring框架实现, 其特征在于, 该方法包括 : 客户端在所要调用的服务系统中进行注册 ; 客户端根据与服务端约定的类型, 保存服务类型接口、 协议类型、 以及传输类型的配置 信息 ; 客户端在启动服务时, 获取所述配置。
6、信息 ; 然后根据所述配置信息调用所述服务系统 的接口。 6. 根据权利要求 5 所述的方法, 其特征在于, 所述进行注册的步骤包括保存以 XML 方式配置的配置信息 ; 所述服务类型接口、 协议类型、 以及传输类型的配置信息包括以 XML 方式配置的配置 信息。 7. 根据权利要求 5 所述的方法, 其特征在于, 所述进行注册的步骤包括保存以在业务实现类中添加 ThriftClient 注解的方式配 置的配置信息 ; 所述服务类型接口、 协议类型、 以及传输类型的配置信息包括以在业务实现类中添加 ThriftClient 注解的方式配置的配置信息。 8.一种实现服务端与客户端通讯的装置, 该。
7、装置基于thrift协议和spring框架实现, 其中包括 thrift 组件, 其特征在于, 该装置还包括 : XML 解析模块, 用于解析以 XML 方式配置的配置信息 ; 权 利 要 求 书 CN 104009994 A 2 2/2 页 3 注解解析模块, 用于解析以在业务实现类中添加 ThriftService 注解的方式配置的 配置信息 ; 服务注册解析模块, 用于解析以 XML 方式配置的配置信息以及以在业务实现类中添加 ThriftService 注解的方式配置的配置信息。 9.一种实现服务端与客户端通讯的装置, 该装置基于thrift协议和spring框架实现, 其中包括 th。
8、rift 组件, 其特征在于, 该装置还包括 : XML 解析模块, 用于解析以 XML 方式配置的配置信息 ; 注解解析模块, 用于解析以在业务实现类中添加 ThriftClient 注解的方式配置的配 置信息 ; 服务注册解析模块, 用于解析以 XML 方式配置的配置信息以及以在业务实现类中添加 ThriftClient 注解的方式配置的配置信息。 权 利 要 求 书 CN 104009994 A 3 1/6 页 4 实现服务端与客户端通讯的方法和装置 技术领域 0001 本发明涉及计算机网络技术领域, 特别地涉及一种实现服务端与客户端通讯的方 法和装置。 背景技术 0002 近年来, 随。
9、着企业发展的需要, 企业的业务需要变得更加敏捷, 软件系统变得 更有弹性, 使企业能快速响应需求的变化。因此面向服务架构 SOA(Service-Oriented Architecture) 思想被提出来, 它是一种支持面向服务的架构样式, 主要解决信息孤岛问 题, 使系统具有更大的弹性。目前流行的 SOA 组件也非常多, 比较流行的有 jboss 组件 web service 组件和 rest 组件, 这些组件各有特色如 jboss 组件安全性更好, web service 组件 安全性也相对较好, rest 组件形式通讯效率会更好一些。对于海量用户在大并发下 SOA 交 互的情况下, 这几。
10、个组件效率不够理想。 0003 Thrift 最早是 Facebook 的项目, 后来 Facebook 提供给 Apache 作为开源项目, 它 主要实现跨语言通讯, 使各系统用户不再为编程语言发愁, 从而选择最拿手或项目规定的 编程语言。采用 thrift 进行二次开发的原因是该组件在事件响应和传输通信效率上要好 于其他组件。 0004 Thrift 的应用流程可参考图 1, 图 1 是根据现有技术的 Thrift 应用流程的示意 图。 如图1所示, 将.thrift文件和编程语言编写的程序代码输入Thrift代码生成器, 输出 若干服务端和客户端代码文件, 该代码文件在 thrift 应。
11、用框架 ( 或框架库 ) 以及在需要的 情况下的其他第三方支持库的支撑下进行编译就可以得到服务端和客户端的可执行程序。 这里的服务端和客户端通过互联网连接。 0005 采用Thrift进行二次开发, 封装SOA组件的实现的过程主要包括定义通讯服务接 口、 在服务端和客户端分别实现接口类、 在业务实现类中注册服务, 以及在传输协议上绑定 端口、 设置传输类型等步骤。 0006 首先通过通信接口定义文件 IDL 即接口定义语言, 主要是用来定义接口数据格 式, 通过该文件生成指定语言的接口类, 在服务端和客户端分别实现该接口。 0007 接下来在服务端业务实现类中需要先创建 TProcessor 。
12、处理器实现类, 如 TSimpleServer、 TThreadedServer 和 TThreadPoolServer 类, 再设置服务传输类型实现类 TServerTransport,如TBufferedTransport和TFramedTransport类, 再设置服务传输协议 类 TProtocol, 如 TBinaryProtocol 和 TCompactProtocol 类, 最后启动 Server 类。 0008 对于客户端来说, 客户端根据服务端配置情况设置对应的 Transport 和 TProtocol 传输协议, 再根据定义好的业务接口, 编写业务实现类, 再配置到 cl。
13、ient 服务类 中, 启动服务类。 0009 按上述的组件封装方式, 开发者必须了解 thrift 协议, 开发过程也较为繁琐, 影 响开发效率。 说 明 书 CN 104009994 A 4 2/6 页 5 发明内容 0010 有鉴于此, 本发明提供一种实现服务端与客户端通讯的方法和装置, 有助于在采 用 thrift 进行 SOA 组件封装时提高效率。 0011 为实现上述目的, 根据本发明的一个方面, 提供了一种实现服务端与客户端通讯 的方法。 0012 本发明的这种实现服务端与客户端通讯的方法, 基于 thrift 协议和 spring 框架 实现, 该方法包括 : 服务端在所要发布。
14、应用服务的服务系统中进行服务注册 ; 服务端根据 与客户端约定的类型, 保存服务类型接口、 协议类型、 以及传输类型的配置信息 ; 服务端在 启动应用服务时, 获取所述配置信息并发布所述应用服务 ; 在所述客户端启动的情况下, 服 务端接受所述客户端对所述服务系统的接口的调用。 0013 可选地, 所述进行服务注册的步骤包括保存以 XML 方式配置的配置信息 ; 所述服 务类型接口、 协议类型、 以及传输类型的配置信息包括以 XML 方式配置的配置信息。 0014 可 选 地, 所 述 进 行 服 务 注 册 的 步 骤 包 括 保 存 以 在 业 务 实 现 类 中 添 加 ThriftSe。
15、rvice 注解的方式配置的配置信息 ; 所述服务类型接口、 协议类型、 以及传输类型 的配置信息包括以在业务实现类中添加 ThriftService 注解的方式配置的配置信息。 0015 可选地, 在所述服务端启动应用服务前, 还包括 : 保存报警方式配置信息 ; 在所述 服务端启动应用服务后, 还包括 : 服务端按预设的间隔时间调用所述应用服务, 在该应用服 务调用失败的情况下根据所述报警方式配置信息输出报警信息。 0016 根据本发明的另一方面, 提供了另一种实现服务端与客户端通讯的方法。 0017 本发明的这种实现服务端与客户端通讯的方法基于thrift协议和spring框架实 现, 。
16、该方法包括 : 客户端在所要调用的服务系统中进行注册 ; 客户端根据与服务端约定的 类型, 保存服务类型接口、 协议类型、 以及传输类型的配置信息 ; 客户端在启动服务时, 获取 所述配置信息 ; 然后根据所述配置信息调用所述服务系统的接口。 0018 可选地, 所述进行注册的步骤包括保存以 XML 方式配置的配置信息 ; 所述服务类 型接口、 协议类型、 以及传输类型的配置信息包括以 XML 方式配置的配置信息。 0019 可选地, 所述进行注册的步骤包括保存以在业务实现类中添加 ThriftClient 注 解的方式配置的配置信息 ; 所述服务类型接口、 协议类型、 以及传输类型的配置信息。
17、包括以 在业务实现类中添加 ThriftClient 注解的方式配置的配置信息。 0020 根据本发明的又一方面, 提供了一种实现服务端与客户端通讯的装置。 0021 本发明的这种实现服务端与客户端通讯的装置基于thrift协议和spring框架实 现, 其中包括 thrift 组件, 该装置还包括 : XML 解析模块, 用于解析以 XML 方式配置的配置 信息 ; 注解解析模块, 用于解析以在业务实现类中添加 ThriftService 注解的方式配置的 配置信息 ; 服务注册解析模块, 用于解析以 XML 方式配置的配置信息以及以在业务实现类 中添加 ThriftService 注解的方。
18、式配置的配置信息。 0022 根据本发明的又一方面, 提供了另一种实现服务端与客户端通讯的装置。 0023 本发明的这种实现服务端与客户端通讯的装置基于thrift协议和spring框架实 现, 其中包括 thrift 组件, 该装置还包括 : XML 解析模块, 用于解析以 XML 方式配置的配置 信息 ; 注解解析模块, 用于解析以在业务实现类中添加 ThriftClient 注解的方式配置的 配置信息 ; 服务注册解析模块, 用于解析以 XML 方式配置的配置信息以及以在业务实现类 说 明 书 CN 104009994 A 5 3/6 页 6 中添加 ThriftClient 注解的方式。
19、配置的配置信息。 0024 根据本发明的技术方案, 通过采用 spring 框架, 在服务端和客户端进行相应的配 置 ; 在封装的SOA组件中, 以thrift模块为基础添加用于解析上述配置的模块, 使开发者不 必关心 thrift 组件中的传输、 协议、 组件模块的原理构成和相互之间的关系, 提高了开发 效率。并且, 根据本实施例的方案, 通过设置多组配置文件, 能够增加对统一接口不同服务 的版本和组的配置, 使统一接口可以由多个服务使用。 另外可以通过对报警方式的配置, 实 现在服务的后续扩展中增加对服务稳定性和存活性进行管理和监控。 附图说明 0025 附图用于更好地理解本发明, 不构成。
20、对本发明的不当限定。其中 : 0026 图 1 是根据现有技术的 Thrift 应用流程的示意图 ; 0027 图 2 是根据本发明实施例的设置在服务端的 SOA 组件的基本结构的示意图 ; 0028 图 3 是根据本发明实施例的设置在客户端的 SOA 组件的基本结构的示意图 ; 0029 图 4 是根据本发明实施例的实现服务端与客户端通讯的方法的主要步骤的示意 图。 具体实施方式 0030 以下结合附图对本发明的示范性实施例做出说明, 其中包括本发明实施例的各种 细节以助于理解, 应当将它们认为仅仅是示范性的。因此, 本领域普通技术人员应当认识 到, 可以对这里描述的实施例做出各种改变和修改。
21、, 而不会背离本发明的范围和精神。同 样, 为了清楚和简明, 以下的描述中省略了对公知功能和结构的描述。 0031 本实施例中利用 spring 框架的 AOP 和 IOC 功能, 可以针对 thrift 框架进行 XML( 可扩展标记语言 ) 方式的各项配置, 还可以在 spring 中使用的 thrift 注解来让 thrift 组件配置更加灵活。Spring 是一个轻量级的控制反转 (IOC) 和面向切面 (AOP) 的 容器框架, 并且是开源框架, 它由 Rod Johnson 创建。本实施例中的 SOA 组件的基本结构如 图 2 和图 3 所示。图 2 是根据本发明实施例的设置在服务。
22、端的 SOA 组件的基本结构的示意 图。图 3 是根据本发明实施例的设置在客户端的 SOA 组件的基本结构的示意图。 0032 如图 2 所示, 在已开发完成的 thrift 组件 21 的基础上, SOA 组件 20 还包括 XML 解 析模块 22、 注解解析模块 23、 以及服务注册解析模块 24。XML 解析模块 22 用于解析以 XML 方式配置的配置信息 ; 注解解析模块 23 用于解析以在业务实现类中添加 ThriftService 注解的方式配置的配置信息 ; 服务注册解析模块 24 用于解析服务端注册模块保存的以 XML 方式配置的配置信息以及以在业务实现类中添加 Thrif。
23、tService 注解的方式配置的配置 信息。 0033 如图 3 所示, 在已开发完成的 thrift 组件 31 的基础上, SOA 组件 30 还包括 XML 解 析模块 32、 注解解析模块 33、 以及服务注册解析模块 34。XML 解析模块 32 用于解析以 XML 方式配置的配置信息 ; 注解解析模块33用于解析以在业务实现类中添加ThriftClient注 解的方式配置的配置信息 ; 服务注册解析模块34用于解析服务端注册模块保存的以XML方 式配置的配置信息以及以在业务实现类中添加 ThriftClient 注解的方式配置的配置信 息。 说 明 书 CN 104009994 。
24、A 6 4/6 页 7 0034 本实施例的SOA组件需要分别在服务端和客户端进行配置, 可作为jar包来实现。 以下结合图 4 对本发明实施例的实现服务端与客户端通讯的方法做出说明, 图 4 是根据本 发明实施例的实现服务端与客户端通讯的方法的主要步骤的示意图。其中的步骤 S411 至 步骤 S422 是服务端与客户端进行配置的步骤。 0035 步骤 S411 : 服务端在所要发布应用服务的服务系统中进行服务注册。具体可以采 用 XML 方式配置, 也可以采用在业务实现类中添加 ThriftService 注解的方式来配置。 0036 步骤 S412 : 服务端根据与客户端约定的类型, 保存。
25、服务类型接口、 协议类型、 以及 传输类型的配置信息。类似地, 这些配置可以采用 XML 方式配置, 也可以采用在业务实现类 中添加 ThriftService 注解的方式来配置。这里的约定的类型由开发人员预先确定。服 务端在启动应用服务时, 进入步骤 S413。 0037 步骤 S413 : 服务端获取配置信息并发布应用服务。服务端在获取配置信息时, 使 用 SOA 组件解析上述步骤 S411、 S412 中的配置。 0038 步骤 S421 : 客户端在所要调用的服务系统中进行注册。具体可以采用 XML 方式配 置, 也可以采用在业务实现类中添加 ThriftClient 注解的方式来配置。
26、。 0039 步骤 S422 : 客户端根据与服务端约定的类型, 保存服务类型接口、 协议类型、 以及 传输类型的配置信息。类似地, 这些配置可以采用 XML 方式配置, 也可以采用在业务实现类 中添加 ThriftClient 注解的方式来配置。客户端在启动应用服务时, 进入步骤 S423。 0040 步骤 S423 : 客户端调用服务系统的接口。 0041 步骤 S43 : 客户端与服务端进行交互通讯。 0042 以下再对本实施例中的服务端与客户端的配置举例说明。 0043 利用 spring 框架的 AOP 和 IOC 功能, 可以针对 thrift 框架的传输方式类进行 XML 方式配。
27、置, 配置传输方式如 TBufferedTransport、 TFramedTransport、 TMemoryBuffer 等方式。具体可以采用 方式配置到实现业务接口类中。配置传输协议例如 TBinaryProtocol、 TCompactProtocol、 TJSONProtocoal、 TSImpleJSONProtocoal 等。对于 业务类可以通过属性适配的方式配置 来配置传输协议。对于传输服务模型如 TSimpleServer、 TThreadPoolServer、 TNonblockingServer 类, 可以通过 来配 置到业务类上作为属性添加。通过开发适配器类并在 XML。
28、 文件中配置, 可以在业务类配置 属性时以适配的方式配置, 在具体类中开发时则不用关心具体的方式和类型。并且可以在 XML 配置服务模型时, 自定义配置服务版本, 所属的组、 接口等具体参数。 0044 服务端配置举例如下 : 0045 0046 0047 0048 0049 0050 0051 客户端配置举例如下 : 0052 0053 说 明 书 CN 104009994 A 7 5/6 页 8 0054 0055 0056 0057 0058 通过开发在 spring 中使用的 thrift 注解来让 thrift 组件配置更加灵活, 方便开 发人员对 thrift 组件的使用。具体配置。
29、方式为在业务实现类中配置 ThriftService 注 解, 即使用了配置服务类, 在ThriftService注解中配置value参数即为配置服务模型类, 配置 protocol 传输协议模式如 TJSONProtocoal, 配置 transport 参数即配置传输方式如 TFramedTransport, 同时可以配置版本号参数、 组参数和超时参数。 0059 服务端配置举例如下 : 0060 T h r i f t S e r v i c e ( v a l u e “ g e t B o o k s S e r v e r “ , s e r v e r ” TThreadPool。
30、Server” ,protocol “TJSONProtocoal“,transport “TFramedT ransport“,group “1.0“,version “1.0“,timeout 3000) 0061 客户端配置举例如下 : 0062 T h r i f t C l i e n t ( v a l u e “ g e t B o o k s S e r v e r “ , s e r v e r ”TThreadPoolServer”,protocol “TJSONProtocoal“,transport “TFramedTransport“,group “1.0“,vers。
31、io n “1.0“,timeout 3000) 0063 本实施例中, 还可以在服务端配置报警方式, 例如采用 XML 方式配置如下 : 0064 0065 0066 0067 0068 0069 0070 0071 本实施例中的这种做法的目的是利用 spring 框架下的 SOA 组件对应用服务的 接口的稳定性进行监控和管理。在上述的配置信息中, 通过 “telephone ” *” mail ” *” ” 配置了报警时需要呼叫的电话号码和发送邮件的地址。服务端可以间隔地调用 应用服务以检查该服务的存活性。 当调用失败时, 按照上述报警方式的配置, 可以呼叫配置 的电话号码或者向邮件地址发。
32、送邮件。 0072 根据本发明实施例的技术方案, 通过采用 spring 框架, 在服务端和客户端进行相 应的配置 ; 在封装的SOA组件中, 以thrift模块为基础添加用于解析上述配置的模块, 使开 发者不必关心 thrift 组件中的传输、 协议、 组件模块的原理构成和相互之间的关系, 提高 了开发效率。并且, 根据本实施例的方案, 通过设置多组配置文件, 能够增加对统一接口不 同服务的版本和组的配置, 使统一接口可以由多个服务使用。另外可以通过对报警方式的 配置, 实现在服务的后续扩展中增加对服务稳定性和存活性进行管理和监控。 0073 以上结合具体实施例描述了本发明的基本原理, 但是。
33、, 需要指出的是, 对本领域的 普通技术人员而言, 能够理解本发明的方法和设备的全部或者任何步骤或者部件, 可以在 说 明 书 CN 104009994 A 8 6/6 页 9 任何计算装置(包括处理器、 存储介质等)或者计算装置的网络中, 以硬件、 固件、 软件或者 它们的组合加以实现, 这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们 的基本编程技能就能实现的。 0074 因此, 本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来 实现。所述计算装置可以是公知的通用装置。因此, 本发明的目的也可以仅仅通过提供包 含实现所述方法或者装置的程序代码的程序产品来实现。也就。
34、是说, 这样的程序产品也构 成本发明, 并且存储有这样的程序产品的存储介质也构成本发明。 显然, 所述存储介质可以 是任何公知的存储介质或者将来开发出的任何存储介质。 0075 还需要指出的是, 在本发明的装置和方法中, 显然, 各部件或各步骤是可以分解和 / 或重新组合的。这些分解和 / 或重新组合应视为本发明的等效方案。并且, 执行上述系列 处理的步骤可以自然地按照说明的顺序按时间顺序执行, 但是并不需要一定按照时间顺序 执行。某些步骤可以并行或彼此独立地执行。 0076 上述具体实施方式, 并不构成对本发明保护范围的限制。本领域技术人员应该明 白的是, 取决于设计要求和其他因素, 可以发生各种各样的修改、 组合、 子组合和替代。 任何 在本发明的精神和原则之内所作的修改、 等同替换和改进等, 均应包含在本发明保护范围 之内。 说 明 书 CN 104009994 A 9 1/2 页 10 图 1 图 2图 3 说 明 书 附 图 CN 104009994 A 10 2/2 页 11 图 4 说 明 书 附 图 CN 104009994 A 11 。