Рекомендации по выбору технологии Micro Services Architecture

Java

В этой статье представлен выбор общих технических компонентов для микросервисной архитектуры!

Язык разработки

  • JAVA
    Основной язык программирования, подходящий для создания крупномасштабных фоновых сервисов.
  • Golang
    Go — второй язык программирования с открытым исходным кодом, выпущенный Google в 2009 году. Специально оптимизированные для программирования многопроцессорных системных приложений, программы, скомпилированные с помощью Go, работают так же быстро, как код C или C++, и являются более безопасными и поддерживают параллельные процессы. Google возлагает большие надежды на Go. Его конструкция позволяет программному обеспечению в полной мере использовать преимущества синхронного мультиплексирования многоядерных процессоров и может решить проблему объектно-ориентированного программирования. На данный момент это лучший выбор в сфере облачных вычислений!

Инструменты разработки

  • IntelliJ IDEA
    Продукты компании jetbrains, интеллектуальный помощник по коду, поддержка J2EE, инструменты различных версий (git, svn, github и т. д.), JUnit, интеграция с CVS и т. д. Многоязычная поддержка, бесплатная версия поддерживает только несколько языков, таких как JAVA. Флагманская версия является платной, также доступна бесплатная версия (функция урезана по сравнению с флагманской версией).

  • VS Code
    Это бесплатный, высокопроизводительный, кроссплатформенный, легкий редактор кода с открытым исходным кодом.В то же время он также хорошо справляется с производительностью, языковой поддержкой и сообществом открытого исходного кода!

Технология разработки

Рамка

  • Микросервисная структура
    Spring Cloud / Spring Cloud alibaba: Spring Cloud — это упорядоченный набор из серии фреймворков. Он немного упрощает разработку инфраструктуры распределенной системы, используя удобство разработки Spring Boot, предоставляя полный набор микросервисных решений.

  • RPC
    RestTemplate / WebClient: Spring RestTemplate — это клиент, предоставляемый Spring для доступа к службам Rest.
    gRPC: GRPC — это высокопроизводительная межъязыковая инфраструктура RPC с открытым исходным кодом от Google, основанная на протоколе HTTP2 и инфраструктуре RPC на основе protobuf 3.x. Многоязычная поддержка; Поддержка повторного использования ссылок, в кластере можно использовать длинные ссылки; После простой настройки производительности он может удовлетворить потребности большинства бизнес-сценариев.

  • Распределенная транзакция
    Seata: ключевые проекты Alibaba с открытым исходным кодом, разработка Java, высокая производительность, отсутствие блокировок, отсутствие кода вторжения в код режима 0, поддержка нетранзакционного хранилища в режиме MT, активное сообщество, быстрое обновление версии, простота в использовании!

  • Управление потоком, деградация предохранителя
    Sentinel: ключевые проекты Alibaba с открытым исходным кодом, разработка Java, удобная вторичная разработка, активное сообщество.

промежуточное ПО

  • Шлюз API
    Spring Cloud Gateway: Spring предпочтительнее, удобен для вторичной разработки, поддерживает асинхронную неблокирующую обработку.
    Kong: Kong - это высокая доступность, прост в расширенном проекте API Gateway, написанный Mashape на основе модуля NGINX_LUA. Отличная производительность, богатые плагины в основном готовы к использованию из коробки, и есть определенные пороговые значения для второго отверстия.

  • Центр конфигурации
    Nacos: Ключевые проекты Alibaba с открытым исходным кодом, которые можно одновременно использовать в качестве центра регистрации/центральной конфигурации, упрощают технологический стек, имеют полный интерфейс управления, разработку Java, удобную вторичную разработку, активное сообщество, режим CP и постоянно обновляется и повторяется.
    Apollo: Это распределенный центр конфигурации, разработанный отделом инфраструктуры Ctrip. Он может централизованно управлять конфигурацией различных сред и кластеров приложений. После изменения конфигурации его можно передать на сторону приложения в режиме реального времени. Он имеет стандартизированные разрешения, управление процессами и другие функции, подходящие для микросервисов.Сценарии управления конфигурацией.

  • обнаружение службы
    Nacos: Ключевые проекты Alibaba с открытым исходным кодом, которые можно одновременно использовать в качестве центра регистрации/центральной конфигурации, упрощают технологический стек, имеют полный интерфейс управления, разработку Java, удобную вторичную разработку, активное сообщество, режим CP и постоянно обновляется и повторяется.
    Zookeeper: ZooKeeper — это распределенная служба координации распределенных приложений с открытым исходным кодом, реализация с открытым исходным кодом Chubby от Google и важный компонент Hadoop и Hbase. Производительность может удовлетворить потребности крупномасштабных центров обнаружения и настройки служб, а эффективная производительность в реальном времени высока, что не подходит для крупномасштабных сценариев синхронизации данных в реальном времени.

  • монитор
    Prometheus: Система мониторинга с открытым исходным кодом с комплексными функциями, технологический стек CNCF, активное сообщество
    Grafana: Grafana - это набор метрических анализа и визуализации с открытым исходным кодом. Чистый JavaScript разработал интерфейсные инструменты, продемонстрируйте пользовательские отчеты, отображение диаграмм и т. Д. Через библиотеку доступа (например, intuxdb). Большинство из них используются в мониторинге данных времени, таких как Kibana. Уэй Графана более гибкий, богатый плагинами, мощными. Интерфейс прост и красивый, поддерживает бесплатную настройку, и сообщество имеет богатую поддержку панели инструментов.

  • отслеживание ссылок
    SkyWalking: Распределенная система отслеживания, отслеживание внутренних ссылок, богатые документы сообщества!

  • Сбор логов
    EFK: Распределенная обработка журналов обслуживания, легко расширяемая.

