More Disruptor Links…

•July 16, 2011 • Leave a Comment

Martin Fowler has done a great write up on the LMAX Disruptor pattern here, abstract:

LMAX is a new retail financial trading platform. As a result it has to process many trades with low latency. The system is built on the JVM platform and centers on a Business Logic Processor that can handle 6 million orders per second on a single thread. The Business Logic Processor runs entirely in-memory using event sourcing. The Business Logic Processor is surrounded by Disruptors – a concurrency component that implements a network of queues that operate without needing locks. During the design process the team concluded that recent directions in high-performance concurrency models using queues are fundamentally at odds with modern CPU design

The LMAX team has an aggregate blog feed here with some interesting and related posts. There’s a couple of efforts underway to port the disruptor to .NET, though I’ve not found any with perf close to that of LMAX’s implementation.

SQL Server: Diagnosing and Resolving Latch & Spinlock Contention …

•July 9, 2011 • Leave a Comment

The SQLCAT team have released two very good white papers:

Diagnosing and Resolving Spinlock Contention on SQL Server

Diagnosing and Resolving Latch Contention on SQL Server

Rx 1.o is Released

•June 30, 2011 • Leave a Comment

Rx has been released officially, I’ve been using in a production environment for 6+ months and very happy with it. On the client side we’ve implemented the Event Aggregator pattern using Rx – effectively replacing the Prism Event Aggregator with half a dozen lines of code! On the server side, I’ve been experimenting using it to do effectively do complex event processing.

Channel 9 has a bunch of workshops which are worth watching here.

LMAX–’Disruptor’ Framework Open Sourced

•June 28, 2011 • Leave a Comment

Nice to see LMAX has open sourced their general purpose disruptor framework which may be used for exchanging data across concurrent threads, it’s an elegant solution which essentially uses a ring buffer, care around cache alignment, batching and minimising thread locking. LMAX use the disruptor in their order matching engine, their real-time risk management, their in-memory transaction processing system. The white paper explaining the details may be found here. It would be nice to see a .NET port of it!

Samsung Galaxy S2–impressive

•May 27, 2011 • Leave a Comment

I’ve been very happy with my iPhone, though, since upgrading to OS 4 the performance has been pretty poor. I decided it’s time to try something different and settled on the Samsung Galaxy S2 which has a dual core 1.2Ghz processor. I have to say, its a very impressive bit of kit, its great to see so much competition out there.

So what do you do when you buy the most powerful Android phone available, you overclock it of course, to 1.5Ghz!!

11x05120931gsii[1]

Build your own thermo nuclear reactor…

•May 27, 2011 • Leave a Comment

Holy cow, that’s an impressive science project!

New BizUnit SDK Sample

•May 25, 2011 • 2 Comments

I’ve added an SDK sample to help users get started to the released version of BizUnit, in terms of complexity it’s a lot more than a hello world and should be sufficient to familiarize people with a lot of the concepts. Over time I’ll try to add more samples.

The scenario is based on a BizTalk WCF Web Service, the fact that it is BizTalk sitting behind the WCF endpoint is less interesting, it could equally be a custom solution. The scenario is a trivialized version of a flight upgrade service. The flow from the BizUnit perspective is as follows:

1. The SOAP step invokes a WCF web service exposed by BizTalk. The step is called concurrently, meaning that while it is waiting to receive the response the rest of the steps in the test stage will execute.

2. A new instance of the orchestration is activated. The message content causes the process to execute down the upgrade path of the if/else.

3. The orchestration sends a request to a back end system to process the upgrade.

4. The FILE Read Multiple step picks up the file sent by BizTalk.

5. A synthetic response is generated by the BizUnit FILE Create step, this is sent back for BizTalk to pick up and process.

SDK Sample Flow

6. The waiting orchestration picks up the file and processes if.

7. The SOAP response is sent back to the caller, i.e. the BizUnit SOAP step

8. The waiting SOAP step receives the SOAP response, it passes the response payload to all its configured sub-steps, which in this scenario is a single XML Validation sub-step. The sub-step validates the Xml instance against its schema, and executes an XPAth to check the contents are correct.

9. At that point, the test case has successfully executed so, the test is a pass.

The sample creates the test as a coded test, but also saves it as a XAML test at the end. This is an approach that we tend to use a lot since it makes it very easy to create the ‘base’ test case and then vary it using variation of it in XAML.

 
Follow

Get every new post delivered to your Inbox.