Home
Lev Walkin - December 12th, 2007 [entries|archive|friends|userinfo]
Lev Walkin

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

December 12th, 2007

(no subject) [Dec. 12th, 2007|04:42 am]
[Tags|]

Смотрел Махоткина. Смотрел "О высокой производительности". Смотрел Scaling Twitter. Наткнулся на RabbitMQ. Наткнулся на следующий вывод Моторолы:

A case study by Motorola comparing the use of C++ and Erlang for telecoms software, circa 2006.
 
Чистый Erlang примерно в два-три раза более производителен чем C++ на их задаче, при этом имея фиксированную стоимость по памяти.



По моим же данным, в JS-Kit использование Erlang позволило сократить код в 8-16 раз (в зависимости от подсистемы) и позволило поднять capacity системы в ~5 раз за две недели, построив масштабируемый KV-storage кластер a-la Amazon Dynamo. Про Dynamo я прочитал уже постфактум и был удивлён тем, насколько у нас совпадают требования к сервисам и методы решения проблем с масштабируемостью.

У меня в итоге получилось 2240 строк кода на Erlang, на всё про всё. Этот код делает следующее:

  • Динамическое кеширование
  • Replication with differential updates to Key-Value pairs
  • Multi-node fault-tolerance
  • Обслуживает четыре порта, в том числе висит на порту 80 (HTTP), на двух других TCP портах для статистики и общения с C и Perl, а также на UDP для мелких запросов
  • Ведёт exponential moving average статистику по куче параметров для каждого клиента
  • Умеет ходит к memcached за данными, но смысл в этом исчезает

Короче, я доволен. После опыта с Erlang слайды со scalability-конференций типа "используйте memcached!", "денормализуйте таблицы!", "сегментируйте базу!" и т.п. смотрятся как призывы заточить шуруп об асфальт, ибо в арсенале только молоток.
Link41 comments|Leave a comment

navigation
[ viewing | December 12th, 2007 ]
[ go | Previous Day|Next Day ]

Advertisement