предисловие
Резюме предыдущей ситуации
В прошлой статье мы просто реализовали собственную RPC-инфраструктуру, в основном полагаясь на анализ процесса RPC, упомянутый в двух последних статьях.
1.客户端处理过程中调用client stub(就像调用本地方法一样),传入参数
2.Client stub将参数编组为消息,然后通过系统调用向服务端发送消息
3.客户端本地操作系统将消息从客户端机器发送到服务端机器
4.服务端操作系统将接收到的数据包传递给client stub
5.server stub解组消息为参数
6.server stub再调用服务端的过程,过程执行结果以反方向的相同步骤响应给客户端
заглушка: заглушка в распределенных вычислениях — это фрагмент кода, который преобразует параметры, передаваемые между клиентом и сервером во время удаленных вызовов процедур.
Мы также внесли небольшие оптимизации в поддержку протокола и извлечение сетевого уровня за счет введения средства поиска, структура которого выглядит следующим образом:
PS: Фиолетовый представляет часть прокси-сервера клиента, светло-зеленый относится к обнаружению службы, а светло-синий относится к части протокола.
Код каждого небольшого блока в основном дан, я считаю, что даже если вам нужно его запустить, вам не нужно делать слишком много работы по заполнению кода.
предыдущая ссылка
Высокий параллелизм с нуля (1) --- основная концепция Zookeeper
Высокий параллелизм с нуля (2) --- Zookeeper реализует распределенные блокировки
Высокий параллелизм с нуля (3) --- Создание кластера Zookeeper и выбор лидера
Высокий параллелизм с нуля (4) --- распределенная очередь Zookeeper
Высокий параллелизм с нуля (5) --- Приложение центра конфигурации Zookeeper
Высокий параллелизм с нуля (6) --- Выборы мастера Zookeeper и краткий обзор его официального сайта
High Concurrency from Scratch (7) --- Введение в RPC, протокол и инфраструктуру
Высокий параллелизм с нуля (8) --- Простая реализация инфраструктуры RPC
даббо обзор
① Введение в даббо
Как и в случае с zookeeper, нужно только запомнить URL-адрес: сначала этот проект называется dubbo, затем он принадлежит apache, а затем open source — это некоммерческая организация, то есть org, поэтому URL-адрес:
Может быть, если вы обратите внимание на эту картинку, вы обнаружите, что в начале, в правом верхнем углу этой картинки есть английское слово «Incubating», что означает, что dubbo в то время все еще был инкубационным проектом, и потому что это китайский Разработано людьми, поэтому поддержка перевода на китайский язык очень всеобъемлющая, поэтому нам должно быть максимально удобно учиться.
Apache Dubbo — это высокопроизводительная облегченная среда Java RPC с открытым исходным кодом, которая обеспечивает три основные возможности: интерфейсно-ориентированный удаленный вызов методов, интеллектуальную отказоустойчивость и балансировку нагрузки, а также автоматическую регистрацию и обнаружение служб.
В этом сравнении кажется, что образец, который мы написали в прошлой статье, слаб.
② что может даббо
③ Архитектура даббо
Provider:服务提供者,我们的service,实际执行业务逻辑的服务层
Consumer:服务消费者,对service进行调用,不关注service的具体实现的应用层
Register:注册中心,存储Provider,Consumer信息的中介
Monitor:监控中心,dubbo负责收集服务调用信息的监控中心
Если вы это знаете заранее, вы должны прочитать это на официальном сайте init — это инициализация, async — это асинхронность, а sync — это синхронизация. Нетрудно заметить, что все фреймворки RPC неотделимы от трех основных элементов, а именно от потребителей услуг и поставщиков услуг, а также от сети, которая объединяет эти роли.Без одного из них это не полноценный RPC.
Первый шаг заключается в том, что наш поставщик услуг предоставляет свою служебную информацию в реестр посредством действий по инициализации, таких как номер порта, протокол, версия, параметр, интерфейс, метод или возвращаемое значение и другую базовую информацию. , поставщик услуг рассматривает свидание вслепую как женщину, и эти объекты должны передать свою основную информацию свахе, чтобы потребитель услуги (мужчина) знал.Помогите обратить внимание на девушку, которая ему нравится, и уведомите его, если он встретится требованиям, поэтому подписывайтесь на мужчину, который просит сваху помочь обратить внимание на действия подходящей женщины
Но информация о статусе девушки не статична, поэтому мужчине также необходимо получить динамику женщины асинхронно, и эта динамика также сообщается реестром свахи, так что этот механизм здесь нетрудно догадаться, он реализован с помощью механизма часов зоопарка. , вызов аналогичен процессу их общения
Монитор аналогичен потребительскому соглашению страны 315. Каков эффект от этой услуги? Давайте проведем исследование
④ Процесс вызова dubbo
1. Сервисный контейнер отвечает за запуск, загрузку и работу сервис-провайдера.
2. Когда поставщик услуг запускается, он регистрирует предоставляемую им услугу в реестре.
3. Когда потребитель услуг запускается, он подписывается в центре регистрации на нужные ему услуги.
4. Регистрация центра Возвращает список адресов поставщиков услуг потребителям.Если есть какие-либо изменения, реестр будет передавать данные об изменениях потребителям на основе длительного соединения.
5. Потребитель услуги выбирает провайдера для вызова из списка адресов провайдера на основе алгоритма мягкой балансировки нагрузки.Если вызов не удался, выберите другого провайдера для вызова
6. Потребители услуг и поставщики услуг накапливают в памяти количество вызовов и время разговора и регулярно отправляют статистические данные в центр мониторинга.
⑤ Архитектурные особенности даббо
dubbo обладает следующими характеристиками: возможностью подключения, надежностью, масштабируемостью и возможностью обновления.
Связность: я только что упомянул, что есть две основные асинхронные операции, одна — изменение адреса службы подписки, а другая — выполнение центра мониторинга асинхронно, что показывает, что во время работы нашей программы центр регистрации или центр мониторинга. Отбой не повлияет на ход нашей программы, точно так же, как мужчина получил номер телефона женщины, так что мужчина может естественным образом связаться с женщиной, и не имеет значения, что женщина внезапно набирает вес. или два, или простуда, или лихорадка. Сбой центра мониторинга повлияет только на некоторые из наших собранных данных и не повлияет на программу.
Надежность: это было упомянуто бесчисленное количество раз в предыдущем zookeeper, и сбой узла не влияет на работу других узлов в кластере.
Возможность обновления: это идея управления услугами, которая обеспечивает функцию автоматического увеличения количества серверов для обработки внезапного увеличения количества запросов.
⑥ Зависимость даббо
Обязательно: JDK1.6+, теоретически, dubbo может полагаться только на JDK, а не на другие сторонние библиотеки для запуска, вам необходимо настроить стратегии реализации, связанные с JDK.
дефолт:
⑦ Как пользоваться даббо
服务提供端:
1.独立的服务(普通的java程序形式)
2.集成在应用中(在应用中增加远程服务能力)
消费客户端
1.在应用中调用远程服务
2.在服务1提供者中调用远程服务
⑧ Три метода настройки dubbo
1. Используйте аннотации даббо
Он относительно прост в использовании, но навязчив: ему нужно реализовать аннотации, предоставляемые dubbo, в классе реализации.
2. Интеграция Spring XML (используется больше)
Его относительно сложно использовать, он может быть неинвазивным и удобен для использования других сред RPC в будущем.
3. Способ использования нативного API
Процесс программирования очень сложен, обычно используется только для тестирования открытых сценариев API.
⑨ Как пользоваться даббо
1. Ввести зависимости, связанные с dubbo
2. Настройте структуру dubbo (то есть три метода, упомянутых в ⑧).
3. Разработка и настройка сервиса
4. Начать и позвонить
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.32.Final</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.6</version>
</dependency>
finally
Есть также небольшие партнеры, которые сообщили, что я разместил слишком много кода, потому что на этот раз образец является более необязательным, что избавляет от проблем. Проблему места давно критикуют, а более подробный контент - это тоже оставить статью, а потом рассказать об этом (много кода...)
Далее: Подробное объяснение и настройка основных функций dubbo