пятница, 30 сентября 2011 г.

Embedded Design Patterns

Embedded Design Patterns
еще не успел почитать, но имена архитектур для меня совершенно новы:
- Hierarchical State Machine
- State Machine Inheritance
- ...

Классика паттернов, которая используется в J2EE:
- GoF patterns
- J2EE patterns
- PEAA from Fawler

но самое вкусное - distributed/multithreaded/realtime/... patterns надо искать самому.

Кста, если кто знает еще интересные паттерны - киньте в коммент.

среда, 31 августа 2011 г.

среда, 20 июля 2011 г.

Distributed Algorithms: Time

Тезисы к моему докладу на Java Club #2:

Многие современных "Большие Игроки" для обеспечения задачи хранения состояния в cloud-системах используют кастомные нереляционные решения:
Amazon
- SimpleDB
- Dynamo
Google
- GFS + BigTable + MapReduce
- Megastore
Yahoo
- HDFS + HBase + Hadoop
- PNUTS
Facebook
- Cassandra

Не рассматривая вызвавшие это причины, можно констатировать факт, что задача анализа реализованных или проектирования и разработки своего "in cloud" nonrelational хранилища актуальна для R&D отделов больших корпорация.

Но, в таком случае, нам придется "выйти за пределы реляционного словаря": ACID, optimistic/pessimistic locking, read uncommitted, read committed, repeatable read, serializable, two phase commit (2PL), two phase locking (2PL), normal forms, primary/foreign key...

И оперировать более фундаментальными понятиями. На основе которых, в том числе, возможно строить и реляционные решения.

Time:
- 0-d Scalar Lamport Logical Time
- 1-d Scalar Virtual Time
- 1-d Vector Time
- 2-d Matrix time

P.S. В целом про Time in Distributed Algorithms (в том числе про Vector Time) отлично прочитать Chapter #3 из книги "Distributed Computing: Principles, Algorithms, and Systems"

пятница, 17 июня 2011 г.

четверг, 16 июня 2011 г.

Game theory for automatic device driver synthesis

Article "Automatic Device Driver Synthesis with Termite" from scientists [EN].
ABSTRACT
Faulty device drivers cause significant damage through down time and data loss. The problem can be mitigated by an improved driver development process that guarantees correctness by construction. We achieve this by synthesising drivers automatically from formal specifications of device interfaces, thus reducing the impact of human error on driver reliability and potentially cutting down on development costs.
We present a concrete driver synthesis approach and tool called Termite. We discuss the methodology, the technical and practical limitations of driver synthesis, and provide an evaluation of nontrivial drivers for Linux, generated using our tool. We show that the performance of the generated drivers is on par with the equivalent manually developed drivers. Furthermore, we demonstrate that device specifications can be reused across different operating systems by generating a driver for FreeBSD from the same specification as used for Linux.

Short description [RU].

суббота, 11 июня 2011 г.

Cloud Computing Papers

Some Cloud Computing Papers from Illinois University.

вторник, 7 июня 2011 г.

Spring + NoSQL

Spring Data project

Subprojects:
- Blob-Stores
- Column Stores
- Document Stores
- Graph Databases
- Key Value Stores
- Map-Reduce
- Relational Databases
- Common Infrastructure

P.S. Один мой друг, который всерьез занимается Cloud, утверждает, что VmWare (Spring owner) мечтает свой стек технологий сделать стандартом для "облаков". И, вроде как, все к тому и идет. Спринговский доступ ко всякого рода "облачным хранилищам данных" фактически станем стандартом de facto.

P.P.S. Мой личный интерес в следующем:
Cloud - это абстракция над кластером. "Степаныч, скока щас?" - "100" - "подымай еще 100". Всякое приложение под cloud - stateless app, который все данные хранит в некотором распределенном хранилище. Это может быть Azure Table Storage, Google Datastore API, Amazon SimpleDB. Вот, по-моему, проектировать и реализовывать такие хранилища под заказ - самое интересное. Не использовать то, что уже есть, сидя на чужом public cloud, а реализовывать новое хранилище для заказного private cloud.

NoSQL Databases

NoSQL Databases
Lecture
Selected Topics on Software-Technology
Ultra-Large Scale Sites

Contents
1 Introduction 1
1.1 Introduction and Overview
1.2 Uncovered Topics
2 The NoSQL-Movement
2.1 Motives and Main Drivers
2.2 Criticism
2.3 Classifications and Comparisons of NoSQL Databases
3 Basic Concepts, Techniques and Patterns
3.1 Consistency
3.2 Partitioning
3.3 Storage Layout
3.4 Query Models
3.5 Distributed Data Processing via MapReduce
4 Key-/Value-Stores
4.1 Amazon’s Dynamo
4.2 Project Voldemort
4.3 Other Key-/Value-Stores
5 Document Databases
5.1 Apache CouchDB
5.2 MongoDB
6 Column-Oriented Databases
6.1 Google’s Bigtable
6.2 Bigtable Derivatives
6.3 Cassandra
7 Conclusion
A Further Reading, Listening and Watching
B List of abbreviations
C Bibliography

P.S. Many thanks to Mark for the link.

суббота, 21 мая 2011 г.

Why we’re using HBase

Why we’re using HBase: Part #1
Why we’re using HBase: Part #2

ZooKeeper - A Reliable, Scalable Distributed Coordination System

ZooKeeper - A Reliable, Scalable Distributed Coordination System

Abstract
ZooKeeper is a high available and reliable coordination system. Distributed applications use ZooKeeper to store and mediate updates key configuration information. ZooKeeper can be used for leader election, group membership, and configuration maintenance. In addition ZooKeeper can be used for event notification, locking, and as a priority queue mechanism. It's a sort of central nervous system for distributed systems where the role of the brain is played by the coordination service, axons are the network, processes are the monitored and controlled body parts, and events are the hormones and neurotransmitters used for messaging. Every complex distributed application needs a coordination and orchestration system of some sort, so the ZooKeeper folks at Yahoo decide to build a good one and open source it for everyone to use.

P.S. So ZooKeeper is open-source realization (from Yahoo) of "close-source" Chubby lock service (from Google).

понедельник, 16 мая 2011 г.