библиотека компонентов

  • Сериализация
    Jackson: предпочтительнее весенний, стабильныйБезопасность.
    protobuf: Protocol Buffer (сокращенно Protobuf) – это легкий и эффективный формат хранения структурированных данных с открытым исходным кодом от Google. Его можно использовать для сериализации структурированных данных и он очень подходит для хранения данных или формата обмена данными RPC.

инструмент

  • инструменты для сборки
    Maven: основные инструменты построения и управления проектами, Maven — это проект с открытым исходным кодом, разработанный на чистой Java под Apache, и инструмент для построения и управления проектами; он предоставляет инструменты, помогающие управлять построением, документацией, отчетами, зависимостями, scm, выпуском и распространением. метод. Он может легко компилировать код, управлять зависимостями, управлять двоичными библиотеками и т. д.

  • инструмент запроса интерфейса
    postman: postman — это мощный плагин Chrome для отладки веб-страниц и имитации отправки HTTP-запросов, он поддерживает почти все типы HTTP-запросов, операция проста и удобна.

  • контейнер
    DockerЭто движок контейнера приложений с открытым исходным кодом, основанный на языке Go и с открытым исходным кодом по протоколу Apache2.0. Docker позволяет разработчикам упаковывать свои приложения и зависимости в легкий портативный контейнер, который затем можно распространять на любой популярный Linux-компьютер, а также можно виртуализировать. Использование Docker может дать следующие преимущества: 1. Более быстрая доставка и развертывание 2. Эффективное развертывание и расширение 3. Более эффективное использование ресурсов 4. Простое управление

  • Управление кластером
    Kubernetes: Kubernetes — это платформа с открытым исходным кодом для автоматизированного развертывания, расширения, эксплуатации и обслуживания кластеров контейнеров. С помощью Kubernetes вы можете быстро и эффективно реагировать на потребности пользователей, быстро и предсказуемо развертывать свои приложения, быстро расширять свои приложения, беспрепятственно подключать новые функции приложений, экономить ресурсы и оптимизировать использование аппаратных ресурсов. Он предоставляет полное решение с открытым исходным кодом для оркестрации контейнеров и управления ими. Богатая экология, простота расширения, богатые и стабильные функции, одобренные крупными компаниями, простота в использовании.

Рабочая среда

  • Операционная система:
    Linux<CentOS 7+>: Linux — это набор Unix-подобных операционных систем, которые можно свободно использовать и свободно распространять.Это многопользовательская, многозадачная, многопоточная и многопроцессорная операционная система, основанная на POSIX и UNIX. Он может запускать основные инструменты UNIX, приложения и сетевые протоколы. Он поддерживает 32-битное и 64-битное оборудование. Linux наследует идею сетецентрического дизайна Unix и представляет собой многопользовательскую сетевую операционную систему со стабильной производительностью.

  • веб сервер
    Tomcat<8+>: Сервер Tomcat — это бесплатный сервер веб-приложений с открытым исходным кодом, представляющий собой облегченный сервер приложений. Он широко используется в системах малого и среднего размера и в случаях, когда имеется не так много отладка программ JSP.Nginx: Облегченный веб-сервер/обратный прокси-сервер и прокси-сервер электронной почты (IMAP/POP3)NodeJs: среда JavaScript на стороне сервера

Вот небольшой подарок для всех, обратите внимание на официальный аккаунт, введите следующий код, вы можете получить адрес сетевого диска Baidu, без рутины для получения!

001: «Программисты должны читать книги»
002: «Интернет-компания с нуля для построения инфраструктуры малого и среднего бизнеса и архитектуры эксплуатации и обслуживания бэк-офисных служб»
003: «Решения с высокой степенью параллелизма для интернет-предприятий»
004: «Обучающее видео по архитектуре Интернета»
006: «SpringBoot реализует систему заказов»
007: "Фактическое видео Spring Security"
008: «Практическое обучающее видео по Hadoop»
009: «Конференция разработчиков технологий Tencent 2019 PPT»
010: Группа обмена WeChat