среда, 16 ноября 2011 г.

Top 10 Reasons Java Programs Envy Scala

"Top 10 Reasons Java Programs Envy Scala"

Черт побери!
Это действительно те вещи, которых мне не хватает в java по несколько раз в день ...

P.S. Для пользования презентацией надо интенсивно использовать zoom in/zoom out.

понедельник, 7 ноября 2011 г.

10 Core Architecture Pattern Variations for Achieving Scalability

10 Core Architecture Pattern Variations for Achieving Scalability

LB (Load Balancers) + Shared nothing Units. Units that do not share anything with each other fronted with a load balancer that routes incoming messages to a unit based on some criteria.
LB + Stateless Nodes + Scalable Storage. Several stateless nodes talking to a scalable storage, and a load balancer distributes load among the nodes.
Peer to Peer Architectures (Distributed Hash Table (DHT) and Content Addressable Networks (CAN)). Algorithm for scaling up logarithmically.
Distributed Queues. Queue implementation (FIFO delivery) implemented as a network service.
Publish/Subscribe Paradigm. Network publish subscribe brokers that route messages to each other.
Gossip and Nature-inspired Architectures. Each node randomly pick and exchange information with follow nodes.
Map Reduce/ Data flows. Scalable pattern to describe and execute Jobs.
Tree of responsibility. Break the problem down recursively and assign to a tree, each parent node delegating work to children nodes.
Stream processing. Process data streams, data that is keeps coming.
Scalable Storages. Ranges from Databases, NoSQL storages, Service Registries, to File systems.

P.S. Thanks highscalability.com for link.

пятница, 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.