• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 7
    • 下载费用:30 金币  

    重庆时时彩超准计划: 一种基于SEDA的ESB组件实现方法.pdf

    关 键 词:
    一种 基于 SEDA ESB 组件 实现 方法
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201410070382.5

    申请日:

    2014.02.28

    公开号:

    CN103870337A

    公开日:

    2014.06.18

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情: 发明专利申请公布后的视为撤回IPC(主分类):G06F 9/50申请公布日:20140618|||实质审查的生效 IPC(主分类):G06F 9/50申请日:20140228|||公开
    IPC分类号: G06F9/50 主分类号: G06F9/50
    申请人: 浪潮集团山东通用软件有限公司
    发明人: 闫鹏
    地址: 250101 山东省济南市高新区舜雅路1036号
    优先权:
    专利代理机构: 代理人:
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201410070382.5

    授权公告号:

    ||||||

    法律状态公告日:

    2018.09.21|||2015.11.04|||2014.06.18

    法律状态类型:

    发明专利申请公布后的视为撤回|||实质审查的生效|||公开

    摘要

    本发明公开了一种基于SEDA的ESB组件实现方法,包括如下步骤:S10:提供一个线程池,以负责服务组件内部并发处理服务组件接收到消息;S11:提供一个业务相关的事件处理器,以负责封装服务组件具体业务逻辑、以及对消息的处理;S12:提供一个输入事件队列,以负责作为服务组件请求消息入口,并对大量消息请求缓存;S13:提供一个或多个资源控制器,以负责控制服务组件的消息多列深度和并发线程数的关系,保证处理消息的通道稳定运行。本发明一通过SEDA在ESB服务组件开发中的应用,分担高并发请求并保持吞吐量和响应时间的平衡,更大地处理并发的能力和提高响应速度。

    权利要求书

    权利要求书
    1.  一种基于SEDA的ESB组件实现方法,其特征在于,包括如下步骤:
    S10:提供一个线程池,以负责服务组件内部并发处理服务组件接收到消息;
    S11:提供一个业务相关的事件处理器,以负责封装服务组件具体业务逻辑、以及对消息的处理;
    S12:提供一个输入事件队列,以负责作为服务组件请求消息入口,并对大量消息请求缓存;
    S13:提供一个或多个资源控制器,以负责控制服务组件的消息多列深度和并发线程数的关系,保证处理消息的通道稳定运行。

    2.  根据权利要求1所述基于SEDA的ESB组件实现方法,其特征在于,步骤S10中:
    线程池在每个服务组件内部,批量处理获取处理消息,通过有限的线程池中获取的线程维持并发;
    使用线程池驱动服务组件的运行,将事件处理同线程的创建和调度分离,服务组件为顺序或者并行执行。

    3.  根据权利要求2所述基于SEDA的ESB组件实现方法,其特征在于,步骤S11中,业务事件处理是每个ESB服务组件的逻辑实现,采用从消息队列中读取消息,处理这些消息,然后执行并向下一个服务端点的输入队列。

    4.  根据权利要求3所述基于SEDA的ESB组件实现方法,其特征在于:业务事件处理器封装为统一接口,入参为输入的消息内容对象,具体处理逻辑封装在接口之内。

    5.  根据权利要求4所述基于SEDA的ESB组件实现方法,其特征在于,步骤S12中,输入事件队列对应ESB内部虚拟总线的实现,采用内存队列或持久化消息队列来实现。

    6.  根据权利要求5所述基于SEDA的ESB组件实现方法,其特征在于:步骤S12中,服务通过队列分解成服务组件,每个服务组件代表FSM的一个状态集合。

    7.  根据权利要求6所述基于SEDA的ESB组件实现方法,其特征在于,步骤S13中,控制器控制队列消息和后面并发线程数保持在稳定数值的控制环节,其中,服务组件控制器负责资源的分配和调度,控制派发给事件处理器的事件的数量和顺序,事件处理器可能在内部丢弃、过滤、重排序事件。

    说明书

    说明书一种基于SEDA的ESB组件实现方法
    技术领域
    本发明属于涉及ESB架构技术领域,涉及一种基于SEDA的ESB组件实现方法。
    背景技术
    随着互联网的高速发展,各种各样的互联网服务相继出现,现在不再局限于静态页面的访问,如股票交易,电子商务,即时消息服务,这些动态的服务,每一请求需要消耗更多的CPU,I/O等资源,导致管理和分发这些服务的系统日益复杂,包括Web Server, ESB等。
    在ESB领域中,封装这些服务功能的部件称之为服务组件,服务组件实现提升效率的主要途径之一是并发模型的实现,传统的并发编程模型主要有两种,一种是基于线程的并发模型, 另一种是基于事件的并发模型。
    基于线程模型为每一个请求分配一个线程(进程)。每一个被接受的请求被指派给一个线程(进程)去处理。锁信号量等被用于同步线程(进程)对共享数据结构的访问。操作系统负责调度这些处理每个请求的线程,来保证每个请求可以透明的分享计算机的CPU,I/O等资源。
    随着线程(进程)数的上升,这个模型引起了更高的资源消耗,操作系统在这些线程(进程)之间的频繁切换,内存交换,缺页更加频繁,锁竞争更加激烈等,将急剧降低系统的性能,急剧降低系统的吞吐量和增加每个请求的响应时间。更重要的是一个系统所能支持的线程(进程)数是有限的,线程(进程)数超过一个理想值后,就会出现等待,将引起系统的性能急剧下降。引入线程(进程)池可以缓解这种情况,但仍然不够理想。
    基于事件的模型中,服务器由每个CPU循环处理各种来自队列的事件(Event)。应用都可以产生这些事件,表示某些操作需要执行。每一个请求在系统被表示成一个有限状态机(FSM),系统分配线程组中的一个线程处理这个请求的对应状态的操作,操作一般很短,处理完后请求转换到FSM的下一个状态等待系统处理,这个线程又会被系统分配去处理下一个请求的这个状态。如果设计的好,事件模型可以支持很高的并发度,并且随着并发度的增加,系统的整体性能的降低在一个可以接受的范围内。
    随着请求数的增加,系统的吞吐量增加,每个请求的响应时间缓慢线性上升,直到达到饱和,这受限于计算机的物理硬件,CPU,内存等,达到饱和后每个请求的响应时间急剧上升,因为系统中有太多的请求等待调度。事件模型要求每一个状态的操作是短暂的并且是非阻塞的,所以一般都采用非阻塞的I/O接口;其关键是设计一个高效公平的事件调度器,同时考虑高效和公平。事件模型对具体的应用提出较高要求,所以其通用性不太理想。
    发明内容
    为解决上述问题,本发明的目的在于提供一种基于SEDA的ESB组件实现方法,以解决传统并发模型的缺点。
    为实现上述目的,本发明的技术方案为:
    一种基于SEDA的ESB组件实现方法,包括如下步骤:
    S10:提供一个线程池,以负责服务组件内部并发处理服务组件接收到消息;
    S11:提供一个业务相关的事件处理器,以负责封装服务组件具体业务逻辑、以及对消息的处理;
    S12:提供一个输入事件队列,以负责作为服务组件请求消息入口,并对大量消息请求缓存;
    S13:提供一个或多个资源控制器,以负责控制服务组件的消息多列深度和并发线程数的关系,保证处理消息的通道稳定运行。
    进一步地,步骤S10中:
    线程池在每个服务组件内部,批量处理获取处理消息,通过有限的线程池中获取的线程维持并发;
    使用线程池驱动服务组件的运行,将事件处理同线程的创建和调度分离,服务组件为顺序或者并行执行。
    进一步地,步骤S11中,业务事件处理是每个ESB服务组件的逻辑实现,采用从消息队列中读取消息,处理这些消息,然后执行并向下一个服务端点的输入队列。
    进一步地,业务事件处理器封装为统一接口,入参为输入的消息内容对象,具体处理逻辑封装在接口之内。
    进一步地,步骤S12中,输入事件队列对应ESB内部虚拟总线的实现,采用内存队列或持久化消息队列来实现。
    进一步地,步骤S12中,服务通过队列分解成服务组件,每个服务组件代表FSM的一个状态集合。
    进一步地,步骤S13中,控制器控制队列消息和后面并发线程数保持在稳定数值的控制环节,其中,服务组件控制器负责资源的分配和调度,控制派发给事件处理器的事件的数量和顺序,事件处理器可能在内部丢弃、过滤、重排序事件。
    相较于现有技术,本发明一种基于SEDA的ESB组件实现方法通过SEDA在ESB服务组件开发中的应用,分担高并发请求并保持吞吐量和响应时间的平衡,更大地处理并发的能力和提高响应速度。
    附图说明
    图1是本发明的流程图示。
    具体实施方式
    为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
    如图1所示,本发明一种基于SEDA的ESB组件实现方法,包括如下步骤:
    S10:提供一个线程池,以负责服务组件内部并发处理服务组件接收到消息。
    线程池在每个服务组件内部,获取处理消息时可以批量处理,通过有限的线程池中获取的线程维持并发。使用线程池驱动服务组件的运行,将事件处理同线程的创建和调度分离,服务组件可以顺序或者并行执行,服务组件可能在内部阻塞,给阻塞的服务组件分配较少的线程。
    根据线程池大小,执行这个服务组件的业务处理,如:有10个线程的线程池,那同时会有10个线程在执行这个服务组件的业务处理,一旦哪个线程完成,线程池有资源了,就会继续执行新的任务。不同服务组件中的线程池相互之间独立,不相互影响。本发明实施例中,分配数目必须小于机器开放的总线程数70%,并可以单独调整每个服务组件的线程池大小,来控制不同任务的并发程度。线程池可以采用.Net中ThreadPool,Task,或第三SmartThreadPool等;在Java中采用ExecutorService或第三方线程池。
    S11:提供一个业务相关的事件处理器,以负责封装服务组件具体业务逻辑、以及对消息的处理。
    业务事件处理是每个ESB服务组件的逻辑实现,采用从消息队列中读取消息,处理这些消息,然后执行并向下一个服务端点的输入队列,即向虚拟总线发消息,对队列和线程可以没有直接控制。本发明实施例中,业务事件处理器封装为统一接口,入参为输入的消息内容对象,具体处理逻辑封装在接口之内。
    S12:提供一个输入事件队列,以负责作为服务组件请求消息入口,并对大量消息请求缓存。
    输入事件队列对应ESB内部虚拟总线的实现,采用内存队列或持久化消息队列来实现。大量的消息可以积压在消息队列中,不会直接冲击到后面满负荷运转的从线程池中获得执行业务事件处理的过程。
    服务通过队列分解成服务组件,每个服务组件代表FSM的一个状态集合,引入了显式的控制边界;提供了隔离、??榛?、独立的负载管理?;谟邢蕹ざ鹊亩恿?,入队可能失败,如果队列拒绝新项的话,阻塞在满溢的队列上来实现吸纳压力,可以通过丢弃事件来降低负载,直接返回用户实现。方便调试和监控,事件的投递可跟踪,时间流可跟踪,通过监测队列的深度发现系统瓶颈。输入队列可以采用线程安全的Queue对象这种内存队列,也可以使用第三方标准的消息中间件(MQ),如MSMQ,ActiveMQ,RabbitMQ,IBMMQ。
    由于采用输入队列,所以队列消息的生产者和消费者与队列本身可以不在同一台机器上,从而实现服务单元的分布式部署,即任意一个服务组件可以部署在不同的机器上,队列可以采用部署多个队列或者一个集中队列(队列集群)来实现。
    S13:提供一个或多个资源控制器,以负责控制服务组件的消息多列深度和并发线程数的关系,保证处理消息的通道稳定运行。
    控制器控制队列消息和后面并发线程数保持在稳定数值的控制环节。其中,服务组件控制器负责资源的分配和调度;控制派发给事件处理器的事件的数量和顺序,事件处理器可能在内部丢弃、过滤、重排序事件。
    动态资源控制器包括线程池管理器、批量管理器两个部分。线程池管理器用于控制服务组件合理的并发,具体实现是观察队列深度,如果超过阀值就添加线程,并移除空闲线程。而批量管理器用于保证一个低响应时间和高吞吐量的调度;具体实现主要是控制批量因子,即服务组件一次处理的消息数量,也可以理解为线程池初始大小。批量因子配置小,将导致低响应时间;批量因子配置大,将导致高吞吐量,尝试找到具有稳定吞吐量的最小的批量因子值。观察服务组件的事件流出率,当吞吐量高的时候降低批量因子,低的时候增加,最终给出建议稳定值。
    本发明实施例中,控制器采用在服务组件中实现的方式,具体可以放在服务组件基类中。资源控制可以在服务组件内开发控制线程轮询队列深度,并控制线程创建来实现,也可以采用事件推送方式来实现。
    以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的?;し段е?。

    关于本文
    本文标题:一种基于SEDA的ESB组件实现方法.pdf
    链接地址://www.4mum.com.cn/p-6126165.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 127期单双中特 象棋基本走法口诀 玩优优如何赚钱 福彩18选7开奖记录 福建体彩36选7开奖中奖规则 云南时时彩是正规的吗 甘肃快3走势图分析 华谊兄弟股票分析报告 北京赛车pk10开奖直播视频 360足球比分直播网 紫金彩票网址 福建快三开奖号码今天 白云机场股票分析论文 山西十一选五中奖助手 平特王日报图库大全 爱彩票网站