Actor Model, Futures and Promises, Reactive Streams 2017-05-25

В рамках магистерского курса "Параллельные вычисления" на кафедре КСПТ прочитал лекцию "Actor Model" (скачать слайды):

Retweet

Comments

NoSQL 03. Cassandra. Haystack. 2017-05-24

Третья лекция раздела NoSQL курса "Базы данных" в Технополисе.

Cassandra и Haystack:

Retweet

Comments

NoSQL 02. CAP. Raft. 2017-05-10

Вторая лекция раздела NoSQL курса "Базы данных" в Технополисе (скачать слайды):

Retweet

Comments

NoSQL 01. Введение. Hash and Cache. 2017-04-26

Первая лекция раздела NoSQL курса "Базы данных" в Технополисе (скачать слайды):

Retweet

Comments

The Art of JVM Profiling 2017-04-07

The Art of JVM Profiling talk by Andrei Pangin and me has been accepted by JPoint 2017 conference (slides).

No Java profiler is perfectly accurate, since JDK does not provide sufficient means to find where CPU time is exactly spent. Even "honest" profilers based on private HotSpot APIs will not tell the whole truth. Hardware counters and kernel functions could probably help, but unfortunately they are not aware of Java code at all. We will discuss several approaches to Java profiling: JVM TI, AsyncGetCallTrace, perf_events and Flame Graphs. Their principles and limitations will be considered. We will find a way to combine the advantages of all approaches together. Finally, we will see how Odnoklassniki performs full-stack profiling in production: from Java code down to Linux kernel.

Retweet

Comments

Streaming Matching of Events 2017-02-05

Dmitry Schitinin gave talk about Streaming matching of events at CEE-SEC(R) 2016 conference.

Our paper is published by ACM in the proceedings of the conference (backup PDF).

In Russian:

Retweet

Comments

YoctoDB @ Yandex.Classifieds 2016-08-31

YoctoDB @ Yandex.Classifieds talk has been accepted by CEE-SEC(R) 2016 conference (slides).

The paper is published by ACM in the proceedings of the conference (backup PDF).

In English:

In Russian:

Retweet

Comments

Actor Model, Futures and Promises, Reactive Streams 2016-05-11

В рамках магистерского курса "Параллельные вычисления" на кафедре КСПТ прочитал лекцию "Actor Model" (скачать слайды):

В отличие от лекции прошлого года расширены примеры систем на Actor Model и добавлен раздел про Reactive Streams.

Retweet

Comments

Unique Action Counting 2015-08-30

I will describe our approach to unique user action counting using Cassandra. An action is a click, a page view, a phone call or anything similar. Each action connects an object and a user.

A counter for a specific action provides the following methods:

Sets of users and objects are effectively infinite, but they increase gradually -- new ones appear and former ones don't appear any more. We don't want to run out of space because of storing connections forever, so we need some expiration policy. More about it later.

Data model

Cassandra schema looks like this:

CREATE TABLE IF NOT EXISTS $TABLE(
  id varchar,
  t varchar,
  PRIMARY KEY (id, t))
WITH
  compaction = {
    'class': 'LeveledCompactionStrategy'
  } AND
  default_time_to_live = $TTL

id is an object id. t is a token identifying user.

As it follows from the schema:

Requests

We have only two kinds of requests.

A request connecting the object and the token:

INSERT INTO $TABLE(id, t) VALUES (:id, :t)

A request counting unique tokens associated with the object:

SELECT COUNT(1) as counter FROM $TABLE WHERE id = :id LIMIT $LIMIT

We use explicit counter limit to bound the response time in case of extremely (or artificially) popular object.

Both requests are executed with LOCAL_ONE consistency level.

DAO

The DAO uses requests considered before and is based on the official Cassandra Java driver.

Cassandra driver is configured the following way:

Cluster.builder()
  .addContactPoints(clusterNodes: _*)
  .withCompression(ProtocolOptions.Compression.LZ4)
  .withLoadBalancingPolicy(
    new TokenAwarePolicy(
      new DCAwareRoundRobinPolicy(
        localDataCenter,
        remoteNodes)))

The implementation uses Session.executeAsync() and is fully asynchronous.

HTTP API

HTTP API is quite simple and delegates to the DAO. Let's HTTP requests.

Get count of tokens connected with object object_id:

$ curl http://myhost/api/v1/counter/object_id
42

Connect token token to object object_id and return count of tokens:

$ curl -X PUT -d token http://myhost/api/v1/counter/object_id
43

When implementing HTTP API we used Spray.

Benchmarks

We have a two node Cassandra cluster. Each node is a 16 core (with HT) 64 GB SSD machine.

Cassandra keyspace configuration is the following:

replication = {'class': 'NetworkTopologyStrategy', 'DC1': '2'} AND durable_writes = true

HTTP API runs on a 32 core machine.

Test load

