1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        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ī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            范冰冰的毛片bbw | 友田真希艳妇乳肉豪妇肉乳ⅹxx | 看国产毛片 | cao死你个小sao货湿透了视频 | 波多野结衣成人视频 | 成人午夜激情 | 中国一级AV | 色色日| 亚洲五月综合 | 亚洲不卡免费视频 |