实现服务化的方法和装置制造方法

文档序号:7801903阅读:129来源:国知局
实现服务化的方法和装置制造方法
【专利摘要】本发明提供了实现服务化的方法和装置,其中该方法包括:部署服务化的客户端和服务端,根据不同的路由算法实现客户端的负载均衡,获取调用日志,异步发送到监控系统,分析服务间的依赖关系,客户端加载服务接口方法,控制服务之间的权限,实现服务授权。本发明提供了客户端和服务端之间标准交互方式,提升可维护性,服务的调试和问题跟踪方便定位问题。
【专利说明】实现服务化的方法和装置
【技术领域】
[0001]本发明涉及分布式计算领域,特别涉及一种实现服务化的方法和装置。
【背景技术】
[0002]随着互联网的业务快速发展,硬件设备的数量和成本是越来越值得注意的因素。与传统的高端服务器、高端存储器和高端处理器不同的是,互联网公司的分布式系统由数量众多的、低成本和高性价比的普通PC服务器通过网络连接而成。这就使得分布式系统不能依靠传统的纵向扩展的方式,即先买小型机,不够时再买中型机,甚至大型机。互联网后端的分布式系统要求支持横向扩展,即通过增加普通PC服务器来提高系统的整体处理能力。普通PC服务器性价比高,故障率也高,需要在软件层面实现自动容错,保证数据的一致性。另外,随着服务器的不断加入,需要能够在软件层面实现自动负载均衡,使得系统的处理能力得到线性扩展。通过服务化技术解决分布式部署,可扩展,高可用,低成本,负载均衡。
[0003]图2是现有技术中SOA模型的示意图。面向服务的体系结构(SOA)是一个组件模型,它将应用程序的不同功能单元(即服务)通过它们之间事先定义的良好的接口和契约联系起来。其中,接口是采用中立的方式进行定义的,它独立于实现服务的硬件平台、操作系统和编程语言,不依赖于环境,这使得构建在各种采用SOA模型的系统中的服务可以以一种统一和通用的方式进行交互。每一个SOA解决方案架构层都可以利用SOA模型元素来建模。可以根据每一个SOA模型元素对操作模型元素建模。
[0004]然而采用服务化技术后,对业务人员的服务抽象能力要求比较高,怎样抽象接口才能灵活的适应业务的变化,服务粒度的划分至关重要。粒度太粗导致服务不能重用,太细导致远程调用过多。接口安全审核、变更管理会给项目流程增加一定负担。此外,服务化给调试和跟踪问题带来困难,调试一个服务要保证所依赖的服务是可用的,分布式系统跟踪问题的难度将是单机系统的N倍。
[0005]因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。

【发明内容】

[0006]为解决上述现有技术所存在的问题,本发明提出了一种实现服务化的方法和装置,对进行系统解耦,把一个大的系统拆分成多个小的服务,每个小服务之间可以独立部署,维护简单,提高开发效率,服务之间可以相互调用,服务可以共享,可重用。服务之间提供标准交互方式,屏蔽底层细节,提升可维护性。
[0007]本发明采用如下技术方案:一种实现服务化的方法,包括:
[0008]步骤一,部署服务化的客户端和服务端,
[0009]步骤二,根据预设路由算法实现客户端的负载均衡,
[0010]步骤三,获取调用日志,把日志异步发送到监控系统,分析服务间的依赖关系;
[0011]步骤四,客户端加载服务接口方法,控制服务之间的权限,实现服务授权。[0012]优选地,所述步骤一进一步包括:
[0013]服务端在启动服务时,把服务的IP地址、接口、版本、服务名称注册到注册中心,服务端提供服务之间的RPC机制,对于一个服务,服务端支持在多个节点中分布式部署;
[0014]客户端引入服务端的API接口,采用动态代理的方式生成调用服务端的存根,在调用服务的具体方法之前,得到提供此服务的机器IP地址列表,利用路由规则选择一个节点进行通信,如果和某个节点通信发生网络异常,根据路由规则转移到下一个节点,客户端支持 failover ;
[0015]在服务端停止服务时,自动通知客户端把对应于该服务端的节点删除;
[0016]客户端和服务端底层采用socket通讯,集成jboss remoting和netty通信框架,采用jboss serialization和json序列化来传输数据,实现同步和异步调用。
[0017]优选地,在所述步骤二中,服务端节点的变化被推送到注册中心,注册中心实时通知到所有客户端进行节点变更,客户端根据路由算法找到具体服务节点进行调用,所述路由算法包括:轮询调度算法和权重轮询算法。
[0018]优选地,所述步骤三采用插件拦截机制获取调用日志,并异步发送到监控系统,
[0019]所述监控系统监控服务的名称、IP、端口,以及服务是否运行,服务调用统计、报警及自定义报警规则;
[0020]对于服务执行过程的异常,系统可以给出异常栈,并可在不同维度上定义报警规则。
[0021 ] 优选地,所述步骤三进一步包括:
[0022]客户端的一次调用生成唯一 request ID传输到服务端,根据该request ID来分析服务之间的依赖关系和方法的执行时间。
[0023]优选地,所述步骤四进一步包括:
[0024]客户端通过Web界面,自动加载服务的接口方法,通过编写授权规则来控制服务之间的权限,所述权限包括,允许访问的IP地址、服务、接口、方法,其中该权限由规则来控制,授权规则利用规则弓I擎来解析。
[0025]根据本发明的另一方面,提供了一种实现服务化的装置,包括:
[0026]部署模块,用于部署服务化的客户端和服务端,
[0027]路由模块,用于根据预设路由算法实现客户端的负载均衡,
[0028]监控模块,用于获取调用日志,把日志异步发送到监控系统,分析服务间的依赖关系;
[0029]授权模块,用于通过客户端加载服务接口方法,来控制服务之间的权限,实现服务授权。
[0030]相比于现有技术,本发明的技术方案的具有以下优点:
[0031]由于业务发展比较块,需求快速上线,可能不需要开发新的功能,组合已有服务就完成新的需求。服务之间提供标准交互方式,屏蔽底层细节,提升可维护性,服务的调试和问题跟踪利用监控系统,把服务的调用异常栈信息进行收集,展现,方便定位问题。
【专利附图】

