Технологии и подходы в разработке высоконагруженных приложений

67 %
33 %
Information about Технологии и подходы в разработке высоконагруженных приложений
Technology

Published on February 14, 2014

Author: Lavrentieva

Source: slideshare.net

Description

"Технологии и подходы в разработке высоконагруженных приложений"
Алексей Ермоленко (Altoros)

Технологии и подходы в разработке высоконагруженных приложений Часть 1. Брокеры сообщений

Attributes • • • • • Distributed system Horizontal scaling Constant response time Loose coupling Reliability

Message broker • is an intermediary program which translates the language of a system from one Globally acceptable languages to another by way of a telecommunications medium • is an architectural pattern for message validation, message transformation and message routing

Name Implementation Protocols language License OS Current version RabbitMQ Erlang AMQP Mozilla Public License 1.1 Windows, Linux, OS X, VxWorks 3.2.3 Apache Java ActiveMQ JMS 1.1, OpenWire, REST, Stomp, WS Notification, XMPP, AMQP 1.0 Apache 2.0 Windows, OS X, Linux, Solaris (any with JDK ≥ 5.0) 5.9.0 Apache Qpid Java, C++ AMQP Apache 2.0 Windows, Debian, Fedora 0.24 SonicMQ Java JMS 1.1, J2EE 1.4, XML, SOAP Proprietary Windows, RHEL, SuSE, AIX, HP-UX MSMQ C++ MSMQ Windows component Windows (95 - Server 2012) 5.0 ZeroMQ C++ ZMTP LGPLv3+ Linux, Windows, OS X 4.0.3

Cloud services • Amazon SNS • Windows Azure ServiceBus • IronMQ (iron.io)

Advanced Message Queuing Protocol (AMQP) • Open protocol, • V 0.9.1 – Nov. 2008, v 1.0 – Oct. 2011 • Bank of America, Cisco Systems, Progress Software, JPMorgan Chase, Microsoft Corporation, Novell, Red Hat, VMware and others

Exchange, Binding, Queue

Terms • Durable queue survives after broker restart • Persistent messages are written to disk • Per-Queue Message TTL determines how long an unconsumed message can live in a queue before it is automatically deleted • Per-Message TTL determines the TTL on a per-message basis • Queue TTL determines how long an unused queue can live before it is automatically deleted • Message acknowledgments are turned on by default • Nack (or Reject) = discard message or requeue itDead Letter Exchanges - messages can be republished to another exchange when: • The message is rejected (Nack or Reject) with requeue=false • The TTL for the message expires • The queue length limit is exceeded

Topic exchange • Routing based on a pattern (a.b.c.d) • * - 1 word, # - 0..N words

Direct exchange • Routing based on a key

Fanout exchange • Routing key is ignored • Fast • Broadcast

Other exchange types • Headers exchange - Routing based on message header content • RabbitMQ: Custom exchanges for even message distribution between queues: • consistent-hash • x-random

RabbitMQ – AMQP v. 0.9.1+ Clustering Several RabbitMQ servers on a local network can be clustered together, forming a single logical broker. Highly Available Queues Queues can be mirrored across several machines in a cluster, ensuring that even in the event of hardware failure your messages are safe. Many Clients There are RabbitMQ clients for almost any language you can think of. Management UI RabbitMQ ships with an easy-to use management UI that allows you to monitor and control every aspect of your message broker.

Rabbit + .NET = ? • RabbitMQ.Client* • Burrow.NET • EasyNetQ

Reliability Failover (= fail-over) обход отказа, обработка *ситуации+ отказа в кластерных конфигурациях - способность системы автоматически эластично реагировать на отказ какого-либо устройства, разрыв связи и т. п., переключаясь на другое (обычно резервное или находящееся в состоянии ожидания) Loose coupling Publish-subscribe (публикация/подписка) - отправители сообщений отправляют их не конкретным получателям, а публикуют их в специальных каналах, не зная о том, сколько и какие подписчики у этого канала. Подписчики же, проявляют интерес к одному или нескольким каналам, из которых получают сообщения, соответствующие их интересам, не задумываясь об отправителях. Подобное разделение отправителей (публикующих) и получателей (подписчиков) позволяет достигать большей масштабируемости и более динамичную топологию сети

Pattern: interoperability

Pattern: asynchronous processing / smoothing • For each request we only validate it and immediately return response, process later

Pattern: publish-subscribe, broadcasting • Notify different subsystems about an event

Изобретаем велосипед очередь • Хранилище сообщений • Оповещение о постановке сообщения в очередь

ServiceStack.RedisMQ

Azure ServiceBus AMQP 1.0 is a much more narrow standard than the 0.9.1. It only defines the network wire-level protocol for the exchange of messages between two endpoints.

Consumer code PeekLock – default ReceiveAndDelete

Масштабирование в Azure 1 очередь < 500 rpm

QUESTION AND ANSWER PERIOD

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

Технологии и подходы в разработке высоконагруженных ...

... и подходы в разработке высоконагруженных приложений ... Технологии и подходы в ...
Read more

Конференция JEEConf в Киеве - ru.java

... кто использует Java технологии ... высоконагруженных и ... в разработке приложений ...
Read more

Архитектура высоконагруженных приложений. Масштабирование ...

... задачи в высоконагруженных ... и технологии ... в разработке?
Read more

Разработка приложений под платформу Microsoft - App4win.ru

... высоконагруженных ... приложений и ... и подходы к разработке ...
Read more

Разработка ПО на заказ, разработчик высоконагруженных web ...

Технологии. ... в разработке ... наши цели и наши подходы ...
Read more

JEEConf - 21 травня, Київ / Подія / Розробка - соціальна ...

... кто использует Java технологии ... высоконагруженных и ... в разработке приложений ...
Read more

OLAP, BI, DWH, ETL, Web Development

... опыт в разработке olap и ... приложений для ... высоконагруженных olap и bi ...
Read more

Использование технологии OpenCL для разработки ...

... которые демонстрируют отличие в разработке приложений, ... подходы: В ... и в её конец ...
Read more

Конференция JEEConf, 19 мая, Киев. – Тренинги, семинары ...

современные подходы в разработке ... в разработке приложений ... и в it индустрии ...
Read more