Я сегодня слишком занят, поэтому напишу меньше и добавлю позже.
Асинхронный режим
Язык Go становится все более и более популярным, и многие крупные интернет-компании обращаются к GO для своих серверных частей. Dubbo, известная сервисная среда в среде Java, также объявила о преобразовании асинхронного режима. Это большой тренд, и асинхронный режим проверен и признан рынком.
Что касается выбора веб-сервера, то несколько лет назад большинство людей начали выбирать асинхронный неблокирующий Nginx вместо синхронного блокирующего Apache. Именно из-за асинхронных программ, таких как Nginx, он обладает лучшей адаптивностью и более сильными возможностями параллелизма. Теперь, с точки зрения внутренней разработки бизнеса и программирования, команды с сильной технической подготовкой начали переключать технологический стек с синхронного режима на асинхронный.
Синхронный режим блокировки имеет много недостатков, таких как слабый параллелизм, плохая адаптивность и медленные запросы, что приводит к недоступности службы. Например, при вызове стороннего API в фоновом интерфейсе эффект от режима синхронизации крайне слабый. Раньше фреймворки режима синхронной блокировки, разработанные на языках Java, PHP, C++, Python и Ruby, использовались все меньшим числом людей.
Node.js
Хотя Node.js также очень популярен и популярен, предприятия все еще редко используют Node.js в качестве основного языка программирования для серверной части компании. Языки C++, Java, PHP и Python также имеют некоторые похожие решения, в том числе Swoole-1.0, который также основан на модели асинхронного обратного вызова, аналогичной Node.js.
Существенная причина в том, что техническое решение асинхронного обратного вызова и некоторые оптимизационные решения, сделанные на его основе, включая Promise, Future, Yield/Generator, Async/Await и т. д., изменили стиль и привычки разработки программ. Если эти методы будут использоваться, инженеры должны дополнительно научиться использовать эти ключевые слова и функции.
Использование этих технических решений несовместимо с существующими программами.Можно сказать, что стоимость исследований и разработок огромна, и сделать плавный переход сложно. Повлиял на популярность стека технологии асинхронного обратного вызова. Эту модель программирования трудно принять каждому.
сопрограмма
Режим сопрограммы учитывает удобство сопровождения синхронной блокировки и высокие возможности параллелизма асинхронной неблокировки. В будущем он станет основным техническим решением в области back-end разработки.
Что наиболее важно, режим сопрограммы может работать с небольшими корректировками существующего кода проекта и даже полностью совместим со старыми проектами. Для совместимости требуется только слой фреймворка. Это обеспечивает плавный переход команды.
Используя шаблон сопрограммы, разработчикам вообще не нужно изучать дополнительные ключевые слова и использование функций. Стиль кодирования точно такой же, как и в синхронном режиме.
В различных технологиях сопрограмм,GOявляется самым ослепительным. Сопрограммы, каналы, статические языки, производительность, богатая компиляция, богатые стандартные библиотеки, полная экология, гугл и т.д., плюсов слишком много.GO, я лично считаю его самым достойным изучения среди всех нынешних языков программирования.
Swoole 2.xПусть PHP, старый язык фонового программирования с более чем 20-летней историей, также имеет возможность сопрограмм. по сравнению сGoтакая технология,PHP + SwooleСтек технологий больше подходит для быстрой разработки, быстрой итерации и бизнес-сценариев. В конце концов, динамические языки более гибкие и более эффективные для разработки, чем статические языки. иGoОн больше подходит для написания программного обеспечения системного уровня и основного бизнеса.
В 2018 году я провел рефакторинг фреймворка swoole, очень старого проекта, с базовой поддержкойSwoole 2.xРежим корутины. Основная причина в том, что в колесной компании существует множество проектов, основанных на этой структуре, особенно сервисный уровень использует структуру swoole. Мы надеемся, что бизнес-код не меняет ни одной строки и может переключаться в режим сопрограммы одним щелчком мыши. Теоретически другие PHP-фреймворки с синхронной блокировкой, такие как Laravel и Yii, могут изменять только базовую совместимость.Swoole 2.xCoroutine, чтобы реализовать плавное переключение режима сопрограммы между кодом проекта.
После использования сопрограмм производительность, параллелизм и стабильность всей системы значительно улучшились. В прошлом проблема, заключавшаяся в том, что медленный запрос на линии часто приводил к зависанию всего сервера, больше не существует.
PHP & Swoole
Хотя Swoole 2.0 существует всего два года, ему еще предстоит пройти долгий путь по сравнению с 10 годами напряженной работы над языком Go. Но по сравнению со статическими языками, такими как GO, PHP + Swoole по-прежнему имеет много преимуществ: PHP проще и удобнее в использовании, а PHP — это динамический язык, который более гибок в использовании.
Конечно, если это новый проект, рекомендуется использоватьSwoftЭто специально дляSwoole 2.xframework, у него меньше исторического багажа и, следовательно, выше стабильность.
Теперь с сопрограммами Swoole 2.0 мы по-прежнему уверены в будущем PHP.