SEDA和Java并行编程点滴.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SEDA与Java并行编程点滴 谈修竹 Benjamin Tan Team Leader@DBAppSecurity Twitter: tanbamboo Agenda SEDA架构 Java并行编程点滴 Actor浅探 SEDA SEDA: A new architecture for Internet services A general-purpose framework for high concurrency and load conditioning Decomposes applications into stages separated by queues Adopt a structured approach to event-driven concurrency To appear in the Eighteeth Symposium on Operating Systems Principles (SOSP-18), Chateau Lake Louise, Canada, October 21-24, 2001. /~mdw/ SEDA features Enable load conditioning Event queues allow inspection of request streams Can perform prioritization or filtering during heavy load Dynamic control for self-tuning resource management System observes application performance and tunes runtime parameters Apply control for graceful degradation Perform load shedding or degrade service under overload Simplify task of building highly-concurrent services Decouple load management from service complexity Use of stages supports modularity, code reuse, debugging Dynamic control shields apps from complexity of resource management SEDA基本结构 每Stage包括一个Queue、一个线程池 Stage之间相互独立、隔离 反馈控制 通过监控每个Stage的Queue,可以对SEDA系统进行反馈控制 队列策略调整,可进行事件丢弃、优先级处理等 线程池调整 拓扑修改,如优雅降级 实现 隔离业务逻辑与并行编程,降低系统复杂度 增强模块化设计 Java并行编程点滴 共享数据并行访问 线程与CPU核心的匹配 Active List 每个线程维护各自独立的列表,采用ThreadLocal JUC的concurrent容器 Counter 采用AtomicInteger,在1500EPS情况下,每秒需要并发访问1500次。 改进后 每线程进行维护一个独立的计数器,每秒定期汇总全部计数器。 Java并行编程点滴 小小的建议: 尽可能减少共享数据 尽可能减少共享数据的并发访问次数 任务处理异步事件化 线程与CPU核心 CPU、MEM密集型Stage,线程数量可以等于CPU核心数量(或减一),如日志解析处理等 IO密集型Stage,可以通过测试设定线程数量,一般为CPU核心数量的3~5倍,如HTTP通信模块 Actor浅探 SEDA的问题: 线程切换开销 单Stage中多线程对Queue的并发访问导致竞争条件 全部Stage之间拓扑、流程维护 Actor浅探 Actor协程,应用层轻量级调度,无Context切换开销 每个Actor拥有独立的Mailbox,无并发访问开销 Topology,维护各个Actor的关系 Actor浅探 “self-heals, systems that never stop”,自恢复功能是如何实现的? 轻量级协程位于同一个线程,如何充分利用多核CPU潜能?

文档评论(0)

aa15090828118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档