<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Springboot整合Apache Dubbo

          共 7175字,需瀏覽 15分鐘

           ·

          2020-09-06 15:35

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號”

          優(yōu)質(zhì)文章,第一時間送達(dá)

          66套java從入門到精通實(shí)戰(zhàn)課程分享?

          一、 通過Docker安裝Zookeeper

          docker-composeyaml文件

          version: '3'
          services:
          ??zookeeper:
          ????image: zookeeper:3.6.1
          ????container_name: zookeeper
          ????restart: always
          ????ports:
          ??????- 2181:2181
          ????volumes:
          ??????- ./zookeeper/data:/data
          ??????- ./zookeeper/log:/datalog
          ????networks:
          ??????- zk-esnet
          networks:
          ??zk-esnet:
          ????driver: bridge

          啟動執(zhí)行:

          docker-compose up?-d # 后臺啟動

          二、整合springboot和Apache Dubbo

          2.1、創(chuàng)建一個maven項(xiàng)目

          項(xiàng)目結(jié)果如圖:

          2.2、引入依賴

          root模塊的pom文件

          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.0modelVersion>


          ????
          ????<parent>
          ????????<groupId>org.springframework.bootgroupId>

          ????????<artifactId>spring-boot-starter-parentartifactId>
          ????????<version>2.3.2.RELEASEversion>
          ????parent>

          ????<groupId>com.codegroupId>
          ????<artifactId>code-oneartifactId>
          ????<packaging>pompackaging>
          ????<version>1.0.0version>
          ???
          ????
          ????<modules>
          ????????<module>dubbo-providermodule>
          ????????<module>dubbo-consumermodule>
          ????modules>

          ????<dependencies>
          ????????
          ????????<dependency>
          ????????????<groupId>org.springframework.bootgroupId>
          ????????????<artifactId>spring-boot-starter-testartifactId>
          ????????????<scope>testscope>
          ????????dependency>
          ????????
          ????????<dependency>
          ????????????<groupId>org.apache.dubbogroupId>
          ????????????<artifactId>dubbo-spring-boot-starterartifactId>
          ????????????<version>2.7.8version>
          ????????dependency>
          ????????
          ????????<dependency>
          ????????????<groupId>org.apache.dubbogroupId>
          ????????????<artifactId>dubbo-dependencies-zookeeperartifactId>
          ????????????<version>2.7.8version>
          ????????????<type>pomtype>
          ????????dependency>
          ????dependencies>

          ????<build>
          ????????<plugins>
          ????????????<plugin>
          ????????????????<groupId>org.springframework.bootgroupId>
          ????????????????<artifactId>spring-boot-maven-pluginartifactId>
          ????????????plugin>
          ????????plugins>
          ????build>
          project>

          服務(wù)提供者模塊的pom文件

          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">

          ????<parent>
          ????????<artifactId>code-oneartifactId>

          ????????<groupId>com.codegroupId>

          ????????<version>1.0.0version>
          ????parent>
          ????<modelVersion>4.0.0modelVersion>

          ????<artifactId>dubbo-providerartifactId>

          ????<dependencies>
          ????????<dependency>
          ????????????<groupId>org.springframework.bootgroupId>
          ????????????<artifactId>spring-boot-starterartifactId>
          ????????dependency>
          ????????<dependency>
          ????????????<groupId>org.apache.commonsgroupId>
          ????????????<artifactId>commons-lang3artifactId>
          ????????dependency>
          ????dependencies>
          project>

          服務(wù)消費(fèi)者模塊的pom文件

          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">

          ????<parent>
          ????????<artifactId>code-oneartifactId>

          ????????<groupId>com.codegroupId>

          ????????<version>1.0.0version>
          ????parent>
          ????<modelVersion>4.0.0modelVersion>

          ????<artifactId>dubbo-consumerartifactId>

          ????<dependencies>
          ????????<dependency>
          ????????????<groupId>org.springframework.bootgroupId>
          ????????????<artifactId>spring-boot-starter-webartifactId>
          ????????dependency>
          ????????<dependency>
          ????????????<groupId>com.codegroupId>
          ????????????<artifactId>dubbo-providerartifactId>
          ????????????<version>1.0.0version>
          ????????dependency>
          ????????<dependency>
          ????????????<groupId>org.apache.commonsgroupId>
          ????????????<artifactId>commons-lang3artifactId>
          ????????dependency>
          ????dependencies>
          project>
          2.3、添加服務(wù)提供者相關(guān)代碼

          添加一個實(shí)體類:(必須實(shí)現(xiàn)序列化接口)

          package?com.dubbo.entity;

          import?java.io.Serializable;

          /**
          ?* @author?墨龍吟之天問
          ?*/

          public?class?User?implements?Serializable?{

          ????private?static?final?long?serialVersionUID = 565515108558415476L;

          ????private?Long id;

          ????private?String username;

          ????private?String password;

          ????private?Integer age;

          ??// ... set / get ...

          ????@Override
          ????public?String toString()?{
          ????????return?"User["?+
          ????????????????"id:"?+ id +
          ????????????????", username:'"?+ username + '\''?+
          ????????????????", password:'"?+ password + '\''?+
          ????????????????", age:"?+ age +
          ????????????????']';
          ????}
          }

          添加service接口和實(shí)現(xiàn)

          import?com.dubbo.entity.User;
          import?java.util.List;

          /**
          ?* @author?墨龍吟之天問
          ?*/

          public?interface?UserService?{
          ????/**
          ?????* 查詢列表
          ?????* @return
          ?????*/

          ????List queryLists();
          }


          import?org.apache.commons.lang3.RandomStringUtils;
          import?org.apache.dubbo.config.annotation.DubboService;
          import?com.dubbo.entity.User;
          import?com.dubbo.service.UserService;
          import?java.util.ArrayList;
          import?java.util.List;

          /**
          ?* UserService的實(shí)現(xiàn)類
          ?* @author?墨龍吟之天問
          ?*/

          @DubboService(version = "${dubbo.service.version}")
          public?class?UserServiceImpl?implements?UserService?{
          ????@Override
          ????public?List queryLists()?{
          ????????// 構(gòu)造一手假數(shù)據(jù)
          ????????List users = new?ArrayList<>();
          ????????for?(int?i = 0; i < 10; i++) {
          ????????????User user = new?User();
          ????????????user.setAge(i * 10);
          ????????????user.setId((long) i);
          ????????????user.setPassword(RandomStringUtils.randomAlphanumeric(10));
          ????????????user.setUsername(RandomStringUtils.randomAlphabetic(5));
          ????????????users.add(user);
          ????????}
          ????????return?users;
          ????}
          }

          添加啟動類和配置文件

          import?org.springframework.boot.SpringApplication;
          import?org.springframework.boot.autoconfigure.SpringBootApplication;

          /**
          ?* @author?墨龍吟之天問
          ?*/

          @SpringBootApplication
          public?class?ProviderApplication?{

          ????public?static?void?main(String[] args)?{
          ????????SpringApplication.run(ProviderApplication.class);
          ????}
          }


          server:
          ??port: 7777
          spring:
          ??application:
          ????name: dubbo-provider-service
          dubbo:
          ??service:
          ????version: 1.0.0
          ??application:
          ????name: dubbo-provider-service
          ??scan:
          ????base-packages: com.dubbo.service.impl
          ??# 注冊中心的地址
          ??registry:
          ????address: zookeeper://192.168.31.25:2181
          ??protocol:
          ????name: dubbo
          ????port: 20880
          2.4、添加服務(wù)消費(fèi)者者相關(guān)代碼

          編寫一個controller來調(diào)用遠(yuǎn)程service

          import?com.dubbo.entity.User;
          import?com.dubbo.service.UserService;
          import?org.apache.dubbo.config.annotation.DubboReference;
          import?org.springframework.web.bind.annotation.GetMapping;
          import?org.springframework.web.bind.annotation.RestController;

          import?java.util.List;

          /**
          ?* @author 墨龍吟之天問
          ?*/

          @RestController
          public class IndexController {

          ????@DubboReference(version?= "${dubbo.service.version}", loadbalance = "roundrobin")
          ????private UserService userService;


          ????@GetMapping("/user")
          ????public List index() {
          ????????return?userService.queryLists();
          ????}

          }

          編寫配置文件將服務(wù)提供者的服務(wù)注冊到zookeeper中,然后寫一個配置文件

          import?org.springframework.boot.SpringApplication;
          import?org.springframework.boot.autoconfigure.SpringBootApplication;

          /**
          ?* @author?墨龍吟之天問
          ?*/

          @SpringBootApplication
          public?class?ConsumerApplication?{

          ????public?static?void?main(String[] args)?{
          ????????SpringApplication.run(ConsumerApplication.class);
          ????}

          }


          server:
          ??port: 7778
          spring:
          ??application:
          ????name: dubbo-consumer-service
          dubbo:
          ??service:
          ????version: 1.0.0
          ??application:
          ????name: dubbo-consumer-service
          ??registry:
          ????address: zookeeper://192.168.31.25:2181
          2.5、啟動服務(wù)

          將IDEA的儀表板(dashboard)啟動,這個可以方便我們?nèi)ソy(tǒng)一管理服務(wù)。
          訪問接口:localhost:7778/user

          [
          ????{"id":0,"username":"oBhxn","password":"5VIogUrCG3","age":0}, {"id":1,"username":"DqYti","password":"XDShtZrszU","age":10}, {"id":2,"username":"FvRTn","password":"S7hug0oRWz","age":20}, {"id":3,"username":"BMVRN","password":"apwhk8llZw","age":30}, {"id":4,"username":"vHnWF","password":"14fp8mWbs8","age":40}, {"id":5,"username":"SNHkl","password":"hA5J0509YY","age":50}, {"id":6,"username":"yOAtC","password":"NQo50bo9mq","age":60}, {"id":7,"username":"QrgpW","password":"S49VOeOrk3","age":70}, {"id":8,"username":"zJSXK","password":"rR31TAuXJA","age":80}, {"id":9,"username":"TwQMM","password":"3Y3c0JlcpJ","age":90}
          ]

          三、zookeeper和dubbo一些工具

          3.1、zookeeper監(jiān)控工具:ZooInspector

          下載地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

          解壓之后的build目錄下有一個start.bat的腳本,雙擊啟動。

          連接之后就可以看到我們注冊的服務(wù)了

          這個版本比較舊,新版本的下載地址就在后面連接里面。

          鏈接:https://pan.baidu.com/s/1jk5a1Wv_PPkQaJ8rmZERog
          提取碼:kqh4

          3.2、Dubbo監(jiān)控工具dubbo-admin

          這個工具我們依然在docker中啟動,我們在上面那個docker-compose.yml文件中增加一個apache-dubbo-admin的容器。

          version: '3'
          services:
          ??zookeeper:
          ????image: zookeeper:3.6.1
          ????container_name: zookeeper
          ????restart:?always
          ????ports:
          ??????- 2181:2181
          ????volumes:
          ??????- ./zookeeper/data:/data
          ??????- ./zookeeper/log:/datalog
          ????networks:
          ??????- zk-esnet
          ??dubbo-admin:
          ????container_name: dubbo-admin
          ????image: apache/dubbo-admin
          ????links:
          ??????- zookeeper:zookeeper
          ????depends_on:
          ??????- zookeeper
          ????ports:
          ??????- "8080:8080"
          ????environment:
          ??????- admin.registry.address=zookeeper://zookeeper:2181
          ??????- admin.config-center=zookeeper://zookeeper:2181
          ??????- admin.metadata-report.address=zookeeper://zookeeper:2181
          ????restart:?always
          ????networks:
          ??????- zk-net
          networks:
          ??zk-esnet:
          ????driver: bridge

          啟動之后訪問:IP:8080就可以進(jìn)入管理頁面



          版權(quán)聲明:本文為博主原創(chuàng)文章,遵循?CC 4.0 BY-SA?版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。

          本文鏈接:

          https://blog.csdn.net/yhflyl/article/details/108304643


          粉絲福利:108本java從入門到大神精選電子書領(lǐng)取

          ???

          ?長按上方鋒哥微信二維碼?2 秒
          備注「1234」即可獲取資料以及
          可以進(jìn)入java1234官方微信群



          感謝點(diǎn)贊支持下哈?

          瀏覽 64
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  波多野结衣做爱视频 | 日皮视频免费在线观看 | 大屌操逼视频爽 | 亚洲香蕉影院视频在线 | 豆花无码视频 |