Определение — что означает распределенное приложение?
Распределенное приложение — это программное обеспечение, которое выполняется или запускается на нескольких компьютерах в сети. Эти приложения взаимодействуют для достижения конкретной цели или задачи. Традиционные приложения основывались на единой системе для их запуска. Даже в модели клиент-сервер прикладное программное обеспечение должно было работать либо на клиенте, либо на сервере, к которому клиент обращался. Однако распределенные приложения работают одновременно на обоих.
В распределенных приложениях, если узел, на котором выполняется конкретное приложение, выходит из строя, другой узел может возобновить задачу.
Techopedia объясняет распределенное приложение
Распределенное приложение также может использоваться в модели клиент-сервер при одновременном использовании на сервере и клиентском компьютере. Внешний интерфейс операции выполняется на клиентском компьютере и требует минимальной вычислительной мощности, в то время как внутренний компонент требует гораздо большей вычислительной мощности и более выделенной системы и работает на серверном компьютере.
Распределенные системы: начало
Приложение работает медленно? время уточнять
Нативное приложение или мобильное веб-приложение?
При принятии решения о разработке собственного приложения или мобильного веб-приложения необходимо учитывать множество факторов, поэтому здесь мы рассмотрим некоторые факторы.
Для этого есть приложение — в твоей машине
Автомобильные приложения, которые часто называют информационно-развлекательными, существуют уже несколько лет. По большей части, предложения были скромными, с приложениями для потоковой передачи музыки, новостей и разговорного радио, а также приложениями GPS .
Источник: ru.theastrologypage.com
Распределенные программы
Сетевые службы всегда представляют собой распределенные программы. Распределенная программа — это программа, которая состоит из нескольких взаимодействующих частей (в приведенном на рис. 2 примере — из двух), причем каждая часть, как правило, выполняется на отдельном компьютере сети.
До сих пор речь шла о системных распределенных программах. Однако в сети могут выполняться и распределенные пользовательские программы — приложения. Распределенное приложение также состоит из нескольких частей, каждая из которых выполняет какую-то определенную законченную работу по решению прикладной задачи. Например, одна часть приложения, выполняющаяся на компьютере пользователя, может поддерживать специализированный графический интерфейс, вторая — работать на мощном выделенном компьютере и заниматься статистической обработкой введенных пользователем данных, а третья — заносить полученные результаты в базу данных на компьютере с установленной стандартной СУБД. Распределенные приложения в полной мере используют потенциальные возможности распределенной обработки, предоставляемые вычислительной сетью, и поэтому часто называются сетевыми приложениями.
002 Git Распределенная система
Следует подчеркнуть, что не всякое приложение, выполняемое в сети, является сетевым. Существует большое количество популярных приложений, которые не являются распределенными и целиком выполняются на одном компьютере сети. Тем не менее, и такие приложения могут использовать преимущества сети за счет встроенных в операционную систему сетевых служб. Значительная часть истории локальных сетей связана как раз с использованием таких нераспределенных приложений.
Большинство приложений, используемых в локальных сетях в середине 80-х гг., являлись обычными, нераспределенными приложениями. И это понятно — они были написаны для автономных компьютеров, а потом просто перенесены в сетевую среду. Создание же распределенных приложений, хотя и сулило много преимуществ (уменьшение сетевого трафика, специализация компьютеров), оказалось делом совсем не простым. Нужно было решать множество дополнительных проблем — на сколько частей разбить приложение, какие функции возложить на каждую часть, как организовать взаимодействие этих частей, чтобы в случае сбоев и отказов оставшиеся части корректно завершали работу и т. д. Поэтому до сих пор только небольшая часть приложений является распределенными, хотя очевидно, что именно за этим классом приложений будущее, так как они в полной мере могут использовать потенциальные возможности сетей по распараллеливанию вычислений [9, 10, 11, 22].
Источник: studref.com
Мир распределенных систем
Это содержимое представляет собой отрывок из электронной книги Dapr для разработчиков .NET, доступной в документации по .NET или в виде бесплатного pdf-файла, который можно читать в автономном режиме.
Просто спросите любого «крутого ребенка»: Современные, распределенные системы в, и монолитные приложения вне!
Но это не просто «классные дети». Прогрессивные ИТ-руководители, корпоративные архитекторы и проницательный разработчики повторяют эти же мысли при изучении и оценке современных распределенных приложений. Многие купили. Они разрабатывают новые и переплатформируют существующие корпоративные приложения в соответствии с принципами, шаблонами и методиками распределенных приложений микрослужб.
Но, эта эволюция вызывает много вопросов.
- Что такое распределенное приложение?
- Почему они набирают популярность?
- Каковы затраты?
- И, что важно, каковы компромиссы?
Для начала давайте перемотаем и посмотрим на последние 15 лет. В течение этого периода мы обычно создавали приложения как единую монолитную единицу. На рисунке 1-1 показана архитектура.
Рис. 1-1. Монолитная архитектура.
Обратите внимание, как модули для заказов, удостоверений и маркетинга выполняются в процессе с одним сервером. Данные приложения хранятся в общей базе данных. Бизнес-функции предоставляются через интерфейсы HTML и RESTful.
Во многих отношениях монолитными приложениями являются straightforward . Они просты в:
- Сборка
- Тестирование
- Развернуть
- Диагностика
- Вертикальное масштабирование (увеличение масштаба)
Однако монолитные архитектуры могут представлять значительные проблемы.
Со временем, вы можете достичь точки, когда вы начинаете терять контроль .
- Монолит стал настолько сложным, что ни один человек не понимает его.
- Вы боитесь внесения изменений, как каждый приносит непреднамеренные и дорогостоящие побочные эффекты.
- Реализация новых функций и исправлений занимает много времени и становится ресурсоемкой.
- Даже для самого небольшого изменения требуется полное развертывание всего приложения — дорогое и рискованное.
- Один нестабильный компонент может завершить работу всей системы.
- Добавление новых технологий и платформ не является вариантом.
- Внедрение гибких методологий доставки является сложной задачей.
- Архитектурная эрозия устанавливается в, как база кода ухудшается с бесконечными «особыми случаями».
- В конце концов консультанты приходят и говорят вам, чтобы переписать его.
Ит-специалисты называют это условие the Fear Cycle . Если вы работаете в технологическом бизнесе в течение какого-либо периода времени, хороший шанс, что вы испытали это. Это напряженно и исчерпает ваш ИТ-бюджет. Вместо создания новых и инновационных решений большая часть бюджета тратится на обслуживание устаревших приложений.
Вместо страха предприятиям требуется speed and agility . Они ищут архитектурный стиль, с помощью которого они могут быстро реагировать на рыночные условия. Они должны мгновенно обновлять и масштабировать по отдельности небольшие области динамического приложения.
Ранняя попытка добиться скорости и гибкости была предпринята в виде архитектуры, ориентированной на службы, или SOA . В этой модели потребители служб и поставщики услуг совместно работали с помощью компонентов обмена сообщениями ПО промежуточного слоя, которые часто называют корпоративной служебной шиной или ESB . На рисунке 1-2 показана архитектура.
Рис. 1-2. Архитектура SOA.
С помощью SOA централизованные поставщики услуг, зарегистрированные в ESB. Бизнес-логика будет встроена в ESB для интеграции поставщиков и потребителей. Затем потребители услуг могут найти этих поставщиков и связаться с ними с помощью ESB.
Несмотря на обещания SOA, реализация этого подхода часто усложняет и вызывает узкие места. Затраты на обслуживание стали высокими, а ПО промежуточного слоя ESB дорогостоящим. Службы, как правило, большие. Они часто совместно используют зависимости и хранилище данных. В конце концов, SOA часто приводили к «распределенной монолитной» структуре с централизованными службами, которые были устойчивы к изменениям.
В настоящее время многие организации достигли скорости и гибкости, реализовав архитектурный подход распределенной микрослужбы к созданию систем. На рисунке 1-3 показана та же система, созданная с использованием распределенных методов и методик.
Рис. 1-3. Распределенная архитектура.
Обратите внимание, что одно и то же приложение разлагается по набору распределенных служб. Каждый из них является автономным и инкапсулирует собственный код, данные и зависимости. Каждый из них развертывается в контейнере программного обеспечения и управляется оркестратором контейнеров.
Вместо одной базы данных, совместно используемой несколькими службами, каждая служба владеет частной базой данных. Другие службы не могут получить доступ к этой базе данных напрямую и могут получить доступ только к данным, которые предоставляются через общедоступный API службы, которая владеет ею.
Обратите внимание, что для некоторых служб требуется полная реляционная база данных, а для других — хранилище данных NoSQL. Служба корзины сохраняет свое состояние в распределенном кэше ключей и значений. Обратите внимание, как входящий трафик направляется через службу шлюза API. Она отвечает за направление вызовов к службам и обеспечение сквозных проблем. Самое главное, что приложение использует все преимущества масштабируемости, доступности и устойчивости, доступных на современных облачных платформах.
Но хотя распределенные службы могут обеспечить гибкость и скорость, они представляют собой другой набор проблем. Рассмотрим следующее.
- Как распределенные службы могут обнаруживать друг друга и взаимодействовать синхронно?
- Как они могут реализовать асинхронный обмен сообщениями?
- Как они могут хранить контекстную информацию в транзакции?
- Как они могут стать устойчивыми к сбоям?
- Как они могут масштабироваться в соответствии с колебаниями спроса?
- Как они отслеживаются и наблюдаются?
Для каждой из этих проблем часто доступно несколько продуктов. Однако защита приложения от различий в продуктах и обеспечение поддержки и переносимости кода становятся сложной задачей.
Эта книга знакомит с Дапром. Dapr — это распределенная среда выполнения приложения. Он непосредственно решает многие проблемы, обнаруженные вместе с распределенными приложениями. Заглядывая в будущее, Dapr может оказать глубокое влияние на разработку распределенных приложений.
Сводка
В этой главе мы обсудили внедрение распределенных приложений. Мы противопоставили монолитный системный подход с распределенными службами. Мы указали на многие распространенные проблемы при рассмотрении распределенного подхода.
Теперь сядьте, расслабьтесь и давайте познакомим вас с новым миром Дапра.
Источник: learn.microsoft.com