Предисловие
С разработкой Интернета масштаб приложений веб -сайтов был непрерывно расширен, а обычные архитектуры вертикальных приложений больше не могут с ним справляться. Распределенная архитектура сервиса и архитектура мобильных вычислений являются обязательными. Dubbo - это распределенная структура обслуживания, которая родилась в этом случае. Теперь основной бизнес извлекается в качестве независимой услуги, так что приложения для фронта могут реагировать быстрее и стабильно.
Что такое Даббо
Dubbo - это распределенная платформа сервиса с открытым исходным кодом Alibaba. Его самая большая особенность заключается в том, что он структурирован многоуровневым образом. Этот метод может отделять (или максимизировать свободную связь) между слоями. С точки зрения модели обслуживания, Дуббо принимает очень простую модель, либо поставщик предоставляет услуги, либо потребитель потребляет услуги. Поэтому, исходя из этого, мы можем абстрагировать две роли поставщика услуг и потребителя услуг. О регистрационном центре, поддержке соглашения, мониторинге обслуживания и другое содержимое
Что может сделать Дуббо
Когда веб -сайт становится больше, неизбежно, что приложение будет разделено и обслуживается (микросервисы), чтобы повысить эффективность разработки, оптимизацию производительности, экономии ключевых конкурентных ресурсов и т. Д.
По мере того, как все больше и больше сервисов информация о адресах URL -адреса службы взорвется, управление конфигурацией становится очень сложной, а одно точечное давление аппаратного балансировщика F5 нагрузки становится все больше и больше.
При дальнейшей разработке зависимости межпроводного обслуживания становятся сложными и даже не могут определить, какое приложение начинается до какого приложения, архитекторы не могут полностью описать архитектурные отношения приложения.
Затем количество вызовов услуг становится все больше и больше, а проблема с пропускной способностью выявляется. Сколько нужно поддержать машинную поддержку этой услуге? Когда я должен добавить машину? и т. д……
При столкновении с этими проблемами вы можете использовать Dubbo для их решения.
На этот раз я делюсь с вами, так это начальная конфигурация приложения Dubbo Framework и использование Центра регистрации Zookeeper; Когда дело доходит до регистрационного центра, я использовал только два типа вещей: Zookeeper и Eureka. Я использую ZK с Dubbo и Eureka с SpringCloud. Поэтому я поделитесь с вами некоторыми главами о микросервисах позже, надеясь, что это будет полезно для вас.
Установите регистрационный центр Zookeeper
Dubbo Framework Provider и потребитель
Развертывание Dubbo-Admin
Установите регистрационный центр Zookeeper
Прежде всего, нам нужно искать адрес загрузки Zookeeper онлайн. Я нахожусь в системе Linux, поэтому мы загрузили пакет Zookeeper-3.3.6.tar.gz и расстегнули его через TAR -ZXVF Zookeeper-3.3.6.tar.gz. Следует отметить, что файлы конфигурации в общем пакете являются примерной версией по умолчанию, а имя файла конфигурации по умолчанию Zookeeper является только Zoo.cfg. Чтобы не указывать имя файла каждый раз, нам нужно создавать файл конфигурации с именем Zoo.cfg в каталоге Conf. Содержание файла можно скопировать из Zoo_sample.cfg или переименовать файл. Содержание следующим образом vim Zoo.cfg:
# Количество миллионов секунд от каждой частоты TickTickTime = 2000 #HeartBeat # Количество клещей, которое может принять подключение # синхронизации #. Папка # порт, на котором клиенты будут подключаться
Я не буду изменять информацию о параметрах здесь и использовать по умолчанию; Кратко представьте несколько обычно используемых команд о том, как редактировать содержимое файла в Linux:
vim Zoo.cfg: Просмотреть содержимое файла
Вставка: выполнить команду вставки
ESC: отмените команду, затем нажмите: Q: Exit ,: WQ: Сохранить и выходить
Когда у нас есть Zoo.cfg, нам нужно только ввести его каталог bin, чтобы найти файл Zkserver.sh, и запустить центр регистрации Zookeeper, выполнив команду ./zkserver.sh Start. Нормальная подсказка запуска выглядит следующим образом:
Обычно Zookeeper находится на отдельном сервере в качестве регистрационного центра, и программа (здесь относится к моим локальным), необходимо вызвать другой регистрационный центр. Кроме того, регистрационный центр должен проверить, можно ли подключить открытый порт Zookeeper. Мой Local - Windows 10, поэтому вам не нужно проверять порт через клиента Zookeeper. Вам нужно только использовать Telnet IP 2081, чтобы определить, открыт ли порт;
Dubbo Framework Provider и потребитель
Прежде всего, для удобства нам нужно определить унифицированный интерфейс, который является публичным интерфейсом, извлеченным бизнесом. Мы упаковываем этот интерфейс отдельно в модуль. Вот dubbo_api. Мы определяем следующий интерфейс в этом модуле:
public interface userservice {list <mouser> getUsers (); }Затем создайте модуль поставщика, который зависит от модуля Dubbo_API и реализует интерфейс пользовательского обслуживания, код выглядит следующим образом:
открытый класс userserviceimpl реализует userservice {@Value ("$ {server.port}") private int port; / ** * @return */ @override public list <mouser> getUsers () {list <mouser> list = new ArrayList <> (); for (int i = 0; i <5; i ++) {mouser user = new mouser (); user.setusername ("shenniu" + i); user.setuserpwd ("порт:" + порт); list.add (пользователь); } return List; }}Как поставщик услуг, чтобы использовать Dubbo Framework, вам нужно сначала представить Dubbo, а затем сделать некоторую конфигурацию. Во -первых, нам нужно ввести зависимости Dubbo через Maven в модуле Dubbo_Provider. Zookeeper используется в регистрационном центре, поэтому нам также необходимо ввести соответствующие зависимости через Maven:
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.3</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.example</groupId> <artifactid> dubbo_api </artifactid> <sersive> 0.0.1-snapshot </version> </depertive>
После завершения зависимости остальное состоит в том, чтобы настроить поставщика Dubbo, создать файл конфигурации ресурсов/dubbo-conf/server.xml и содержимое файла:
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" XMLNS: dubbo = "http://code.alibabatech.com/schema/dubbo" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.spramework.org/schema/beans/spring-beans.s.s.xsspring-beans.s.xsspring-beans.s.spring-beansbeans.s.spring.s.spring.s.springbeans.s.spring-beans.s.spring-beansbeans.s. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd »> <!-Имя поставщика-> <dubbo: имя приложения =" demo-provider "/> <!-Сервисное имя рецепта рецепта Zookeeper-> <duboLe-ZoLister => <dubOlbo => <dubOlbo => <dubOlbo => <duboLe-stocistration-> <duboLe-ZoOLARE-xistration-> <duboLister. address = "192.168.168.168:2081" /> <!-Используйте Dubbo Protocol, чтобы выявить услугу на порту 20880, порт связи протокола-> <dubbo: имя протокола = "Dubbo" Port = "20880" /> <!-Интерфейс пользовательской услуги-> <dubbo: Service Interface = "Service. Реализация интерфейса-> <bean id = "userservice"/> </beans>
Добавьте ресурс Import @ImporTresource ("ClassPath: Dubbo-conf/*. XML") в портале DubboProviderApplication, и наш поставщик услуг заполнен здесь. Проверьте журнал запуска:
Нет исключения, когда начинается поставщик услуг. Давайте посмотрим на вызывающего абонента, чтобы создать модуль Dubbo_consumer, а также представим зависимости модуля общественного интерфейса Dubbo_api, а затем создадим Usercontroller и выставим пользовательский интерфейс GET:
@Restcontrollerpublic class usercontroller {@autowired private userservice userservice; @Getmapping ("/users") public list <houser> getUsers () {return userservice.getUsers (); }}Пользовательская служба здесь является инъекцией общественного интерфейса; После завершения кодирования, потребительская сторона представляет зависимости Dubbo и Zookeeper:
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.3</version> </dependency> <dependency> <groupId> com.alibaba </GroupId> <ArtifactId> dubbo </artifactid> <serse> 2.5.3 </version> <исключения> <Sclimusion> <groupId> org.springframework </GroupId> <Artifactid> spring </artifactid> </exclusion> </exclies> </regy>
Мы также создаем файл конфигурации с именем ресурсов/dubbo-conf/client.xml и вводим этот ресурс в записи приложения:
@ImporTresource ("classPath: dubbo-conf/*. Xml")@springbootapplicationpublic class dubboConsumerApplication {public static void main (string [] args) {springApplication.run (dubboConsumerApplication.class, args); }}Содержание конфигурации Client.xml выглядит следующим образом:
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" XMLNS: dubbo = "http://code.alibabatech.com/schema/dubbo" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.spramework.org/schema/beans/spring-beans.s.s.xsspring-beans.s.xsspring-beans.s.spring-beansbeans.s.spring.s.spring.s.springbeans.s.spring-beans.s.spring-beansbeans.s. http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-Название услуги-> <dubbo: name =" demo-conmumer "/> <! protocol = "Zookeeper" Address = "192.168.168.168:2081" /> <!-Интерфейс службы пользователя-> <dubbo: reference id = "userservice" interface = "service.userservice" /> < /beans>
В настоящее время завершены простой поставщик услуг, конфигурация абонента и кодировки услуг, а 3 модуля следующие:
Затем запустите поставщика и потребителя соответственно; Затем запросите интерфейс через интерфейс контроллера, выявленный потребителем. Мой адрес здесь - http: // localhost: 8082/users:
Эффект заключается в том, что потребитель получает результат, возвращаемый поставщиком через инъекционную интерфейсное вызов пользовательского обслуживания getUsers (), что также означает, что простое использование структуры Dubbo считалось успешным.
Развертывание Dubbo-Admin
Как популярный RPC Framework Dubbo имеет этот инструмент мониторинга с открытым исходным кодом Dubbo-Admin. Я должен сказать, что пакет Dubbo-admin.war, готовый в Интернете, не может быть использован сейчас или нуждается в точках CSSDN для загрузки. Есть много версий, и это немного сложно. Решительно перейдите в GIT, чтобы вытащить исходный код и упаковать его самостоятельно. Адрес GIT: https://github.com/apache/incubator-dubbo-ops. После того, как мы его вытащили, нам нужно только обратить внимание на проект Dubbo-Admin, и другие вещи могут быть проигнорированы на данный момент; После открытия проекта нам нужно только изменить следующую конфигурацию экрана (вы также можете изменить файл упакованной конфигурации):
#zookeeper Адрес и порт dubbo.registry.address = zookeeper: //127.0.0.1: 2081#Бэкэнд -пароль для лога
После выполнения пакета вы можете получить имя: Dubbo-Admin-2.0.0.war Package, затем поместить его в Tomcat и просмотрите браузер. Учетная запись и пароль оба корневые; После входа в систему вы можете увидеть поставщика и потребителя, которых мы начинали раньше. Это интерфейс службы регистрационного центра Dubbo-Admin. Вы можете напрямую нажать на эти услуги. Если вы не говорите много, попробуйте сами.
git адрес: https://github.com/shenniuboxing3 Nuget Publishing Package: https://www.nuget.org/profiles/shenniuboxing3
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.