В этой статье представлен выбор общих технических компонентов для микросервисной архитектуры!
Язык разработки
- 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