人成在线免费视频|久久久久成人国产免费|亚洲成a人片4444|初尝人妻少妇中文字幕XX|久久综合婷婷噜噜综合网站|粉嫩小泬无遮挡久久久久久|国产精品午夜无码AV天美传媒|欧美日韩专区国产精品一区二区

  • 
    
    <center id="sdblb"></center>
    <style id="sdblb"><meter id="sdblb"></meter></style>
    <source id="sdblb"><optgroup id="sdblb"></optgroup></source>
    <center id="sdblb"></center>
    <sub id="sdblb"></sub>

      <sub id="sdblb"></sub>
        <noscript id="sdblb"><meter id="sdblb"></meter></noscript>
        資訊

        精準(zhǔn)傳達(dá) ? 有效溝通

        從品牌網(wǎng)站建設(shè)到網(wǎng)絡(luò)營銷策劃,從策略到執(zhí)行的一站式服務(wù)

        Spring Cloud Gateway實(shí)戰(zhàn)之二:更多路由配置方式

        來源:公司資訊 | 2021.08.17

        本文是《Spring Cloud Gateway實(shí)戰(zhàn)》系列的第二篇,經(jīng)過前文我們了解到Spring Cloud Gateway的中心是路由裝備,然后在本地application.yml中裝備了一條路由,但這種修改本地裝備文件的辦法缺少靈敏性,未必能滿意靈敏多變的事務(wù)需求,因此,本篇的意圖就是找出本地裝備之外的其他裝備辦法來,滿意各種實(shí)踐需求;
        總的來說以下三種辦法都是常用的:
        方針地址支撐用服務(wù)名(替代之前的IP+端口);
        支撐在nacos上裝備;
        支撐寫代碼的辦法裝備;
        別的還有一種愈加靈敏的裝備辦法:動態(tài)署理,由于涉及到不少的代碼所以會單獨(dú)出一篇文章詳細(xì)介紹
        源碼下載
        本篇實(shí)戰(zhàn)中的完整源碼可在GitHub下載到,地址和鏈接信息如下表所示(https://github.com/zq2599/blog_demos):
        名稱 鏈接 備注
        項目主頁 https://github.com/zq2599/blog_demos 該項目在GitHub上的主頁
        git庫房地址(https) https://github.com/zq2599/blog_demos.git 該項目源碼的庫房地址,https協(xié)議
        git庫房地址(ssh) git@github.com:zq2599/blog_demos.git 該項目源碼的庫房地址,ssh協(xié)議
        這個git項目中有多個文件夾,本篇的源碼在spring-cloud-tutorials文件夾下,如下圖紅框所示:

        準(zhǔn)備工作
        正式開端前需要再做一點(diǎn)準(zhǔn)備工作,整個《Spring Cloud Gateway實(shí)戰(zhàn)》系列中,一切請求最后都會被路由到provider-hello這個web上去,該服務(wù)現(xiàn)在只有一個web接口/hello/str,現(xiàn)在我們再給它添加一個,后邊的實(shí)戰(zhàn)會用到
        新添加的web接口來自LBTest.java,可見非常簡略:
        package com.bolingcavalry.provider.controller;

        import com.bolingcavalry.common.Constants;
        import org.springframework.web.bind.annotation.GetMapping;
        import org.springframework.web.bind.annotation.RequestMapping;
        import org.springframework.web.bind.annotation.RestController;
        import java.text.SimpleDateFormat;
        import java.util.Date;

        @RestController
        @RequestMapping("/lbtest")
        public class LBTest {

            private String dateStr(){
                return new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
            }

            /**
             * 回來字符串類型
             * @return
             */
            @GetMapping("/str")
            public String helloStr() {
                return Constants.LB_PREFIX + ", " + dateStr();
            }
        }

        上述代碼中的Constants.LB_PREFIX來自子工程common:
        package com.bolingcavalry.common;

        public interface Constants {
            String HELLO_PREFIX = "Hello World";
            String LB_PREFIX = "Load balance";
        }

        寫完代碼后,先保證nacos現(xiàn)已發(fā)動
        在發(fā)動provider-hello工程,發(fā)動成功后去看nacos,承認(rèn)現(xiàn)已注冊:

        準(zhǔn)備結(jié)束,可以開端實(shí)戰(zhàn)了
        方針地址支撐用服務(wù)名(替代之前的IP+端口)
        我們從最簡略的開端,先看前文的路由裝備,如下圖紅框,方針地址是IP+端口:

        玩過Spring Cloud的您天然看出了問題所在:沒有注冊發(fā)現(xiàn),確實(shí),這樣將地址和端口寫死在裝備文件中是不合適的,我們先來處理這個問題;
        新增名為gateway-by-loadbalance的子工程,其pom.xml中的依靠情況如下,可見重點(diǎn)是spring-cloud-starter-loadbalancer:

               
                   com.bolingcavalry
                   common
                   ${project.version}
               
               
                   org.springframework.cloud
                   spring-cloud-starter-gateway
               
               
                   io.projectreactor
                   reactor-test
                   test
               
               
                   org.springframework.boot
                   spring-boot-starter-test
                   test
               
               
               
                   org.springframework.cloud
                   spring-cloud-starter-loadbalancer
               
               
               
                   com.alibaba.cloud
                   spring-cloud-starter-alibaba-nacos-discovery
               
           

        發(fā)動類的代碼省去了(和前文的一樣)
        裝備信息如下,重點(diǎn)是uri的值lb://provider-hello,用了前綴lb:,后邊的provider-hello就是在nacos注冊的服務(wù)名:
        server:
          #服務(wù)端口
          port: 8085
        spring:
          application:
            name: gateway-by-loadbalance
          cloud:
            nacos:
              # 注冊中心的裝備
              discovery:
                server-addr: 127.0.0.1:8848
            gateway:
              routes:
                - id: path_route_lb
                  uri: lb://provider-hello
                  predicates:
                  - Path=/lbtest/**

        單元測驗(yàn)類:
        package com.bolingcavalry.gateway;

        import com.bolingcavalry.common.Constants;
        import org.junit.jupiter.api.Test;
        import org.junit.jupiter.api.extension.ExtendWith;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient;
        import org.springframework.boot.test.context.SpringBootTest;
        import org.springframework.http.MediaType;
        import org.springframework.test.context.junit.jupiter.SpringExtension;
        import org.springframework.test.web.reactive.server.WebTestClient;
        import static org.junit.jupiter.api.Assertions.assertTrue;

        @SpringBootTest
        @ExtendWith(SpringExtension.class)
        @AutoConfigureWebTestClient
        public class HelloTest {

            @Autowired
            private WebTestClient webClient;

            @Test
            void testLoadBalance() {
                webClient.get()
                        .uri("/lbtest/str")
                        .accept(MediaType.APPLICATION_JSON)
                        .exchange()
                        // 驗(yàn)證狀況
                        .expectStatus().isOk()
                        // 驗(yàn)證成果,留意成果是字符串格局
                        .expectBody(String.class).consumeWith(result  -> assertTrue(result.getResponseBody().contains(Constants.LB_PREFIX)));
            }

        運(yùn)行單元測驗(yàn),經(jīng)過,可見上述裝備可以經(jīng)過前綴lb:精確找到服務(wù):


        支撐在nacos上裝備
        將一切裝備信息寫在application.yml中有個問題:不能長途裝備,這在應(yīng)用數(shù)量較多的場景就不方便了,好在nacos供給了長途裝備的才能,應(yīng)用發(fā)動后可以從nacos獲得自己的裝備信息,我們來試試
        新增名為gateway-nacos-config的子工程,其pom.xml中的依靠情況如下,請留意里邊的中文注釋,每指明了每一個依靠的作用:

               
                   com.bolingcavalry
                   common
                   ${project.version}
               
               
                   org.springframework.cloud
                   spring-cloud-starter-gateway
               
               
                   io.projectreactor
                   reactor-test
                   test
               
               
                   org.springframework.boot
                   spring-boot-starter-test
                   test
               
               
               
                   org.springframework.cloud
                   spring-cloud-starter-bootstrap
               
               
               
                   org.springframework.cloud
                   spring-cloud-starter-loadbalancer
               
               
               
                   com.alibaba.cloud
                   spring-cloud-starter-alibaba-nacos-config
               
               
               
                   com.alibaba.cloud
                   spring-cloud-starter-alibaba-nacos-discovery
              

        本地的裝備文件bootstrap.yml,非常簡略,就是nacos的地址和長途裝備信息:
        spring:
          application:
            name: gateway-nacos-config
          cloud:
            nacos:
              config:
                server-addr: 127.0.0.1:8848
                file-extension: yml
                group: DEFAULT_GROUP

         


        接下來再nacos添加一個裝備文件,操作如下圖紅框:

        添加一個裝備,要留意的地方如下(裝備信息的文本稍后給出,便于仿制):

        上圖中完整的裝備信息如下:
        server:
          port: 8083
        spring:
          cloud:
            gateway:
              routes:
                - id: path_route_addr
                  uri: http://127.0.0.1:8082
                  predicates:
                  - Path=/hello/**
                - id: path_route_lb
                  uri: lb://provider-hello
                  predicates:
                  - Path=/lbtest/**

        測驗(yàn)類中的兩個測驗(yàn)辦法如下所示,和前面沒有任何區(qū)別:
        @Test
            void testHelloPredicates() {
                webClient.get()
                        .uri("/hello/str")
                        .accept(MediaType.APPLICATION_JSON)
                        .exchange()
                        // 驗(yàn)證狀況
                        .expectStatus().isOk()
                        // 驗(yàn)證成果,留意成果是字符串格局
                        .expectBody(String.class).consumeWith(result  -> assertTrue(result.getResponseBody().contains(Constants.HELLO_PREFIX)));
            }

            @Test
            void testLoadBalance() {
                webClient.get()
                        .uri("/lbtest/str")
                        .accept(MediaType.APPLICATION_JSON)
                        .exchange()
                        // 驗(yàn)證狀況
                        .expectStatus().isOk()
                        // 驗(yàn)證成果,留意成果是字符串格局
                        .expectBody(String.class).consumeWith(result  -> assertTrue(result.getResponseBody().contains(Constants.LB_PREFIX)));
            }

         


        運(yùn)行單元測驗(yàn)類,測驗(yàn)經(jīng)過,證明從nacos獲取裝備文件成功:

        寫代碼的辦法裝備
        前面的幾個例子,路由信息都是寫在裝備文件中的,其實(shí)還有一種辦法:寫代碼裝備路由,能自己寫代碼來裝備,這靈敏性就更強(qiáng)了
        新增名為gateway-by-code的子工程,其pom.xml文件參照前面工程的即可
        接下來的本例的重點(diǎn),在裝備類中添加一個RouteLocator類型的bean,經(jīng)過以下代碼即可添加一個路由:
        package com.bolingcavalry.gateway.cofig;

        import org.springframework.cloud.gateway.route.RouteLocator;
        import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
        import org.springframework.context.annotation.Bean;
        import org.springframework.context.annotation.Configuration;

        @Configuration
        public class RouteConfig {

            @Bean
            public RouteLocator customizeRoute(RouteLocatorBuilder builder) {
                return builder
                        .routes()
                        .route(
                                    // 第一個參數(shù)是路由的唯一身份
                                "path_route_lb",
                                    // 第二個參數(shù)是個lambda實(shí)現(xiàn),
                                    // 設(shè)置了配套條件是依照請求路徑匹配,以及轉(zhuǎn)發(fā)地址,
                                    // 留意lb://表示這是個服務(wù)名,要從
                                    r -> r.path("/lbtest/**").uri("lb://provider-hello")
                        )
                        .build();
            }
        }

         


        上述代碼只裝備了一個路由,還有一個在裝備文件中,這樣就能驗(yàn)證代碼和裝備文件能不能同時收效了:
        server:
          #服務(wù)端口
          port: 8084
        spring:
          application:
            name: gateway-by-code
          cloud:
            nacos:
              discovery:
                # nacos服務(wù)地址
                server-addr: 127.0.0.1:8848
            gateway:
              routes:
                - id: path_route_addr
                  uri: http://127.0.0.1:8082
                  predicates:
                  - Path=/hello/**

         


        測驗(yàn)類和之前工程的一模一樣,就不占用篇幅了,依舊是兩個測驗(yàn)辦法testHelloPredicates和testLoadBalance
        履行單元測驗(yàn)可以順利經(jīng)過,證明代碼裝備路由沒有問題:

        至此,負(fù)載均衡、nacos裝備、代碼裝備的實(shí)例我們都測驗(yàn)過了,它們合起來會給實(shí)踐生存環(huán)境的裝備帶來很大的方便,期望可以給您一些參閱
        ————————————————
        版權(quán)聲明:本文為CSDN博主「程序員欣宸」的原創(chuàng)文章,遵從CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
        原文鏈接:https://blog.csdn.net/boling_cavalry/article/details/119592175本篇概覽
        本文是《Spring Cloud Gateway實(shí)戰(zhàn)》系列的第二篇,經(jīng)過前文我們了解到Spring Cloud Gateway的中心是路由裝備,然后在本地application.yml中裝備了一條路由,但這種修改本地裝備文件的辦法缺少靈敏性,未必能滿意靈敏多變的事務(wù)需求,因此,本篇的意圖就是找出本地裝備之外的其他裝備辦法來,滿意各種實(shí)踐需求;
        總的來說以下三種辦法都是常用的:
        方針地址支撐用服務(wù)名(替代之前的IP+端口);
        支撐在nacos上裝備;
        支撐寫代碼的辦法裝備;
        別的還有一種愈加靈敏的裝備辦法:動態(tài)署理,由于涉及到不少的代碼所以會單獨(dú)出一篇文章詳細(xì)介紹
        源碼下載
        本篇實(shí)戰(zhàn)中的完整源碼可在GitHub下載到,地址和鏈接信息如下表所示(https://github.com/zq2599/blog_demos):
        名稱 鏈接 備注
        項目主頁 https://github.com/zq2599/blog_demos 該項目在GitHub上的主頁
        git庫房地址(https) https://github.com/zq2599/blog_demos.git 該項目源碼的庫房地址,https協(xié)議
        git庫房地址(ssh) git@github.com:zq2599/blog_demos.git 該項目源碼的庫房地址,ssh協(xié)議
        這個git項目中有多個文件夾,本篇的源碼在spring-cloud-tutorials文件夾下,如下圖紅框所示:

        準(zhǔn)備工作
        正式開端前需要再做一點(diǎn)準(zhǔn)備工作,整個《Spring Cloud Gateway實(shí)戰(zhàn)》系列中,一切請求最后都會被路由到provider-hello這個web上去,該服務(wù)現(xiàn)在只有一個web接口/hello/str,現(xiàn)在我們再給它添加一個,后邊的實(shí)戰(zhàn)會用到
        新添加的web接口來自LBTest.java,可見非常簡略:
        package com.bolingcavalry.provider.controller;

        import com.bolingcavalry.common.Constants;
        import org.springframework.web.bind.annotation.GetMapping;
        import org.springframework.web.bind.annotation.RequestMapping;
        import org.springframework.web.bind.annotation.RestController;
        import java.text.SimpleDateFormat;
        import java.util.Date;

        @RestController
        @RequestMapping("/lbtest")
        public class LBTest {

            private String dateStr(){
                return new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
            }

            /**
             * 回來字符串類型
             * @return
             */
            @GetMapping("/str")
            public String helloStr() {
                return Constants.LB_PREFIX + ", " + dateStr();
            }
        }

        上述代碼中的Constants.LB_PREFIX來自子工程common:
        package com.bolingcavalry.common;

        public interface Constants {
            String HELLO_PREFIX = "Hello World";
            String LB_PREFIX = "Load balance";
        }

        寫完代碼后,先保證nacos現(xiàn)已發(fā)動
        在發(fā)動provider-hello工程,發(fā)動成功后去看nacos,承認(rèn)現(xiàn)已注冊:

        準(zhǔn)備結(jié)束,可以開端實(shí)戰(zhàn)了
        方針地址支撐用服務(wù)名(替代之前的IP+端口)
        我們從最簡略的開端,先看前文的路由裝備,如下圖紅框,方針地址是IP+端口:

        玩過Spring Cloud的您天然看出了問題所在:沒有注冊發(fā)現(xiàn),確實(shí),這樣將地址和端口寫死在裝備文件中是不合適的,我們先來處理這個問題;
        新增名為gateway-by-loadbalance的子工程,其pom.xml中的依靠情況如下,可見重點(diǎn)是spring-cloud-starter-loadbalancer:

               
                   com.bolingcavalry
                   common
                   ${project.version}
               
               
                   org.springframework.cloud
                   spring-cloud-starter-gateway
               
               
                   io.projectreactor
                   reactor-test
                   test
               
               
                   org.springframework.boot
                   spring-boot-starter-test
                   test
               
               
               
                   org.springframework.cloud
                   spring-cloud-starter-loadbalancer
               
               
               
                   com.alibaba.cloud
                   spring-cloud-starter-alibaba-nacos-discovery
               

        發(fā)動類的代碼省去了(和前文的一樣)
        裝備信息如下,重點(diǎn)是uri的值lb://provider-hello,用了前綴lb:,后邊的provider-hello就是在nacos注冊的服務(wù)名:
        server:
          #服務(wù)端口
          port: 8085
        spring:
          application:
            name: gateway-by-loadbalance
          cloud:
            nacos:
              # 注冊中心的裝備
              discovery:
                server-addr: 127.0.0.1:8848
            gateway:
              routes:
                - id: path_route_lb
                  uri: lb://provider-hello
                  predicates:
                  - Path=/lbtest/**

        單元測驗(yàn)類:
        package com.bolingcavalry.gateway;

        import com.bolingcavalry.common.Constants;
        import org.junit.jupiter.api.Test;
        import org.junit.jupiter.api.extension.ExtendWith;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient;
        import org.springframework.boot.test.context.SpringBootTest;
        import org.springframework.http.MediaType;
        import org.springframework.test.context.junit.jupiter.SpringExtension;
        import org.springframework.test.web.reactive.server.WebTestClient;
        import static org.junit.jupiter.api.Assertions.assertTrue;

        @SpringBootTest
        @ExtendWith(SpringExtension.class)
        @AutoConfigureWebTestClient
        public class HelloTest {

            @Autowired
            private WebTestClient webClient;

            @Test
            void testLoadBalance() {
                webClient.get()
                        .uri("/lbtest/str")
                        .accept(MediaType.APPLICATION_JSON)
                        .exchange()
                        // 驗(yàn)證狀況
                        .expectStatus().isOk()
                        // 驗(yàn)證成果,留意成果是字符串格局
                        .expectBody(String.class).consumeWith(result  -> assertTrue(result.getResponseBody().contains(Constants.LB_PREFIX)));
            }
        }

        運(yùn)行單元測驗(yàn),經(jīng)過,可見上述裝備可以經(jīng)過前綴lb:精確找到服務(wù):

        支撐在nacos上裝備
        將一切裝備信息寫在application.yml中有個問題:不能長途裝備,這在應(yīng)用數(shù)量較多的場景就不方便了,好在nacos供給了長途裝備的才能,應(yīng)用發(fā)動后可以從nacos獲得自己的裝備信息,我們來試試
        新增名為gateway-nacos-config的子工程,其pom.xml中的依靠情況如下,請留意里邊的中文注釋,每指明了每一個依靠的作用:

               
                   com.bolingcavalry
                   common
                   ${project.version}
               
               
                   org.springframework.cloud
                   spring-cloud-starter-gateway
               
               
                   io.projectreactor
                   reactor-test
                   test
               
               
                   org.springframework.boot
                   spring-boot-starter-test
                   test
               
               
               
                   org.springframework.cloud
                   spring-cloud-starter-bootstrap
               
               
               
                   org.springframework.cloud
                   spring-cloud-starter-loadbalancer
               
               
               
                   com.alibaba.cloud
                   spring-cloud-starter-alibaba-nacos-config
               
               
               
                   com.alibaba.cloud
                   spring-cloud-starter-alibaba-nacos-discovery
               

        本地的裝備文件bootstrap.yml,非常簡略,就是nacos的地址和長途裝備信息:
        spring:
          application:
            name: gateway-nacos-config
          cloud:
            nacos:
              config:
                server-addr: 127.0.0.1:8848
                file-extension: yml
                group: DEFAULT_GROUP

        接下來再nacos添加一個裝備文件,操作如下圖紅框:

        添加一個裝備,要留意的地方如下(裝備信息的文本稍后給出,便于仿制):

        上圖中完整的裝備信息如下:
        server:
          port: 8083
        spring:
          cloud:
            gateway:
              routes:
                - id: path_route_addr
                  uri: http://127.0.0.1:8082
                  predicates:
                  - Path=/hello/**
                - id: path_route_lb
                  uri: lb://provider-hello
                  predicates:
                  - Path=/lbtest/**

        測驗(yàn)類中的兩個測驗(yàn)辦法如下所示,和前面沒有任何區(qū)別:
        @Test
            void testHelloPredicates() {
                webClient.get()
                        .uri("/hello/str")
                        .accept(MediaType.APPLICATION_JSON)
                        .exchange()
                        // 驗(yàn)證狀況
                        .expectStatus().isOk()
                        // 驗(yàn)證成果,留意成果是字符串格局
                        .expectBody(String.class).consumeWith(result  -> assertTrue(result.getResponseBody().contains(Constants.HELLO_PREFIX)));
            }

            @Test
            void testLoadBalance() {
                webClient.get()
                        .uri("/lbtest/str")
                        .accept(MediaType.APPLICATION_JSON)
                        .exchange()
                        // 驗(yàn)證狀況
                        .expectStatus().isOk()
                        // 驗(yàn)證成果,留意成果是字符串格局
                        .expectBody(String.class).consumeWith(result  -> assertTrue(result.getResponseBody().contains(Constants.LB_PREFIX)));
            }

        運(yùn)行單元測驗(yàn)類,測驗(yàn)經(jīng)過,證明從nacos獲取裝備文件成功:

        寫代碼的辦法裝備
        前面的幾個例子,路由信息都是寫在裝備文件中的,其實(shí)還有一種辦法:寫代碼裝備路由,能自己寫代碼來裝備,這靈敏性就更強(qiáng)了
        新增名為gateway-by-code的子工程,其pom.xml文件參照前面工程的即可
        接下來的本例的重點(diǎn),在裝備類中添加一個RouteLocator類型的bean,經(jīng)過以下代碼即可添加一個路由:
        package com.bolingcavalry.gateway.cofig;

        import org.springframework.cloud.gateway.route.RouteLocator;
        import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
        import org.springframework.context.annotation.Bean;
        import org.springframework.context.annotation.Configuration;

        @Configuration
        public class RouteConfig {

            @Bean
            public RouteLocator customizeRoute(RouteLocatorBuilder builder) {
                return builder
                        .routes()
                        .route(
                                    // 第一個參數(shù)是路由的唯一身份
                                "path_route_lb",
                                    // 第二個參數(shù)是個lambda實(shí)現(xiàn),
                                    // 設(shè)置了配套條件是依照請求路徑匹配,以及轉(zhuǎn)發(fā)地址,
                                    // 留意lb://表示這是個服務(wù)名,要從
                                    r -> r.path("/lbtest/**").uri("lb://provider-hello")
                        )
                        .build();
            }
        }

        上述代碼只裝備了一個路由,還有一個在裝備文件中,這樣就能驗(yàn)證代碼和裝備文件能不能同時收效了:
        server:
          #服務(wù)端口
          port: 8084
        spring:
          application:
            name: gateway-by-code
          cloud:
            nacos:
              discovery:
                # nacos服務(wù)地址
                server-addr: 127.0.0.1:8848
            gateway:
              routes:
                - id: path_route_addr
                  uri: http://127.0.0.1:8082
                  predicates:
                  - Path=/hello/**

        測驗(yàn)類和之前工程的一模一樣,就不占用篇幅了,依舊是兩個測驗(yàn)辦法testHelloPredicates和testLoadBalance
        履行單元測驗(yàn)可以順利經(jīng)過,證明代碼裝備路由沒有問題:

        至此,負(fù)載均衡、nacos裝備、代碼裝備的實(shí)例我們都測驗(yàn)過了,它們合起來會給實(shí)踐生存環(huán)境的裝備帶來很大的方便,期望可以給您一些參閱

         

        —— 靈通云微信公眾號 ——

        熱門標(biāo)簽

        上一條———————

        下一條———————

        十七年 建站經(jīng)驗(yàn)

        多一份參考,總有益處

        聯(lián)系靈通云,免費(fèi)獲得專屬《策劃方案》及報價

        咨詢相關(guān)問題或預(yù)約面談,可以通過以下方式與我們聯(lián)系

        業(yè)務(wù)熱線:400-688-6062 / 大客戶專線   南通:15818561755

        东乡| 东平县| 明水县| 连山| 历史| 正定县| 墨脱县| 抚顺县| 临西县| 华蓥市| 伊金霍洛旗| 灵川县| 青川县| 柳州市| 文成县| 抚顺市| 麻城市| 大足县| 页游| 衢州市| 永泰县| 孝昌县| 利津县| 元谋县| 杂多县| 常州市| 新安县| 淮南市| 涪陵区| 十堰市| 桂林市| 牙克石市| 青阳县| 新疆| 吴旗县| 洛隆县| 许昌市| 永安市| 从化市| 黔东| 琼结县|