Даббо
Отношения между Dubbo и RPC
Dubbo — это платформа распределенных сервисов с открытым исходным кодом, разработанная Alibaba. Он обеспечивает высокопроизводительную связь RPC (удаленный вызов процедур) и возможности управления службами для приложений, позволяя приложениям быстро создавать высоконадежные и масштабируемые службы в распределенной среде. Основные функции Dubbo включают регистрацию и обнаружение сервисов, балансировку нагрузки, вызов сервисов и отказоустойчивость и т. д. Он подходит для общения на нескольких языках и в нескольких гетерогенных средах. Dubbo использует блокирующий ввод-вывод и пул потоков для достижения высокого параллелизма, а также поддерживает расширение нескольких протоколов и форматов сериализации. Его экосистема становится все более совершенной, а его пользовательское сообщество активным, он широко используется в веб-приложениях, корпоративном промежуточном программном обеспечении, больших данных и других областях.
Ядро Даббо
Ядро Dubbo включает в себя:
- Удаленная связь: Dubbo предоставляет различные протоколы удаленной связи, такие как протокол Dubbo, протокол Http , протокол RMI и т. д. Среди них протокол Dubbo — это двоичный высокопроизводительный протокол связи RPC, поставляемый с Dubbo.Он имеет низкие издержки на сериализацию и десериализацию и подходит для связи служб с высокой степенью параллелизма и большими объемами данных.
- Отказоустойчивость кластера: Когда потребители Dubbo инициируют вызовы службы, Dubbo предлагает различные стратегии отказоустойчивости кластера, такие как Failover, Failfast, Failsafe, Failback и т. д. Отказоустойчивость — это стандартная отказоустойчивая стратегия кластера Dubbo, которая автоматически переключается на другие доступные узлы для совершения вызовов, когда поставщик услуг совершает ошибку или истекает время ожидания, обеспечивая надежность вызова.
- Автоматическое обнаружение: чтобы облегчить управление многими поставщиками услуг, Dubbo предоставляет центр регистрации в качестве инструмента централизованного управления для регистрации и обнаружения услуг. Dubbo поддерживает несколько реестров, таких как ZooKeeper, Redis, Consul, Etcd и т. д. Через центр регистрации потребители услуг могут автоматически обнаруживать доступных поставщиков услуг без ручной настройки адресов поставщиков услуг, что значительно снижает сложность обращений за услугами.
Разница между Dubbo и Spring Cloud
Dubbo — это высокопроизводительная среда RPC, которая в основном используется для управления службами и взаимодействия служб в рамках архитектуры микрослужб. Он может легко расширять службы и улучшать производительность и масштабируемость системы.
Spring Cloud — это полноценная среда микрослужб, которая предоставляет полный набор решений для среды микрослужб, включая регистрацию и обнаружение служб, центр конфигурации, балансировку нагрузки, автоматический выключатель, маршрутизацию и т. д., что является более комплексным, чем Dubbo.
Углубленное понимание: сравнение фреймворка микросервисов: Spring Cloud и Dubbo
узел Даббо
- Поставщик: опубликуйте службу, зарегистрируйте службу в реестре и дождитесь звонка потребителя.
- Потребитель: подписывайтесь на услуги из реестра, общайтесь с поставщиками услуг и потребляйте услуги.
- Реестр: записывает информацию о поставщиках услуг, а также об отношениях между поставщиками услуг и потребителями услуг и помогает потребителям обнаруживать доступные экземпляры услуг.
- Мониторинг: собирайте показатели производительности узлов Dubbo, статистику вызовов службы и т. д., чтобы персонал по эксплуатации и техническому обслуживанию мог осуществлять мониторинг и управление.
- Контейнер: работающий контейнер службы.
Фреймворк Даббо
Фреймворк Dubbo включает в себя:
- Единая структура приложения: подходит для случаев, когда трафик невелик
- Вертикальная структура приложений: применима при большом трафике
- Распределенная сервисная архитектура: подходит для случаев, когда существует множество вертикальных архитектур приложений.
- Архитектура потоковых вычислений: когда трафик чрезвычайно велик, необходим диспетчерский центр
Даббо сервис
Определение интерфейса Дуббо
Мы можем написать метод sayHello.
/** * xml方式服务提供者接口 */ public interface ProviderService { String SayHello(String word); }
Затем определите его класс реализации.
/** * xml方式服务提供者实现类 */ public class ProviderServiceImpl implements ProviderService{ public String SayHello(String word) { return word; } }
Затем импортируйте зависимости maven.
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ouyangsihai</groupId> <artifactId>dubbo-provider</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- https: //mvnrepository.com/artifact/com.alibaba/dubbo --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.6.6</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.5</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.32.Final</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.8.0</version> </dependency> </dependencies> </project>
Опубликовать интерфейс Dubbo
После написания интерфейса его необходимо опубликовать, чтобы к интерфейсу можно было получить доступ.
package com.sihai.dubbo.provider; import com.alibaba.dubbo.config.ApplicationConfig; import com.alibaba.dubbo.config.ProtocolConfig; import com.alibaba.dubbo.config.RegistryConfig; import com.alibaba.dubbo.config.ServiceConfig; import com.alibaba.dubbo.container.Main; import com.sihai.dubbo.provider.service.ProviderService; import com.sihai.dubbo.provider.service.ProviderServiceImpl; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.io.IOException; /** * xml方式启动 * */ public class App { public static void main( String[] args ) throws IOException { //加载xml配置文件启动 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring/provider.xml"); context.start(); System.in.read(); // 按任意键退出 } }
Запустите службу Дуббо
Последнее, что нужно сделать, это запустить службу Dubbo.Если вы видите следующий журнал, это означает, что запуск прошел успешно.
![](https://img-blog.csdnimg.cn/img_convert/1fdbf5b20b453e0eb744e2e92ca58da8.png)
Расширение знаний:
- Сравнение распределенной инфраструктуры RPC: dubbo, dubbox, motan, thrift, grpc
- Глубокое понимание Dubbo: подробное объяснение принципов и механизмов