
	

	 



{"id":1577,"date":"2013-01-13T23:46:51","date_gmt":"2013-01-13T15:46:51","guid":{"rendered":"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/?p=1577"},"modified":"2013-03-03T22:49:02","modified_gmt":"2013-03-03T14:49:02","slug":"transation-plan-2","status":"publish","type":"post","link":"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/transation-plan-2\/","title":{"rendered":"\u5e76\u53d1\u8bd1\u6587\u7ffb\u8bd1\u8ba1\u5212\uff08\u4e8c\uff09"},"content":{"rendered":"<h1>Doug Lea \u7684\u6587\u732e<\/h1>\n<ol>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/gee.cs.oswego.edu\/dl\/papers\/aqs.pdf\">Synchronizer Framework<\/a>\u00a0 \u8bd1\u8005\uff1aClarenceAu\u00a0\uff08\u5df2\u7ffb\u8bd1\u5b8c\u6210,\u5728\u6821\u5bf9\uff09<\/li>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/gee.cs.oswego.edu\/dl\/papers\/fj.pdf\" target=\"_blank\">Fork\/Join<\/a> \u00a0\u8bd1\u8005\uff1aAlex\uff08\u9646\u7eed\u53d1\u8868\u4e2d\uff09<\/li>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/gee.cs.oswego.edu\/dl\/cpj\/mechanics.html\" target=\"_blank\">Java Concurrency Constructs<\/a> \u8bd1\u8005\uff1a\u8427\u6b22\uff08\u5df2\u7ffb\u8bd1\u5b8c\u6210\uff09<\/li>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/gee.cs.oswego.edu\/dl\/cpj\/cancel.html\" target=\"_blank\">Cancellation<\/a> \u8bd1\u8005\uff1a\u4e01\u4e00 \u00a0\uff08\u5df2\u7ffb\u8bd1\u5b8c\u6210\uff09<\/li>\n<\/ol>\n<p>\u4ee5\u4e0b\u6587\u7ae0\u6765\u81ea\uff1a<a href=\"https:\/\/2.zoppoz.workers.dev:443\/https\/code.google.com\/p\/disruptor\/wiki\/BlogsAndArticles\" target=\"_blank\">https:\/\/2.zoppoz.workers.dev:443\/https\/code.google.com\/p\/disruptor\/wiki\/BlogsAndArticles<\/a><\/p>\n<h1>\u5982\u4f55\u4f7f\u7528Disruptor<\/h1>\n<ol>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/mechanitis.blogspot.com\/2011\/06\/dissecting-disruptor-whats-so-special.html\" rel=\"nofollow\">What&#8217;s so special about a ring buffer?<\/a>\u00a0&#8211; A summary by Trisha of the data structure at the heart of the Disruptor patter, how it&#8217;s implemented and what&#8217;s so great about it. \uff08\u8bd1\u8005\uff1a\u6dd8\u5b9d-\u6b27\u7acb\u52c7\uff09<\/li>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/mechanitis.blogspot.com\/2011\/06\/dissecting-disruptor-how-do-i-read-from.html\" rel=\"nofollow\">How do I read from a ring buffer?<\/a>\u00a0&#8211; Trisha gives an overview of the\u00a0<tt>Consumer<\/tt>\u00a0and\u00a0<tt>ConsumerBarrier<\/tt>, which allows you to read stuff off the ring buffer.(\u8bd1\u8005\uff1a\u53e4\u5723\u660c)<\/li>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/mechanitis.blogspot.com\/2011\/07\/dissecting-disruptor-writing-to-ring.html\" rel=\"nofollow\">Writing to the ring buffer<\/a>\u00a0&#8211; The third piece from Trisha explaining how to write to the ring buffer, and how it avoids wrapping.\uff08\u8bd1\u8005\uff1a\u957f\u6e90\uff09<\/li>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/blog.codeaholics.org\/2011\/the-disruptor-lock-free-publishing\/\" rel=\"nofollow\">Lock-free publishing<\/a>\u00a0&#8211; Danny outlines the concepts behind putting items into the ring buffer.\uff08\u8bd1\u8005\uff1a\u884c\u77e5\uff09<\/li>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/www.symphonious.net\/2011\/07\/11\/lmax-disruptor-high-performance-low-latency-and-simple-too\/\" rel=\"nofollow\">DSL for wiring up the Disruptor<\/a>\u00a0&#8211; Adrian came up with a cunning way to configure your Disruptor(\u8bd1\u8005\uff1a\u6768\u5e06)<\/li>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/www.symphonious.net\/2011\/08\/13\/the-disruptor-wizard-is-dead-long-live-the-disruptor-wizard\/\" rel=\"nofollow\">Disruptor wizard now part of the Disruptor<\/a>\u00a0&#8211; Adrian&#8217;s wizard now makes it easy to configure your very own Disruptor straight out of the box (\u8bd1\u8005\uff1a\u6768\u5e06)<\/li>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/mechanitis.blogspot.com\/2011\/08\/disruptor-20-all-change-please.html\" rel=\"nofollow\">Disruptor version 2.0<\/a>\u00a0&#8211; Trisha outlines the cosmetic changes to the Disruptor in version 2.0.(\u8bd1\u8005\uff1a\u6768\u5e06)<\/li>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/www.oraclejavamagazine-digital.com\/javamagazine\/20120304\/?pg=56&amp;pm=1&amp;u1=friend\" rel=\"nofollow\">Sharing Data Among Threads Without Contention<\/a>\u00a0&#8211; An updated and summarised version of Trisha&#8217;s blogs in Oracle&#8217;s Java Magazine.\uff08\u8bd1\u8005\uff1a\u540c\u6770\uff09<\/li>\n<\/ol>\n<h1>Disruptor\u4e3a\u4ec0\u4e48\u8fd9\u4e48\u5feb<\/h1>\n<ol>\n<li><a title=\"Dissecting the Disruptor: Why it\u2019s so fast (part one) \u2013 Locks Are Bad\" href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/disruptor-locks-are-bad\/\" rel=\"nofollow\">Locks Are Bad<\/a>\u00a0&#8211; Trisha gives some basic concurrency background and explains why locks are evil. (\u8bd1\u8005\uff1anick\uff0c\u6f58\u66e6\uff0c\u5df2\u7ecf\u7ffb\u8bd1\u5b8c\u6210)<\/li>\n<li><a title=\"Dissecting the Disruptor: Why it\u2019s so fast (part two) \u2013 Magic cache line padding\" href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/disruptor-padding\/\" rel=\"nofollow\">Magic cache line padding<\/a>\u00a0&#8211; An explanation around why the odd cache line padding variables are required, by Trisha.(\u8bd1\u8005\uff1a\u65b9\u817e\u98de\uff0c\u5df2\u7ecf\u7ffb\u8bd1\u5b8c)<\/li>\n<li><a title=\"Dissecting the Disruptor: Demystifying Memory Barriers\" href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/disruptor-memory-barriers\/\" rel=\"nofollow\">Demystifying Memory Barriers<\/a>\u00a0&#8211; Trisha attempts to explain why memory barriers are important in the Disruptor. \uff08\u8bd1\u8005\uff1a\u675c\u5efa\u96c4\uff09<\/li>\n<\/ol>\n<h1>\u5176\u4ed6\u4eba\u5199\u7684Disruptor\u6587\u7ae0<\/h1>\n<ol>\n<li><a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/martinfowler.com\/articles\/lmax.html\" target=\"_blank\">LMAX \u67b6\u6784<\/a>\u00a0 by Martin Fowler (\u5df2\u7ffb\u8bd1)<\/li>\n<li>Processing\u00a0<a href=\"https:\/\/2.zoppoz.workers.dev:443\/http\/blog.jteam.nl\/2011\/07\/20\/processing-1m-tps-with-axon-framework-and-the-disruptor\/\" rel=\"nofollow\">1m TPS<\/a>\u00a0with the Axon Framework using the Disruptor.\uff08\u8bd1\u8005\uff0c\u7a0b\u6653\u660e\uff09<\/li>\n<\/ol>\n<p>\u6709\u5174\u8da3\u7684\u540c\u5b66\u53ef\u4ee5\u4e00\u8d77\u53c2\u4e0e\uff0c\u6709\u4ec0\u4e48\u5176\u4ed6\u5e76\u53d1\u6587\u732e\u5e0c\u671b\u6211\u4eec\u7ffb\u8bd1\u7684\u4e5f\u53ef\u4ee5\u901a\u8fc7\u7559\u8a00\u544a\u77e5\u6211\u4eec\u3002<\/p>\n<h1>\u5982\u4f55\u7ffb\u8bd1<\/h1>\n<ol>\n<li>\u4f60\u53ef\u4ece\u4ee5\u4e0a\u51e0\u7bc7\u6587\u7ae0\u4e2d\u6311\u9009\u67d0\u4e00\u7bc7\u8fdb\u884c\u7ffb\u8bd1\uff0c\u7ffb\u8bd1\u65f6\u95f4\u6700\u597d\u662f\u4e00\u4e2a\u661f\u671f\u4ee5\u5185\uff0c\u7ffb\u8bd1\u524d\u8bf7\u53d1\u90ae\u4ef6\u5230main_shorttime\uff08AT\uff09163.com\u544a\u8bc9\u6211\u4f60\u8981\u7ffb\u8bd1\u7684\u6587\u7ae0\u548c\u9884\u8ba1\u5b8c\u6210\u65f6\u95f4\u3002<\/li>\n<li>\u8bd1\u8005\u7f72\u540d\u7684\u987a\u5e8f\u7531\u7ffb\u8bd1\u7684\u5b57\u6570\u786e\u5b9a\u3002<\/li>\n<li>\u4e0e\u5176\u4ed6\u8bd1\u8005\u4ea4\u53c9\u6821\u5bf9\uff0c\u4e92\u76f8\u8ba8\u8bba\u7ffb\u8bd1\u4e0e\u6280\u672f\u95ee\u9898\u3002<\/li>\n<li>\u63d0\u4ea4\u7ffb\u8bd1\uff1a\u5728\u5e76\u53d1\u7f16\u7a0b\u7f51\u7528QQ\u767b\u9646\uff0c\u7136\u540e\u53d1\u5e03\u8bd1\u6587\u3002<\/li>\n<\/ol>\n<h1>\u6ce8\u610f\u4e8b\u9879<\/h1>\n<div>\n<ol>\n<li>\u672c\u6587\u6863\u7684\u4f20\u64ad\u662f\u57fa\u4e8e\u5b66\u4e60\u7814\u7a76\u800c\u975e\u5546\u4e1a\uff0c\u56e0\u6b64\u7ffb\u8bd1\u7eaf\u5c5e\u5174\u8da3\u548c\u5206\u4eab\u7cbe\u795e\u3002<\/li>\n<li>\u5bf9\u8bd1\u8005\u7684\u8981\u6c42\uff0c\u56e0\u4e3a\u6211\u4eec\u662f\u51fa\u4e8e\u5b66\u4e60\u548c\u7814\u7a76\u76ee\u7684\uff0c\u6240\u4ee5\u5bf9\u8bd1\u8005\u6ca1\u6709\u5f88\u9ad8\u7684\u8981\u6c42\uff0c\u53ea\u8981\u4f60\u53ea\u8981\u4f60\u5bf9\u5e76\u53d1\u7f16\u7a0b\u611f\u5174\u8da3\uff0c\u5e76\u4e14\u613f\u610f\u7528\u5fc3\u6765\u7ffb\u8bd1\u6587\u7ae0\uff0c\u7ffb\u8bd1\u5b8c\u7684\u6587\u7ae0\u9996\u5148\u81ea\u5df1\u80fd\u8bfb\u660e\u767d\u5c31\u884c\uff0c\u653e\u5fc3\u6211\u4eec\u4f1a\u8fdb\u884c\u6821\u5bf9\u3002<\/li>\n<\/ol>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Doug Lea \u7684\u6587\u732e Synchronizer Framework\u00a0 \u8bd1\u8005\uff1aClarenceAu\u00a0\uff08\u5df2\u7ffb\u8bd1 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[148],"tags":[],"class_list":["post-1577","post","type-post","status-publish","format-standard","hentry","category-notice"],"views":6532,"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_shortlink":"https:\/\/2.zoppoz.workers.dev:443\/https\/wp.me\/p8MSzY-pr","jetpack_sharing_enabled":true,"post_thumbnail_image":"","content_first_image":null,"post_medium_image_300":null,"post_thumbnail_image_624":null,"pageviews":0,"total_comments":0,"category_name":"\u516c\u544a","_links":{"self":[{"href":"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/wp-json\/wp\/v2\/posts\/1577","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/wp-json\/wp\/v2\/comments?post=1577"}],"version-history":[{"count":0,"href":"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/wp-json\/wp\/v2\/posts\/1577\/revisions"}],"wp:attachment":[{"href":"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/wp-json\/wp\/v2\/media?parent=1577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/wp-json\/wp\/v2\/categories?post=1577"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2.zoppoz.workers.dev:443\/http\/ifeve.com\/wp-json\/wp\/v2\/tags?post=1577"}],"curies":[{"name":"wp","href":"https:\/\/2.zoppoz.workers.dev:443\/https\/api.w.org\/{rel}","templated":true}]}}