日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

將Dubbo應(yīng)用托管到SAE

本文以包含服務(wù)提供者(本文簡稱Provider)和服務(wù)消費者(本文簡稱Consumer)的Dubbo微服務(wù)應(yīng)用為例,介紹如何在本地通過XML配置的方式,開發(fā)Dubbo微服務(wù)示例應(yīng)用,并部署到Serverless 應(yīng)用引擎 SAE(Serverless App Engine)

為什么托管到SAE

將Dubbo應(yīng)用托管到SAE,您僅需關(guān)注Dubbo應(yīng)用自身的邏輯,無需再關(guān)注注冊中心和配置中心搭建和維護(hù),托管后還可以使用SAE提供的彈性伸縮、一鍵啟停和監(jiān)控等功能,有效降低開發(fā)和運維成本。

當(dāng)您的微服務(wù)應(yīng)用較多時,注冊中心按推薦程度由高到低依次排序如下:

  • 商業(yè)版的服務(wù)注冊中心(MSE)

  • 自建服務(wù)注冊中心

  • SAE內(nèi)置服務(wù)注冊中心

如果您選擇商業(yè)版的服務(wù)注冊中心,即使用MSE的Nacos作為服務(wù)注冊中心,具體操作,請參見使用MSE的Nacos注冊中心

如果您選擇使用自建Nacos作為服務(wù)注冊中心,具體操作,請參見使用自建Nacos服務(wù)注冊中心。您需要確認(rèn)以下內(nèi)容:

  • 確保SAE的網(wǎng)絡(luò)與自建Nacos的網(wǎng)絡(luò)互通。

  • 確保-D-XX參數(shù)未交替使用,以免命令失效。示例代碼如下:

    • 修改前:

      java -Dalicloud.deployment.mode=EDAS_MANAGED -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UnlockExperimentalVMOptions -XX:+UseWisp2 -Dio.netty.transport.noNative=true -XX:+UseG1GC -Dspring.profiles.active=yace -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar /home/admin/app/xx-server.jar
    • 修改后:

      java -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UnlockExperimentalVMOptions -XX:+UseWisp2 -Dio.netty.transport.noNative=true -XX:+UseG1GC -Dspring.profiles.active=yace -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar /home/admin/app/xx-server.jar
  • 建議在部署應(yīng)用時,使用鏡像或者JAR包方式,并配置啟動參數(shù)-Dnacos.use.endpoint.parsing.rule=false-Dnacos.use.cloud.namespace.parsing=false

    重要

    啟動參數(shù)需要放在-jar之前,否則可能會導(dǎo)致無法使用非SAE自帶的注冊中心。

    • 如果采用鏡像方式,請將-Dnacos.use.endpoint.parsing.rule=false-Dnacos.use.cloud.namespace.parsing=false配置在鏡像文件的程序啟動命令中。Docker鏡像制作方法,請參見制作Java鏡像

      示例代碼如下:

      RUN echo 'eval exec java -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar $CATALINA_OPTS /home/admin/app/hello-edas-0.0.1-SNAPSHOT.jar'> /home/admin/start.sh && chmod +x /home/admin/start.sh
    • 如果采用JAR包方式,請在控制臺啟動命令設(shè)置區(qū)域的options設(shè)置文本框輸入-Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false。圖示為Open JDK 8運行環(huán)境下的Java應(yīng)用。具體操作,請參見設(shè)置啟動命令sc_configure_a_startup_command_for_nacos

準(zhǔn)備工作

  • 下載Maven并設(shè)置環(huán)境變量。

  • 啟動Nacos Server。

    1. 下載并解壓Nacos Server

    2. 進(jìn)入nacos/bin目錄,啟動Nacos Server。

      • Linux、Unix、macOS系統(tǒng):執(zhí)行命令sudo sh startup.sh -m standalone

      • Windows系統(tǒng):執(zhí)行命令startup.cmd -m standalone

      說明

      standalone表示單機模式運行,非集群模式。startup.cmd文件默認(rèn)以集群模式啟動,因此您在使用Windows系統(tǒng)時,如果直接雙擊執(zhí)行startup.cmd文件會導(dǎo)致啟動失敗,此時需要在startup.cmd文件內(nèi)設(shè)置MODE="standalone"。 更多信息,請參見Nacos快速開始

版本說明

Dubbo 2.7.x, Dubbo 3.0.x 版本的生命周期已于2023年03月結(jié)束,請使用新版本開發(fā)您的應(yīng)用。本文以Dubbo 3.2.15版本為例,介紹如何將Dubbo應(yīng)用托管到SAE。

步驟一:創(chuàng)建服務(wù)提供者

在本地創(chuàng)建一個提供者應(yīng)用工程,添加依賴、配置服務(wù)注冊與發(fā)現(xiàn),并將注冊中心指定為Nacos。

  1. 創(chuàng)建Maven項目并引入依賴。

    1. 使用IDE(如IntelliJ IDEA或Eclipse)創(chuàng)建一個Maven項目。

    2. pom.xml文件中添加dubbo、dubbo-registry-nacos和nacos-client依賴。

      <dependencies>
      
          <dependency>
              <groupId>org.apache.dubbo</groupId>
              <artifactId>dubbo</artifactId>
              <version>3.2.15</version>
          </dependency>
      
          <dependency>
              <groupId>org.apache.dubbo</groupId>
              <artifactId>dubbo-registry-nacos</artifactId>
              <version>3.2.15</version>
          </dependency>
      
          <dependency>
              <groupId>com.alibaba.nacos</groupId>
              <artifactId>nacos-client</artifactId>
              <version>1.1.1</version>
          </dependency>
      </dependencies>            
  2. 開發(fā)Dubbo服務(wù)提供者。

    Dubbo中服務(wù)都是以接口形式提供。

    1. src/main/java路徑下創(chuàng)建一個packagecom.alibaba.edas

    2. com.alibaba.edas下創(chuàng)建一個接口(interface)IHelloService,里面包含一個SayHello方法。

        package com.alibaba.edas;
      
        public interface IHelloService {
            String sayHello(String str);
        }                                
    3. com.alibaba.edas下創(chuàng)建一個類IHelloServiceImpl,實現(xiàn)此接口。

        package com.alibaba.edas;
      
        public class IHelloServiceImpl implements IHelloService {
            public String sayHello(String str) {
                return "hello " + str;
            }
        }                          
  3. 配置Dubbo服務(wù)。

    1. src/main/resources路徑下創(chuàng)建provider.xml文件并打開。

    2. provider.xml中,添加Spring相關(guān)的XML Namespace(xmlns)和XML Schema Instance(xmlns:xsi),以及Dubbo相關(guān)的Namespace(xmlns:dubbo)和Schema Instance(xsi:schemaLocation)。

      <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
      xmlns="http://www.springframework.org/schema/beans"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
      http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">                               
    3. provider.xml中將接口和實現(xiàn)類暴露成Dubbo服務(wù)。

        <dubbo:application name="demo-provider"/>
      
        <dubbo:protocol name="dubbo" port="28082"/>
      
        <dubbo:service interface="com.alibaba.edas.IHelloService" ref="helloService"/>
      
        <bean id="helloService" class="com.alibaba.edas.IHelloServiceImpl"/>                                
    4. provider.xml中將注冊中心指定為本地啟動的Nacos Server。

      <dubbo:registry address="nacos://127.0.0.1:8848" />                                
      • 127.0.0.1為Nacos Server的地址。如果您的Nacos Server部署在另外一臺機器,則需要修改成對應(yīng)的IP地址。當(dāng)將應(yīng)用部署到SAE后,無需做任何修改,注冊中心會替換成SAE上的注冊中心的地址。

      • 8848為Nacos Server的端口號,不可修改。

  4. 啟動服務(wù)。

    1. com.alibaba.edas中創(chuàng)建類Provider,并按下面的代碼在Provider的main函數(shù)中加載Spring Context,將配置好的Dubbo服務(wù)暴露。

      package com.alibaba.edas;
      
      import org.springframework.context.support.ClassPathXmlApplicationContext;
      
      public class Provider {
          public static void main(String[] args) throws Exception {
              ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"provider.xml"});
              context.start();
              System.in.read();
          }
      }                
    2. 執(zhí)行Provider的main函數(shù),啟動服務(wù)。

  5. 登錄Nacos控制臺http://127.0.0.1:8848,在左側(cè)導(dǎo)航欄中單擊服務(wù)列表,查看提供者列表。

    可以看到服務(wù)提供者里已經(jīng)包含了com.alibaba.edas.IHelloService,且可以查詢該服務(wù)的服務(wù)分組提供者IP

步驟二:創(chuàng)建服務(wù)消費者

在本地創(chuàng)建一個消費者應(yīng)用工程,添加依賴、訂閱服務(wù)的配置。

  1. 創(chuàng)建Maven項目并引入依賴。

    1. 使用IDE(如IntelliJ IDEA或Eclipse)創(chuàng)建一個Maven項目。

    2. pom.xml文件中添加dubbo、dubbo-registry-nacos和nacos-client依賴。

      <dependencies>
      
          <dependency>
              <groupId>org.apache.dubbo</groupId>
              <artifactId>dubbo</artifactId>
              <version>3.2.15</version>
          </dependency>
      
          <dependency>
              <groupId>org.apache.dubbo</groupId>
              <artifactId>dubbo-registry-nacos</artifactId>
              <version>3.2.15</version>
          </dependency>
      
          <dependency>
              <groupId>com.alibaba.nacos</groupId>
              <artifactId>nacos-client</artifactId>
              <version>1.1.1</version>
          </dependency>
      </dependencies>            
  2. 開發(fā)Dubbo服務(wù)消費者。

    Dubbo中服務(wù)都是以接口形式提供。

    1. src/main/java路徑下創(chuàng)建Package,命名為com.alibaba.edas

    2. com.alibaba.edas下創(chuàng)建一個接口(interface)IHelloService,里面包含一個SayHello方法。

      說明

      通常是在一個單獨的模塊中定義接口,服務(wù)提供者和服務(wù)消費者都通過Maven依賴來引用此模塊。本文為了簡便,服務(wù)提供者和服務(wù)消費者分別創(chuàng)建兩個完全一模一樣的接口,實際使用中不推薦這樣使用。

        package com.alibaba.edas;
      
        public interface IHelloService {
            String sayHello(String str);
        }                                
  3. 配置Dubbo服務(wù)。

    1. src/main/resources路徑下創(chuàng)建consumer.xml文件并打開。

    2. consumer.xml中,添加Spring相關(guān)的XML Namespace(xmlns)和XML Schema Instance(xmlns:xsi),以及Dubbo相關(guān)的Namespace(xmlns:dubbo)和Schema Instance(xsi:schemaLocation)。

      <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
      xmlns="http://www.springframework.org/schema/beans"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
      http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">                              
    3. consumer.xml中添加如下配置,訂閱Dubbo服務(wù)。

        <dubbo:application name="demo-consumer"/>
      
        <dubbo:registry address="nacos://127.0.0.1:8848"/>
      
        <dubbo:reference id="helloService" interface="com.alibaba.edas.IHelloService"/>
  4. 啟動并驗證服務(wù)。

    1. com.alibaba.edas下創(chuàng)建類Consumer,并按下面的代碼在Consumer的main函數(shù)中加載Spring Context,訂閱并消費Dubbo服務(wù)。

          package com.alibaba.edas;
      
          import org.springframework.context.support.ClassPathXmlApplicationContext;
      
          import java.util.concurrent.TimeUnit;
      
          public class Consumer {
              public static void main(String[] args) throws Exception {
                  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"consumer.xml"});
                  context.start();
                  while (true) {
                      try {
                          TimeUnit.SECONDS.sleep(5);
                          IHelloService demoService = (IHelloService)context.getBean("helloService");
                          String result = demoService.sayHello("world");
                          System.out.println(result);
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                  }
              }
          }               
    2. 執(zhí)行Consumer的main函數(shù),啟動服務(wù)。

  5. 驗證結(jié)果。

    啟動后,可以看到控制臺不斷地輸出hello world,表明服務(wù)消費成功。

    登錄Nacos控制臺http://127.0.0.1:8848,在左側(cè)導(dǎo)航欄中單擊服務(wù)列表,再在服務(wù)列表頁面選擇調(diào)用者列表

    可以看到包含了com.alibaba.edas.IHelloService,且可以查看該服務(wù)的服務(wù)分組調(diào)用者IP

步驟三:部署到SAE

  1. 分別在Provider和Consumer的pom.xml文件中添加如下配置,配置完成后執(zhí)行mvn clean package將本地程序編譯為可執(zhí)行的JAR包。

    • Provider

      <build>
       <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <executions>
                     <execution>
                         <goals>
                             <goal>repackage</goal>
                         </goals>
                         <configuration>
                             <classifier>spring-boot</classifier>
                             <mainClass>com.alibaba.sae.Provider</mainClass>
                         </configuration>
                     </execution>
                 </executions>
             </plugin>
       </plugins>
      </build>                             
    • Consumer

      <build>
       <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <executions>
                     <execution>
                         <goals>
                             <goal>repackage</goal>
                         </goals>
                         <configuration>
                             <classifier>spring-boot</classifier>
                             <mainClass>com.alibaba.sae.Consumer</mainClass>
                         </configuration>
                     </execution>
                 </executions>
             </plugin>
       </plugins>
      </build>                        
  2. 將編譯好的Provider和Consumer應(yīng)用包部署至SAE。具體操作,請參見在SAE控制臺使用JAR文件部署微服務(wù)應(yīng)用