The test load depends on two parameters:

Each test request can be expressed like this:

$ curl -X PUT -d token http://myhost/api/v1/counter/object_id

Where token is a random long value and object_id is an int value between 0 and total number of objects chosen using Gaussian distribution to model hot (popular) objects.

100 objects and 10M tokens

Cassandra nodes' CPUs get fully saturated at 700 rps load. The stable load area:

700 rps

Some numbers:

1K objects and 10M tokens

Cassandra nodes' CPUs get fully saturated at 2.5 Krps load. The stable load area:

2.5 Krps

Some numbers:

Conclusion

We considered unique action counters on top of Cassandra storage. This implementation (with some minor changes and caching added) is used in all the user facing counters in Yandex.Auto, Yandex.Realty and Yandex.Rabota.

Next time we might consider:

Retweet

Comments

Croudfunding на подарок 2015-03-16

Если решили, но не придумали, что мне подарить, то знайте, что я коплю на наушники с активным шумоподавлением для ментальной изоляции в условиях openspace-офиса:

Retweet

Comments

Actor Model 2014-11-21

В рамках магистерского курса "Параллельные вычисления" на кафедре КСПТ прочитал лекцию "Actor Model" (скачать слайды):

Темы "Dataflow Concurrency" и "Software Transactional Memory" не рассматривались, поскольку поддержка в Akka приостановлена. См. лекции прошлого года.

Retweet

Comments

Документация и бенчмарки YoctoDB 2014-08-24

Наконец, дошли руки и смог написать более подробную документацию по YoctoDB:

Retweet

Comments

YoctoDB 2014-07-04

Выложили в OpenSource встраиваемую СУБД YoctoDB, разработанную в Яндекс.

Ждите подробных постов про мотивацию и внутреннее устройство.

Retweet

Comments

Фреймворк Akka и его использование в Яндексе 2014-04-18

Выступил на JPoint 2014 с докладом "Фреймворк Akka и его использование в Яндексе" (скачать слайды):

Retweet

Comments

Principles of Reactive Programming 2014-01-21

Получил 100% в курсе Principles of Reactive Programming на Coursera. Рекомендую.

Retweet

Comments

Базы данных. STM 2013-12-09

Лекция "Software Transactional Memory" (скачать слайды):

Посмотреть видео на сайте Лекториума.

См. множество ссылок в презентации.

Retweet

Comments

Базы данных. Задание FR11 2013-12-09

FR11 сгорает 2013-12-09.

Retweet

Comments

Базы данных. Задание FR10 2013-12-02

FR10 сгорает 2013-12-02.

Retweet

Comments

Базы данных. Multidimensional indexing 2013-12-02

Гостевая лекция "Multidimensional indexing" (скачать слайды) Антона Волохова в курсе "Базы данных" в Computer Science Center.

Посмотреть видео на сайте Лекториума.

Retweet

Comments

Actor Model 2013-11-29

В рамках магистерского курса "Параллельные вычисления" на кафедре КСПТ прочитал лекцию "Actor Model" (скачать слайды):

Retweet

Comments

Базы данных. Graph DB 2013-11-25

Гостевая лекция "Graph DB" (смотреть слайды) Ильи Тетерина в курсе "Базы данных" в Computer Science Center.

Посмотреть видео на сайте Лекториума.

Retweet

Comments

Базы данных. Задание FR9 2013-11-25

FR9 сгорает 2013-11-25.

Retweet

Comments

Базы данных. Lucene 2013-11-18

Гостевая лекция "Lucene" (скачать слайды) Германа Андреева в курсе "Базы данных" в Computer Science Center:

Посмотреть видео на сайте Лекториума.

Retweet

Comments

Базы данных. Задание FR8 2013-11-18

FR8 сгорает 2013-11-18.

Retweet

Comments

Базы данных. ZooKeeper 2013-11-11

Гостевая лекция "ZooKeeper" (скачать слайды) Дмитрия Щитинина в курсе "Базы данных" в Computer Science Center:

Посмотреть видео на сайте Лекториума.

Retweet

Comments

Базы данных. Задание FR7 2013-11-11

FR7 сгорает 2013-11-11.

Retweet

Comments

Базы данных. Задание FR6 2013-11-04

FR6 сгорает 2013-11-04.

Зачтено

Retweet

Comments

Базы данных. Задание FR4 2013-10-28

Минимальная функциональность:

FR4 сгорает 2013-10-28.

Retweet

Comments

Базы данных. HBase 2013-10-28

Гостевая лекция "HBase" (скачать слайды) Леонида Налчаджи в курсе "Базы данных" в Computer Science Center:

Посмотреть видео на сайте Лекториума.

Retweet

Comments

Базы данных. Задание FR5 2013-10-28

FR5 сгорает 2013-10-28.

Зачтено

Retweet

Comments

Базы данных. HDFS 2013-10-21

