1. Разделение труда
1. Первобытное общество
Когда первая группа первобытных людей в природе жила на природе (настоящее выживание в дикой природе), они предпочли жить группами, чтобы выжить, и жили в пещерах, чтобы укрыться от ветра и дождя, чтобы избежать зверей. Некоторые первобытные люди бегали быстро и осмелились преследовать и охотиться, некоторые люди бегали медленно и шли осваивать пустоши, некоторые первобытные люди любили изобретать и создавать каменные орудия труда, некоторые первобытные люди умели плести листья и одежду...
2. Общественное разделение труда
Маркс считал, что сущностью разделения труда является результат непрерывного развития производительных сил.
Три основных социальных разделения, которые произошли в более поздний период первобытного общества на Восточном континенте, предложенные Энгельсом в «Происхождении семьи, частной собственности и государства», следующие:кочевое племяотделенный от остальной дикой толпы;ремеслоотделение от сельского хозяйства;купеческий классвнешний вид.
3. Техническое разделение труда
С развитием Интернета техническое разделение труда на основе языка или платформы разработки становится все более и более детальным, и развиваются различные технологические стеки.
Front-end разработка: Html, Css, Js, React, Vue и т.д.
Мобильная разработка: Android, iOS, React Native, Flutter и др.
Back-end разработка: Java, C++, PHP, Go, Python, сбор данных, разработка аудио и видео и т. д.
2. Бэкенд
Автор работает над iOS много лет, я думал, что это можно сделать раз и навсегда, но это было слишком просто.
План всегда не успевает за изменениями, живи, пока не узнаешь правду, которая всегда одна и та же, и отказывайся ставить себе ограничения.
В прошлом году большого спроса на iOS в проекте не было, и только потому, что мне было интересно заниматься back-end разработкой, я на год переключился на back-end Java-разработку.
От начального интерфейса Crud (добавление, удаление, изменение и проверка), разработка интерфейса, разработка модуля до общей разработки, развертывания, выпуска, онлайн, отслеживания и итерации всего проекта.
Разве разработка Java-сервера в глазах мобильного разработчика не является просто предоставлением интерфейса клиенту?
Верно! Но не только это!
Помимо предоставления интерфейса, есть и другие работы
1. Развертывание службы (разверните пакет Jar на разных машинах для тестирования и онлайн, разве это не то, что делают эксплуатация и обслуживание)
Подать заявку на машину, подать заявку на lvs, подать заявку на доменное имя (подать заявку на конфигурацию в соответствии с процессом компании)
Развертывание балансировки нагрузки Nginx (аналогично распределению маршрута на разные машины, настройка веб-страницы запуска)
Миграция службы, миграция базы данных, слияние баз данных (разве не это делает БД)
2. Очистка данных (тысячи файлов Excel были отсортированы и объединены в течение года, разве не этим занимаются инженеры по работе с большими данными?)
Импорт и экспорт данных из базы данных (импорт очищенного Excel или экспорт статистических данных, необходимых Pm)
3. Аварийное реагирование (если бизнес или машина зависнет, вы встанете среди ночи, чтобы поменять ее, и только тогда осознаете радость быть клиентом)
4. Написать техническую архитектуру, дизайн базы данных и другие документы (для стандарта ISO9001 или документы о приемке правительственных/корпоративных правительственных проектов)
5. Абстракция архитектуры (исследование наиболее подходящей архитектуры, молекуляризация бизнеса, исследование различных фреймворков или инструментов)
6. Проверка безопасности (тот же лимит IP, ограничение на количество запросов, сертификат HTTPS и т. д.)
7. Рассмотрим ряд проблем, вызванных высоким параллелизмом (это то, что необходимо учитывать для продуктов с большой ежедневной и ежемесячной активностью)...
Возьмите каштан:
Так же, как и разработка функции авторизации на мобильном терминале, интерфейс выполнен по дизайну PM, UI и UE, нужно только ввести логин и пароль, а потом дождаться результата ответа.
Никогда не учитывайте ограничение частоты входа в систему, ограничение IP-адреса, действителен ли проверочный код, совпадает ли пароль, как поддерживать сеанс входа в систему, защиту от считывания и т. д.
Мобильный терминал должен заботиться только о том, равен ли Http-статус API, который вы вызываете, 200.
Внутренняя логика по-прежнему относительно сложна, и есть несколько зрелых фреймворков, которые подходят для большинства сценариев.
Преследование переднего плана: красивый и потрясающий интерфейс, плавное взаимодействие страниц, четкая бизнес-логика, разумная компонентизация, стабильный внешний SDK и т. д.
Стремление к серверной части: стабильный интерфейс, разумная архитектура, четкая бизнес-логика, разумное разделение модулей, поддержка высокой параллелизма и т. д.
3. История
Ниже приведены различные архитектурные шаблоны разработки корпоративных проектов Java. Год - это не много, но все следующие архитектурные модели были задействованы.
1. JSP (смешанная разработка интерфейса и сервера)
JSP расшифровывается как Java Server Pages и представляет собой динамическую технологию веб-разработки. Он использует теги JSP для вставки кода Java в веб-страницы HTML. Теги обычно начинаются с <% %>.%>
JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP получает вводимые пользователем данные через веб-формы, обращается к базам данных и другим источникам данных, а затем динамически создает веб-страницы.
Теги JSP выполняют различные функции, такие как доступ к базам данных, запись информации о выборе пользователя, доступ к компонентам JavaBeans и т. д., а также могут передавать управляющую информацию и общую информацию на разных веб-страницах.
2. Spring Boot (внутренняя независимая одиночная служба)
SpringBoot — это новый облегченный фреймворк с открытым исходным кодом, разработанный командой Pivotal в 2013 году, а первая версия была выпущена в апреле 2014 года. Основанный на дизайне Spring 4.0, он не только наследует оригинальные превосходные функции среды Spring, но также еще больше упрощает весь процесс создания и разработки приложений Spring за счет упрощения конфигурации. Кроме того, SpringBoot интегрирует большое количество фреймворков, так что конфликты версий зависимых пакетов и нестабильность ссылок были хорошо решены.
Он предназначен для упрощения начального процесса и процесса разработки новых приложений Spring. Фреймворк использует особый способ настройки, поэтому разработчикам больше не нужно определять шаблонную конфигурацию. Короче говоря, Spring Boot интегрирует все платформы, предоставляя конфигурацию по умолчанию, что позволяет нам создавать приложения проще, быстрее и легче.
3. Spring Cloud (микросервисы)
Микросервис — это архитектурный стиль, который делит одно приложение на небольшие сервисные единицы и использует HTTP API для доступа к ресурсам и работы между микросервисами. Это очень похоже на SOA.
Микросервисная архитектура подчеркивает, что бизнес-система должна быть полностью разделена на компоненты и обслуживаться Компонент — это продукт, который может предоставлять услуги независимо. Микросервисы больше не делают упор на более тяжелую корпоративную сервисную шину ESB в традиционной архитектуре SOA. Микросервисы подчеркивают, что у каждого микросервиса есть собственное независимое рабочее пространство, включая ресурсы базы данных. Сама микросервисная архитектура исходит из идеи Интернета, поэтому сервисы, выпускаемые компонентами, делают упор на использование HTTP Rest API. По сравнению с SOA степень детализации сегментации микросервисов будет меньше.
Таким образом, микросервисная архитектура является расширением идеи архитектуры SOA, которая подчеркивает независимость отдельных сервисов и имеет меньшую степень детализации разделения.
4. Spring Cloud Alibaba (Микросервис Али)
Spring Cloud Alibaba — это универсальное решение для разработки микросервисов, предоставляемое Alibaba, которое представляет собой интеграцию промежуточного программного обеспечения с открытым исходным кодом Alibaba и системы Spring Cloud.
Компоненты с открытым исходным кодом Али
Sentinel: Используйте трафик в качестве точки входа для защиты стабильности служб от нескольких измерений, таких как управление трафиком, переход на более ранние автоматические выключатели и защита системной нагрузки.
Nacos: платформа динамического обнаружения служб, управления конфигурацией и управления службами, упрощающая создание облачных приложений.
RocketMQ: Распределенная система обмена сообщениями с открытым исходным кодом, основанная на технологии распределенных кластеров с высокой доступностью, предоставляет услуги публикации сообщений и подписки с низкой задержкой и высокой надежностью.
Dubbo: Apache Dubbo™ — это высокопроизводительная платформа Java RPC.
Seata: продукт Alibaba с открытым исходным кодом, простое в использовании высокопроизводительное решение для распределенных транзакций с микросервисами.
Alibaba Cloud ACM: продукт центра конфигурации приложений, который централизованно управляет конфигурациями приложений и распространяет их в среде с распределенной архитектурой.
Alibaba Cloud OSS: Alibaba Cloud Object Storage Service (OSS) — это массивная, безопасная, недорогая и высоконадежная облачная служба хранения, предоставляемая Alibaba Cloud. Вы можете хранить и получать доступ к любым типам данных в любом приложении, в любое время и в любом месте.
Alibaba Cloud SchedulerX: Распределенный продукт планирования задач, разработанный командой промежуточного программного обеспечения Alibaba, который предоставляет услуги планирования задач второго уровня, точные, высоконадежные и высокодоступные (на основе выражений Cron).
4. Инжиниринг
Просмотрите инженерный код проекта соответствующего процесса следующим образом...
1. JSP-проект
2. Проект Spring Boot
GitHub.com/кодирование XK/билеты…
3. Весенний облачный проект
GitHub.com/V/SPR от Star Power…
4. Проект Spring Cloud Alibaba
GitHub.com/Fornetley/Судный день вы…
5. Противоречия
Для одного и того же продукта и услуги внутренняя и внешняя стороны взаимозависимы, и неизбежно будут некоторые противоречия в любви и убийстве.
1. Нет документации
Можно использовать Swagger или Mook.Если есть изменения, своевременно обновлять и синхронизировать.
2. Неполная документация
рекомендую это
{
code : 0/ 1/ 2/ 3, // 0代表正常,1是参数有误,2是用户不存在,3是用户没权限等
msg : 'xxxx', //表示此操作的提示信息( message ),一般只用来显示操作失败时提示信息
data : [], //表示此操作的返回值( result data)
count : x //返回的数据条数
}
3. Проблема с версией
Например, к интерфейсу /user можно добавить номер версии, такой как /user/1.3, чтобы адаптировать его к интерфейсу клиента на разных этапах.
4. Проверка параметров интерфейса
Например, если введен идентификационный номер, клиент может его проверить, и сервер также может проверить его на стороне интерфейса. Рекомендуется выполнять верификацию с обеих сторон, что является наиболее безопасным, и я боюсь, что если обе стороны не будут верифицированы, это будет фуфло.
5. Проблемное подключение интерфейса
Проблемы с позиционированием клиента, вы можете точно определить эти детали с помощью функции расширения прокси или браузера и вовремя сообщить об этом с помощью фактических снимков экрана.
6. Уклонение от требований
Например, если есть требование, клиент может его реализовать, и бэкенд тоже может реализовать. В этом случае рекомендуется делать back-end, потому что back-end можно сделать унифицированным способом, логика непротиворечива, риск снижен, а трудозатраты сохранены. Если риск изменений изменен, клиенту, особенно клиенту iOS, будет проблематично просмотреть версию выпуска.Если серверная часть изменена напрямую, это эквивалентно эффекту горячего обновления.
6. Резюме
Подводя итог, мобильный терминал сам по себе имеет полный набор системы знаний.После обращения к серверной системе мы видим, что серверная часть и интерфейсная часть похожи и различаются. Каждая роль имеет соответствующие преимущества и недостатки, и интересно взглянуть на технологию с точки зрения полного стека.
Как только вы овладеете одним языком, вы можете попробовать его на нескольких языках. Правила, лежащие в основе языка, схожи, ведь многие идеи проектирования архитектурных шаблонов схожи.
Учиться и учиться время от времени, не так ли?