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>

        spring-boot整合dubbo相關(guān)知識點補充

        共 12373字,需瀏覽 25分鐘

         ·

        2021-08-14 08:49


        前言

        昨天我們分享了spring-boot整合dubbo的相關(guān)內(nèi)容,不過準(zhǔn)確地說,應(yīng)該是和spring整合,因為我們其實并沒有用dubbostarter,而是通過注解的方式把dubbo的相關(guān)配置注入到springioc容器中。

        這種方式只是省去了xml配置的繁瑣配置,改成了注解的方式,本質(zhì)上只能算web層面的集成,因為spring-boot的核心在stater,starter的核心在自動配置,關(guān)于定制自己的spring-starter我們前面有分享過,感興趣的小伙伴可以去看下:

        不過,這對不喜歡xml配置的小伙伴來說(我算其中有一個,當(dāng)然xml有其優(yōu)勢),已經(jīng)算福音了。好了,廢話就說這么多,今天我們來對昨天的內(nèi)容做一個簡單的補充說明,由于昨天的內(nèi)容過于繁雜,而且內(nèi)容有點多,好多細節(jié)的知識點,沒有在展開說明,下面我們就來對這些知識點做一個說明。

        dubbo內(nèi)容補充

        配置

        dubbo的配置主要有三部分,一部分是注冊中心的相關(guān)配置,一部分是應(yīng)用本身的配置,另外一部分是注冊中心的配置。今天主要說明前兩種配置,注冊中心的配置暫時先不講。

        服務(wù)注冊配置

        服務(wù)注冊的配置還是比較多的,下面是RegistryConfig的屬性:

          // 注冊中心地址
            private String address;
         // 注冊中心用戶名
            private String username;
         // 注冊中心登錄密碼
            private String password;
         // 注冊中心端口
            private Integer port;
         // 注冊中心協(xié)議
            private String protocol;
         // 網(wǎng)絡(luò)傳輸類型
            private String transporter;
         // 具體作用不詳
            private String server;
         // 注冊中心客戶端類型
            private String client;
            /**
            * 集群類型
            * 影響流量在注冊中心之間的分布方式,在訂閱多個注冊中心時非常有用,可用選項:
            * 1.zone-aware,根據(jù)流量的來源,特定類型的流量始終進入一個注冊表。
            */

            private String cluster;
            /**
             * 注冊中心所屬的區(qū)域,通常用于隔離流量
             */

            private String zone;
            /**
             * 服務(wù)所屬組
             */

            private String group;
         /**
         * 服務(wù)版本
         */

            private String version;
            /**
             * 注冊中心請求超時時間,單位毫秒
             */

            private Integer timeout;
            /**
             * 注冊中心會話超時時間,單位毫秒
             */

            private Integer session;
            /**
             * 保存注冊中心動態(tài)列表的文件
             */

            private String file;
            /**
             * 停止服務(wù)等待時間
             */

            private Integer wait;
            /**
             * 啟動時是否檢查注冊中心是否可用
             */

            private Boolean check;
            /**
             * 是否允許動態(tài)服務(wù)在注冊中心注冊
             */

            private Boolean dynamic;
            /**
             * 是否在注冊中心導(dǎo)出服務(wù)
             */

            private Boolean register;
            /**
             * 是否允許在注冊中心訂閱服務(wù)
             */

            private Boolean subscribe;
            /**
             * 自定義參數(shù)
             */

            private Map<String, String> parameters;

            /**
             * 是否為默認(rèn)注冊中心
             */

            private Boolean isDefault;
            /**
             * 簡化注冊。對提供者和使用者都很有用
             *
             * @since 2.7.0
             */

            private Boolean simplified;
            /**
             * 簡化注冊表后,應(yīng)單獨添加一些參數(shù)。僅限服務(wù)提供者
             * <p>
             * such as: extra-keys = A,b,c,d
             *
             * @since 2.7.0
             */

            private String extraKeys;
            /**
             * 該地址是否作為配置中心工作
             */

            private Boolean useAsConfigCenter;
            /**
             * 該地址是否用作遠程元數(shù)據(jù)中心
             */

            private Boolean useAsMetadataCenter;
            /**
             * 此注冊中心接受的rpc協(xié)議列表,例如,“dubbo,rest”
             */

            private String accepts;
            /**
             * 如果設(shè)置為true,則始終首先使用此注冊中心,在訂閱多個注冊表時非常有用
             */

            private Boolean preferred;

            /**
            * 請求權(quán)重(集群)
         * 影響注冊中心間的流量分布,在訂閱多個注冊中時非常有用
         * 僅在未指定首選注冊表時生效。
         */

            private Integer weight;

        以上配置只有addressclient是必須配置的,其余的都是可以不配置的,下面我們選一些常用的屬性簡單介紹下:

        • address:注冊中心地址,以zk為例的話,就是:zookeeper://127.0.0.1:2181;

        • client:客戶端類型,對2.7.1之后的版本,如果注冊中心是zkd的話,只能是curator

        • usernamepassword:這個應(yīng)該不用解釋了,zk應(yīng)該不用配置這個

        • port:這個端口,目前沒發(fā)現(xiàn)有啥用,畢竟地址里面已經(jīng)包含端口了

        • protocol:注冊中心支持的協(xié)議類型,我發(fā)現(xiàn)dubbo支持的類型還挺多的,包括dubborest、http、redis等,具體大家可以看下圖:

        • transporter:網(wǎng)絡(luò)傳輸協(xié)議也比較多,默認(rèn)應(yīng)該是netty,因為dubbo默認(rèn)引入了netty的包

        • group:注冊的服務(wù)默認(rèn)情況下(不指定group)所屬服務(wù)組。通常我們在注冊服務(wù)的時候,會指定服務(wù)所屬服務(wù)組,如果你不指定所屬服務(wù)組,則會取當(dāng)前設(shè)置的值,這個配置的默認(rèn)值目前還沒研究

        • version:這個配置和group類似,不過這個設(shè)定的是服務(wù)的版本,如果不指定就會取該值,這個值可以在服務(wù)注冊時設(shè)定,但是設(shè)定的只是單個服務(wù)的版本

        • timeout:這個設(shè)置的是rpc請求的超時時間,也是個默認(rèn)值,這個值可以在服務(wù)注冊的時候指定,如果你不指定,就會取這個值

        應(yīng)用配置
            /**
             * 應(yīng)用名稱
             */

            private String name;

            /**
             * 應(yīng)用版本
             */

            private String version;

            /**
             * 應(yīng)用所屬者
             */

            private String owner;

            /**
             * 應(yīng)用所屬組織
             */

            private String organization;

            /**
             * 應(yīng)用架構(gòu)
             */

            private String architecture;

            /**
             * 環(huán)境 例如:dev 、test 或者 production
             */

            private String environment;

            /**
             * Java 編譯版本
             */

            private String compiler;

            /**
             * 日志等級
             */

            private String logger;

            /**
             * 注冊中心列表
             */

            private List<RegistryConfig> registries;
            private String registryIds;

            /**
             * 監(jiān)控中心
             */

            private MonitorConfig monitor;

            /**
             * 是否為默認(rèn)
             */

            private Boolean isDefault;

            /**
             * thread dump保存地址
             */

            private String dumpDirectory;

            /**
             * 是否啟用qos
             */

            private Boolean qosEnable;

            /**
             * qos監(jiān)聽主機地址
             */

            private String qosHost;

            /**
             * qos監(jiān)聽端口
             */

            private Integer qosPort;

            /**
             * 是否允許外網(wǎng)訪問
             */

            private Boolean qosAcceptForeignIp;

            /**
             * 自定義參數(shù)
             */

            private Map<String, String> parameters;

            /**
             * 服務(wù)停止等待時間
             */

            private String shutwait;

            private String hostname;

            /**
             * 元數(shù)據(jù)類型:local 或者 remote, 如果選擇remote, 還需要指定元數(shù)據(jù)中心
             */

            private String metadataType;

            private Boolean registerConsumer;

            private String repository;

        應(yīng)用配置,只有name是必須的,其他都是非必須的。注釋也很詳細了,這里就不作過多說明了。

        消費者配置

        消費者的配置和提供者配置一樣,所以這里我們就不再贅述。

        注入配置

        前天我們的演示實例中,我們是直接把配置項寫死的,今天我們來看下如何通過配置文件設(shè)定我我們的配置。

        首先,我們在spring-bootappliaction.properties中加入dubbo的配置:

        # dubbo應(yīng)用配置
        # dubbo應(yīng)用名稱
        application.dubbo.application.name=dubbo-server
        # dubbo注冊配置
        # dubbo注冊中心地址
        application.dubbo.registry.address=zookeeper://127.0.0.1:2181
        # dubbo注冊中心類型
        application.dubbo.registry.client=curator
        #application.dubbo.registry.username=dubbo
        #application.dubbo.registry.password=dubbo
        #application.dubbo.registry.port=20880
        #application.dubbo.registry.protocol=20880
        #application.dubbo.registry.transporter=20880
        #application.dubbo.registry.cluster=20880d
        #application.dubbo.registry.zone=20880d
        #application.dubbo.registry.group=20880d
        #application.dubbo.registry.version=1.0
        #application.dubbo.registry.timeout=60000
        #application.dubbo.registry.session=30000
        #application.dubbo.registry.file=20880d
        #application.dubbo.registry.wait=30000
        #application.dubbo.registry.check=true
        #application.dubbo.registry.dynamic=true
        #application.dubbo.registry.register=true
        #application.dubbo.registry.subscribe=true
        #application.dubbo.registry.parameters.name=syske
        #application.dubbo.registry.default=true
        #application.dubbo.registry.simplified=true
        #application.dubbo.registry.extraKeys=true
        #application.dubbo.registry.useAsConfigCenter=true
        #application.dubbo.registry.useAsMetadataCenter=true
        #application.dubbo.registry.accepts=true
        #application.dubbo.registry.preferred=true
        #application.dubbo.registry.weight=10

        然后在dubbo的配置類,加入如下代碼:

        @Bean
        @ConfigurationProperties(ignoreUnknownFields = false, prefix = "application.dubbo.application")
        public ApplicationConfig applicationConfig() {
            ApplicationConfig applicationConfig = new ApplicationConfig();
            return applicationConfig;
        }

        @Bean
        @ConfigurationProperties(ignoreUnknownFields = false, prefix = "application.dubbo.registry")
        public RegistryConfig registryConfig() {
            RegistryConfig registryConfig = new RegistryConfig();
            return registryConfig;
        }

        這里簡單介紹下,@ConfigurationProperties注解可以和@Bean組合使用,這樣在創(chuàng)建bean的時候,就可以把我們的配置文件直接注入到我們bean的屬性中,確實也很方便。

        需要注意的是,prefix的前綴必須與properties中的配置相對應(yīng),否則配置無法被注入。

        另一個需要注意的是,如果配置項是isXXX,則需要確認(rèn)isXXX的設(shè)置方法是否是setIsXXX,如果是,properties配置就可以寫成isXXX,總之要和set方法一致,否則會報錯:

        注解

        注解這塊主要有兩個注解注解比較重要,一個@DubboService,一個是@Reference

        DubboService

        @DubboService注解是2.7.7引入的,其主要作用就是為了標(biāo)記和配置服務(wù)提供者,它的前任是@Service,這個注解也算是個新人,它是2.7.0引入的,從注解屬性上看,他們沒有本質(zhì)區(qū)別,@Service目前已經(jīng)被棄用,我猜測棄用應(yīng)該是注解名稱太容易被混淆了,不利于服務(wù)代碼開發(fā)維護,畢竟spring的原生注解也就@Service

        文檔也說的很清楚,DubboServiceSerivce的繼任者。

        DubboReference

        @Reference注解也是dubbo 2.7.7引入的,主要是用來發(fā)現(xiàn)服務(wù)的,也就是標(biāo)記服務(wù)消費者。這個注解的繼任者是Reference,也是2.7.0引入的。

        說明,在dubbo 2.7.0之前的版本是不支持注解式配置,而且我發(fā)現(xiàn)2.7.0以前的版本是屬于com.alibaba這個groupId的,之后的版本是org.apache.dubbo這個groupId的,這是因為在2.7.0之后,阿里巴巴把dubbo捐獻給apache基金會了,現(xiàn)在它是apache旗下的頂級項目之一。

        總結(jié)

        dubbo的知識點還是比較多的,算上今天我們補充的內(nèi)容,我們目前已經(jīng)分享的內(nèi)容也只能算冰山一角的一角,但是到今天我們也算對dubbo有了一個最基本的認(rèn)知了,從項目創(chuàng)建,到項目啟動,再到項目配置,整個流程我們應(yīng)該已經(jīng)比較熟悉了,如果有小伙伴已經(jīng)忘記了,可以回顧下之前的內(nèi)容,至于其他更復(fù)雜的配置和高級用法,我們在后面的學(xué)習(xí)過程中,會繼續(xù)分享,繼續(xù)深挖。好了,今天的內(nèi)容就到這里吧!

        - END -


        瀏覽 60
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        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>
            草逼欧美 | 在线免费观看成人A片 | 张柏芝亚洲一区二区三区 | 91久久爽无码人妻AⅤ精品牛牛 | 青娱乐青青草视频 | 高潮孕妇videosexfreexxxx | 欧美18hd | 十种让男人爽到叫的方法 | 操逼挺好我看看 | 97人人操人人 |