Гостевая лекция "HDFS" (скачать слайды) Леонида Налчаджи в курсе "Базы данных" в Computer Science Center:

Посмотреть видео на сайте Лекториума.

Retweet

Comments

Базы данных. Задание FR3 2013-10-21

Минимальная функциональность:

FR3 сгорает 2013-10-21.

Зачтено

Retweet

Comments

Базы данных. Задание FR1 2013-10-14

Минимальная функциональность:

FR1 обязателен и не приносит баллов всем, кроме выполнивших в срок FR0.

Зачтено

Retweet

Comments

Базы данных. Задание FR2 2013-10-14

Минимальная функциональность:

FR2 сгорает 2013-10-14.

Зачтено

Retweet

Comments

Базы данных. Haystack 2013-10-14

Лекция "Haystack" (скачать слайды) про хранение фоток в Facebook по статье "Finding a Needle in Haystack: Facebook's Photo Storage" (скачать статью):

Посмотреть видео на сайте Лекториума.

Retweet

Comments

Базы данных. MongoDB 2013-10-07

Гостевая лекция "MongoDB is a web-scale" (скачать слайды) Антона Волохова в курсе "Базы данных" в Computer Science Center:

Посмотреть видео на сайте Лекториума.

См. множество ссылок в презентации.

Retweet

Comments

Базы данных. Cassandra 2013-09-30

Лекция "Cassandra" (скачать слайды):

Посмотреть видео на сайте Лекториума.

См. множество ссылок в презентации.

Retweet

Comments

Базы данных. Задание FR0 2013-09-30

Минимальная функциональность:

Зачтено

Retweet

Comments

Базы данных. Введение, Hash and Cache, CAP 2013-09-16

Прочитал 3 лекции на первом занятии курса "Базы данных" в Computer Science Center.

Введение

Скачать слайды.

Посмотреть видео на сайте Лекториума.

Hash and Cache

Скачать слайды.

Посмотреть видео на сайте Лекториума.

Consistency, Availability and Partition Tolerance

Скачать слайды.

Посмотреть видео на сайте Лекториума.

Retweet

Comments

Базы данных. Курсовой проект 2013-09-16

Для получения зачёта по курсу "Базы данных" необходимо выполнить курсовую работу. В рамках курсовой работы каждая команда (1-3 человека) должна разработать работоспособное Key-Value хранилище данных.

Требования

В первую очередь необходимо создать проект на BitBucket (DVCS Hg) или GitHub (DVCS Git). Если проект открытый, то нужно прислать мне на почту ссылку на проект, если проект закрытый -- дать пользователю incubos права администратора.

Язык программирования -- только Scala или Java.

Обязательны модульные тесты -- ScalaTest или JUnit.

Обязательна система автоматической сборки -- SBT или Maven.

Обязательна базовая документация: README (краткое описание устройства проекта) и INSTALL (краткое руководство по сборке и запуску проекта, а также его зависимостям).

Система оценивания

В течение курса будет выдано не менее 6 feature requests (FR). Для каждого FR установлен жёсткий срок, но не менее 2 недель. За каждый FR присуждается 0, 1 или 2 балла (2 балла за особое мастерство и креативность).

Кроме того, существует обязательный FR0. Для тех, кто не успел во время выполнить FR0, FR0 замещается обязательным FR1, а баллы за его выполнение не присуждаются.

Для получения зачёта в конце курса необходимо выполнить обязательные FR, заработать не менее 4 баллов на других FR и написать отчёт.

Проверка FR

FR проверяются каждые выходные, при этом предпочтение отдаётся командам, планомерно двигающимся к цели (равномерные коммиты). Возможно, имеет смысл поддерживать стабильную и нестабильную ветки проекта, чтобы не возникало странностей.

Обратная связь по результатам проверки FR осуществляется в виде issues. Наличие незакрытых issues, относящихся к соответствующему FR, препятствует зачёту по FR.

Отчёт

Отчёт должен содержать 2-10 страниц, включая картинки и не включая титульный лист.

Retweet

Comments

Лекции по "Базам данных" в Computer Science Center 2013-09-04

В осеннем семестре 2013 года читаю курс "Базы данных" в Computer Science Center. Все материалы будут выкладываться в этот блог.

Мой курс во многом основывается на курсе "Базы данных" 2012 года Ильи Тетерина. Во второй половине курса планирую приглашать моих коллег из Яндекса прочитать по одной лекции про конкретные хранилища данных, экспертами в которых они являются.

Retweet

Comments

Дедуктивная верификация 2013-04-30

В рамках магистерского курса "Методы анализа и обеспечения качества ПО" на кафедре КСПТ прочитал лекцию "Дедуктивная верификация".

Retweet

Comments

Site launched 2013-04-22

This website uses:

Retweet

Comments

Copyright © 2013-2017 Vadim TSesko