【附图说明】
[0032]图1是根据本发明实施例的实现服务化方法的流程图。[0033]图2是现有技术的SOA模型的示意图。
[0034]图3是根据本发明实施例的服务管理流程示意图。
[0035]图4是根据本发明方法所产生的技术效果的示意图。
【具体实施方式】
[0036]多种方式可以用于(包括实施为过程;装置;系统;物质组成;在计算机可读存储介质上包括的计算机程序产品;和/或处理器(诸如如下处理器,该处理器被配置成执行在耦合到处理器的存储器上存储的和/或由该存储器提供的指令))实施本发明。在本说明书中,这些实施或者本发明可以采用的任何其他形式可以称为技术。一般而言,可以在本发明的范围内变更公开的过程的步骤顺序。除非另有明示,描述为被配置成执行任务的部件(诸如处理器或者存储器)可以实施为被临时配置成在给定时间执行该任务的一般部件或者被制造成执行该任务的具体部件。
[0037]下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
[0038]图1是根据本发明实施例的实现服务化方法的流程图。如图1所示,本发明提供的方法包括:
[0039]1、部署服务化的客户端和服务端。
[0040]服务端在启动服务时,把服务的IP、接口、版本、服务名称都注册到zookeeper注册中心。服务端提供服务之间的RPC机制。对于一个服务,服务端支持多个节点分布式部署。
[0041]客户端引入服务端API接口,采用动态代理的方式生成调用服务端的存根,在调用具体方法前,得到提供此服务的机器IP列表,利用路由规则选择一个节点进行通信,如果和某个节点通信发生网络异常,根据路由规则转移到下一个节点,客户端支持failover。
[0042]如果服务端停止服务,自动通知客户端把对应于该服务端的节点删除。
[0043]客户端和服务端底层采用socket通讯,集成jboss remoting和netty通信框架,采用jboss serialization和json序列化来传输数据,实现同步和异步调用。
[0044]2、客户端根据不同的路由算法实现负载均衡。
[0045]服务端节点的变化被推送到zookeeper注册中心,注册中心负责实时通知到所有服务化客户端进行节点变更,客户端根据路由算法找到具体服务节点进行调用。
[0046]本发明优选的路由算法包括:轮询调度算法(Round-Robi)和权重轮询算法(Weighted Round-Robin)。
[0047]轮询调度算法具体描述为,平均轮询调用服务节点,每个服务端提供的服务次数都是均等的。
[0048]权重轮询算法具体描述为,同一个服务部署在多个节点上,每个节点的硬件有一定的差异化,通过调整权重来使硬件配置高的节点接收更多的请求。该权重范围值优选为1-100,权重值和请求处理数成正比。[0049]3、采用插件拦截机制获取调用日志,把拦截到的日志异步发送到监控系统。
[0050]在服务监控方面,服务化和监控系统可以监控服务的名称、IP、端口,以及服务是否运行。服务调用统计、报警及自定义报警规则。基于各种条件查询出的调用次数统计情况,以图形方式显示。
[0051]对于服务执行过程的任何异常,系统可以给出异常栈,便于问题定位。系统还可根据需要在不同维度上定义报警规则,满足条件时给出不同类型的报警通知。服务器调用流量统计。
[0052]4、服务治理:服务之间依赖关系分析和管理,服务调用路径,执行报表。实际执行过程中的调用路径,以及各节点上的执行开销,一次调用客户端生成唯一 request ID传输到服务端,根据request ID来分析服务之间的依赖和方法的执行时间。服务路由调整、根据服务权重轮询算法进行服务降级。可以停止,启动,删除某个节点上的服务。
[0053]5、客户端加载服务接口方法,控制服务之间的权限,实现服务授权。
[0054]客户端通过Web界面,自动加载服务的接口方法,通过编写授权规则来控制服务之间的权限。所述权限包括,每个IP可以访问哪些IP,可以访问那些服务、接口、方法,权限可以由规则灵活控制。通过zookeeper将规则推送到客户端。具体授权规则可利用规则引擎来解析。
[0055]以下结合图3具体的示例描述本发明面向服务的实现方法。图3是根据本发明实施例的服务管理流程示意图。如图所示:
[0056]服务端把服务的IP (192.168.1.2和192.168.1.3)、接口、版本、服务名称(A服务)注册到zookeeper注册中心。对于A服务,服务端将其分布式部署在多个节点。客户端引入服务端API接口,得到提供A服务的机器IP列表(192.168.1.2和192.168.1.3),利用路由规则选择一个节点进行通信。服务端节点的变化被推送到zookeeper注册中心,注册中心负责实时通知到所有服务化客户端进行节点变更,客户端根据路由算法找到具体服务节点进行调用。监控系统监控A服务的ip、端口,以及服务是否运行。客户端自动加载A服务的接口方法。服务端通过编写授权规则来控制服务之间的权限。通过zookeeper将规则推送到客户端。可利用规则弓I擎来解析该授权规则。
[0057]根据本发明的另一方面,提供了一种实现服务化的装置,包括:
[0058]部署模块,用于部署服务化的客户端和服务端,
[0059]路由模块,用于根据预设路由算法实现客户端的负载均衡,
[0060]监控模块,用于获取调用日志,把日志异步发送到监控系统,分析服务间的依赖关系;
[0061]授权模块,用于通过客户端加载服务接口方法,来控制服务之间的权限,实现服务授权。
[0062]综上所述,本发明提出的实现服务化的方法和装置,对服务之间提供标准交互方式,屏蔽底层细节,提升可维护性,服务的调试和问题跟踪利用监控系统,把服务的调用异常栈信息进行收集,展现,方便定位问题。目前在发明人自主研发的平台中,使用服务化框架开发的服务已经有70多个,运行在300多台服务器上,每天有上亿次的调用,服务运行稳定可靠。图4表明了部分服务一天的调用次数。可见,本发明的方法和装置给业务开发人员减少了大量的工作量,使开发人员能够精力主要集中在实现业务逻辑。[0063]显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。
[0064]应当理解的是,本发明的上述【具体实施方式】仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
【权利要求】
1.一种实现服务化的方法,其特征在于,包括: 步骤一,部署服务化的客户端和服务端, 步骤二,根据预设路由算法实现客户端的负载均衡, 步骤三,获取调用日志,把日志异步发送到监控系统,分析服务间的依赖关系; 步骤四,客户端加载服务接口方法,控制服务之间的权限,实现服务授权。
2.根据权利要求1所述的方法,其特征在于,所述步骤一进一步包括: 服务端在启动服务时,把服务的IP地址、接口、版本、服务名称注册到注册中心,服务端提供服务之间的RPC机制,对于一个服务,服务端支持在多个节点中分布式部署; 客户端引入服务端的API接口,采用动态代理的方式生成调用服务端的存根,在调用服务的具体方法之前,得到提供此服务的机器IP地址列表,利用路由规则选择一个节点进行通信,如果和某个节点通信发生网络异常,根据路由规则转移到下一个节点,客户端支持failover ; 在服务端停止服务时,自动通知客户端把对应于该服务端的节点删除; 客户端和服务端底层采用socket通讯,集成jboss remoting和netty通信框架,采用jboss serialization和json序列化来传输数据,实现同步和异步调用。
3.根据权利要求2所述的方法,其特征在于,在所述步骤二中,服务端节点的变化被推送到注册中心,注册中心实时通知到所有客户端进行节点变更,客户端根据路由算法找到具体服务节点进行调用,所述路由算法包括:轮询调度算法和权重轮询算法。
4.根据权利要求3所述的方法,其特征在于,所述步骤三采用插件拦截机制获取调用日志,并异步发送到监控系统, 所述监控系统监控服务的名称、IP、端口,以及服务是否运行,服务调用统计、报警及自定义报警规则; 对于服务执行过程的异常,系统可以给出异常栈,并可在不同维度上定义报警规则。
5.根据权利要求4所述的方法,其特征在于,所述步骤三进一步包括: 客户端的一次调用生成唯一 request ID传输到服务端,根据该request ID来分析服务之间的依赖关系和方法的执行时间。
6.根据权利要求5所述的方法,其特征在于,所述步骤四进一步包括: 客户端通过Web界面,自动加载服务的接口方法,通过编写授权规则来控制服务之间的权限,所述权限包括,允许访问的IP地址、服务、接口、方法,其中该权限由规则来控制,授权规则利用规则弓I擎来解析。
7.一种实现服务化的装置,其特征在于,包括: 部署模块,用于部署服务化的客户端和服务端, 路由模块,用于根据预设路由算法实现客户端的负载均衡, 监控模块,用于获取调用日志,把日志异步发送到监控系统,分析服务间的依赖关系; 授权模块,用于通过客户端加载服务接口方法,来控制服务之间的权限,实现服务授权。
【文档编号】H04L12/803GK103986748SQ201410162894
【公开日】2014年8月13日 申请日期:2014年4月22日 优先权日:2014年4月22日
【发明者】王子武, 刘泉 申请人:世纪禾光科技发展(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1