Подробное описание: http://my.oschina.net/DaemonChen/blog/648331 или см. utm-x.x.x.doc
В некоторых областях, таких как обработка финансовых транзакций и игры, где логика достаточно сложна, различные интерфейсы могут использовать и модифицировать некоторые ресурсы данных, что может привести к проблемам параллелизма. Если для каждого ресурса требуется обеспечение его безопасности при параллелизме, анализ становится очень сложным, а сложность часто ведет к ошибкам.
Utm был спроектирован для маскировки проблем параллелизма для отдельных пользователей; то есть, когда пользователь обращается к своим ресурсам, ему не нужно беспокоиться о безопасности параллелизма этих ресурсов (ресурсов, доступ к которым осуществляют несколько пользователей, все равно требуют обработки). Основная идея заключается в том, чтобы сортировать запросы пользователя и последовательно обрабатывать их с помощью потока из пула потоков.
Пример простой ситуации: общая сумма покупок одного товара ограничена. Пользователь A отправляет два запроса на покупку (запрос 1 и запрос 2).
Обычно требуется использование блокировки или атомарных операций внутри запроса на покупку, чтобы избежать одновременной обработки запросов 1 и 2, которая могла бы привести к превышению лимита;А вот в случае использования UTM, такой вопрос не возникает, так как выполнение запроса 1 завершится до начала обработки запроса 2.
И реальные бизнес-процессы содержат множество подобных сценариев, поэтому использование UTM действительно снижает сложность разработки.
Таким образом, один пользователь никогда не столкнётся со случайной обработкой двух своих запросов одновременно, что значительно упрощает разработку. Это также означает меньший шанс конкуренции за ресурсы между несколькими потоками (один пользователь имеет максимум один активный запрос на обработку). Обращения пользователя не будут обрабатываться параллельно, что делает процесс немного медленнее для каждого отдельного пользователя, но обычно количество пользователей намного больше, чем количество ядер процессора, поэтому это не вызывает недостаточного использования CPU. Наоборот, UTM лучше распределяет ресурсы CPU между пользователями, а уменьшение конкуренции означает более эффективную работу программы.Конечно, самое главное — ядро qtm utm само использует блокировки, но они являются небольшими блокировками, которые не создают задержек даже при тысяче или десятках тысяч запросов в секунду от нескольких пользователей. Поэтому нет необходимости разрабатывать версию qtm на основе CAS (Compare and Swap) (узкие места в обслуживании обычно связаны с I/O, особенно с базами данных, и затраты utm кажутся мизерными по сравнению).Характеристики:
UTM гарантирует целостность жизненного цикла пользователя и порядок выполнения; (например: если пользователь пытается войти в систему, а он уже вошел, старая сессия будет автоматически завершена перед новым входом) (например: если пользователь отправил запрос 1, затем запрос 2, то запрос 1 всегда будет выполнен раньше, чем запрос 2)
Запрос пользователя выполняется в порядке, поэтому доступ к ресурсам пользователя не требует учета проблем конкуренции, что снижает сложность разработки.
(например: есть счетчик непрочитанных сообщений пользователя, который можно хранить как int в памяти UTM, если бы это было сделано вне области с гарантией управления конкурентностью, то потребовалось бы использовать AtomicInteger или блокировки для обеспечения целостности этого поля)
(например: очередь пользователей: запрашивается при успешной установке метки начала входа пользователя, освобождается при неудачной проверке соединения пользователя или выходе пользователя)
Высокая конкурентоспособностьХотя самое главное ядро qtm utm имеет некоторые операции блокировки, они являются небольшими блоками, способными справиться с тысячами или даже десятками тысяч запросов от пользователей в секунду.(узкие места обычно связаны с I/O, особенно с базой данных; в сравнении UTM имеет минимальные затраты)
Хорошая совместимость
UTM легко может использоваться на различных серверах (например, SmartFoxServer, Netty)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )