天天看點

阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

實驗概述

企業級分布式應用服務(Enterprise Distributed Application Service, 簡稱 EDAS)是以阿裡巴巴中間件團隊多款久經沙場的分布式産品作為核心基礎元件,面向企業級雲計算市場提供高可用分布式解決方案,是阿裡巴巴企業級網際網路架構解決方案的核心産品,它涵蓋了應用生命周期管理、服務運維管控等衆多功能。

本實驗主要是指導學員如何在本機上配置并搭建 EDAS 本地開發測試環境。

實驗目标

完成此實驗後後,學員可以掌握的能力有:

  1. 在本地搭建 EDAS 本地開發測試環境;
  2. EDAS 的基本開發流程。

學前建議

在使用 EDAS 産品之前,我們預設您已經掌握基本的程式設計技巧,包括但不限于熟練使用 JAVA 程式設計語言;掌握相關的開發工具(Eclipse等),熟悉相關的開發規範(Maven;Spring等)

背景知識

業務背景 在複雜的雲環境,應用釋出與管理會變得十分複雜。本地開發完成的應用需要逐個部署到伺服器,然後登陸每一台伺服器終端進行應用的釋出和部署;後續可能還會涉及應用的重新開機,擴容等。伺服器的不斷增加對于運維人員将是一個極大的挑戰。 當集中式應用轉變成分布式系統的時候,系統之間的互相可靠調用一直以來都是分布式架構的難題,比如網絡通信,序列化協定設計等很多技術細節需要确定。EDAS 提供了一個高性能的 RPC 架構,能夠建構高可用的分布式系統,系統地考慮到了各個應用之間的分布式服務發現、服務路由、服務調用以及服務安全等細節。 EDAS 支撐了整個阿裡巴巴 99% 以上的大規模應用系統,其中涵蓋了包括會員、交易、商品、店鋪、物流和評價在内的所有線上核心系統,在穩定性、可靠性等多個次元具有獨特的優勢。EDAS 曆次雙十一大促考驗,其完善的鑒權體系保證每一次服務調用的安全可靠。 技術背景 EDAS 充分利用阿裡雲的資源管理和服務體系,引入阿裡巴巴中間件整套成熟的分布式産品,全面相容 Apache Tomcat 的 Java 容器,提供高性能的分布式服務架構以及秒級推送的分布式配置管理服務。此外,EDAS 還創新性地提供了分布式系統鍊路追蹤、容量規劃、資料化營運和多款經過阿裡電商平台長期考驗的高可用穩定性元件,幫助企業級客戶輕松建構大型分布式應用服務系統。 EDAS 除了以網際網路中間件 PaaS 平台為基礎,采用高性能 RPC 架構 HSF 和 Dubbo 作為服務化架構之外,還提供了豐富的二方服務體系:

· 分布式配置管理

集中式系統變成分布式系統後,如何有效地對分布式系統中,每一個機器上的配置資訊進行有效的實時管理成了一個難題。EDAS 提供高效的分布式配置管理,能夠将分布式系統的配置資訊在 EDAS 控制台上集中管理起來,做到一處配置,處處使用。更重要的是,EDAS 允許您在控制台上對配置資訊進行修改,在秒級時間内就能夠實時通知到所有的機器。

· 分布式任務排程

任務排程服務,允許使用者配置任意周期性排程的單機或者分布式任務,并能對任務運作周期進行管理,同時也提供對任務的曆史執行記錄進行查詢。适用于諸如每天淩晨 2 點定時遷移曆史資料,每隔 5 分鐘進行任務觸發,每個月的第一天發送系統月報等任務排程場景。

· 分布式事務

分布式事務(Transaction Controller,簡稱 TXC),是一款高性能、高可靠、接入簡單的分布式事務中間件,用于解決分布式環境下的事務一緻性問題。該産品支援 DRDS、RDS、Oracle、MySQL、PostgreSQL、H2 等多種資料源,并可以配合使用 EDAS、Dubbo 及多種私有 RPC 架構,同時還相容 MQ 消息隊列等中間件産品,能夠輕松實作分布式資料庫事務、多庫事務、消息事務、服務鍊路級事務及其各種組合,具有政策豐富,易用性和性能兼顧等特征。

一、環境準備

1.1 ECS

請點選頁面左側的實驗資源 ,在左側欄中,檢視本次實驗資源資訊。 ECS windows環境 ECS 在彈出的左側欄中,點選 建立資源 按鈕,開始建立實驗資源。 資源建立過程需要1-3分鐘。完成實驗資源的建立後,使用者可以通過 實驗資源 檢視實驗中所需的資源資訊,例如:阿裡雲賬号等。

1.2 遠端連接配接

遠端連接配接方式:

本實驗所使用的資源是安裝了windows系統的ECS,可以通過遠端連接配接的方式,根據文檔内容在ECS上完成EDAS本地開發環境的搭建。遠端連接配接的方式,根據下面的連接配接進行操作,連結如下:

​​https://help.aliyun.com/document_detail/25435.html​​

​​https://help.aliyun.com/document_detail/108451.html​​

遠端連接配接異常:

遠端連接配接的過程中可能出現的常見異常 “出現身份驗證錯誤,要求的函數不受支援”,該異常的解決辦法如下:

​​https://help.aliyun.com/knowledge_detail/71931.html​​

二、安裝JDK并配置環境變量

2.1 安裝JDK

從我們提供的實驗軟體\開發軟體目錄中找到jdk-8u211-windows-x64.exe,直接安裝。

阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

2.2 配置環境變量

單擊開始菜單,在清單找到 “計算機”,滑鼠右鍵單擊,從彈出的清單中找到屬性進入

阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

新視窗中 點選左側 “進階系統設定”,然後點選環境變量,進入變量配置頁面。

阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

建立系統變量名 JAVA_HOME ,變量值如下:C:\Program Files\Java\jdk1.7.0_79

阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

打開環境變量PATH,在變量值最前端增加如下語句: %JAVA_HOME%\bin; 注意:末尾的“;”分号不能省略。

阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

建立變量名 CLASSPATH ,變量值如下:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 注意:前面的“.;”符号不能省略。

阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

2.3 驗證

在CMD指令視窗下輸入java -version,可以正常顯示java版本。

三、安裝maven并配置環境變量

3.1 安裝Maven

将實驗軟體\開發軟體目錄中apache-maven-3.6.1-bin打開,其中的檔案apache-maven-3.6.1 複制到本地磁盤C:\work目錄(如果沒有該檔案夾,可以建立一個)。

阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

3.2 配置環境變量

按前序步驟打開環境變量

配置系統變量,在系統變量中建立一個變量,變量名為M2_HOME,變量值為Maven的安裝目錄,如下:

D:\work\apache-maven-3.6.1

接着在系統變量中找到環境變量PATH,在變量值的最前端加上如下語句:

%M2_HOME%\bin; 注意:末尾的“;”分号不能省略。

3.3 驗證

在cmd視窗中運作 mvn -v ,可以檢視對應maven的版本。

3.4 配置settings檔案

為了讓maven能更順利的下載下傳edas的jar相關jar包,建議配置一個edas的私服位址。修改maven的settings.xml(setting.xml檔案在~/.m2/settings.xml,或直接使用maven安裝包下conf/settings.xml),添加私服位址。

注意:maven的settings配置可以在 Maven 中配置 EDAS 的私服位址中看到更詳情的說明。

在<profiles>,新增内容如下(注意profiles可能被注釋掉,確定<profiles>和<profile>的格式)

<profiles>
    <profile>
        <id>nexus</id>
        <repositories>
            <repository>
                <id>central</id>
                <url>http://repo1.maven.org/maven2</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>central</id>
                <url>http://repo1.maven.org/maven2</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
    <profile>
        <id>edas.oss.repo</id>
        <repositories>
            <repository>
                <id>edas-oss-central</id>
                <name>taobao mirror central</name>
                <url>http://edas-public.oss-cn-hangzhou.aliyuncs.com/repository</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <releases>
                    <enabled>true</enabled>
                </releases>
            </repository>
            </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>edas-oss-plugin-central</id>
                <url>http://edas-public.oss-cn-hangzhou.aliyuncs.com/repository</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <releases>
                    <enabled>true</enabled>
                </releases>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>nexus</activeProfile>
    <activeProfile>edas.oss.repo</activeProfile>
</activeProfiles>      

四、安裝Ali-Tomcat

4.1 安裝步驟

将實驗軟體\HSF容器目錄中taobao-tomcat-7.0.59.tgz解壓到本地磁盤(例如:d:\work)下。 鏡像中已經解壓,可直接複制。

在實驗軟體\HSF容器目錄中找到taobao-hsf.sar軟體,将裡面的内容移動到Ali-Tomcat 的 deploy 目錄。例如:d:\work\tomcat\deploy 底下。

(已解壓的不需要重新解壓)

詳情可以參考:安裝 Ali-Tomcat 和 Pandora

五、安裝IDE的Ali-Tomcat插件

5.1 Eclipse

将實驗軟體\開發軟體目錄中eclipse.zip解壓到本地磁盤d:\work目錄。由于我們提供的eclipse已經預設安裝好tomcat4e,是以,不需要重新安裝ali-tomcat的插件。

确認已安裝tomcat4e的步驟如下:

打開eclipse,在eclipse菜單欄 ->Window按鈕 -> 選擇Preferences ->選擇Run/Debug->Perspectives,再右側清單中可以看到AliTomcat Webapp的選項,即為已安裝。效果如下:

阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

對于未找到該選項或自行下載下傳的eclipse,需要安裝 Tomcat4E插件,如下所示安裝步驟進行操作:點選工具欄菜單> Help 按鈕,選擇 Install New Software > 依次單擊 Add > Local > 選中實驗軟體\開發軟體tomcat4e.zip 包 > OK > Select All > Next 按鈕即完成插件安裝,重新開機Eclipse。界面如下:

阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

5.2 IDEA

運作 IntelliJ IDEA。從菜單欄中選擇 Run > EditConfiguration。在 Run/Debug Configuration 頁面左側的導航欄中選擇 Defaults > Tomcat Server > Local。

下面開始配置 Ali-Tomcat:

在右側頁面單擊 Server 頁簽,然後在 Application Server 區域單擊 Configure。

在 Application Server 頁面右上角單擊 +,然後在 Tomcat Server 對話框中設定 Tomcat Home 和 Tomcat base directory 路徑,單擊 OK。

将 Tomcat Home 的路徑設定為本地解壓後的 Ali-Tomcat 路徑,Tomcat base directory 可以自動使用該路徑,無需再設定。

在 Application Server 區域的下拉菜單中,選擇剛剛配置好的Ali-Tomcat。在 VM Options 區域的文本框中,設定 JVM 啟動參數指向 Pandora 的路徑,如:-Dpandora.locatinotallow=d:\work\tomcat\deploy\taobao-hsf.sar

說明:d:\work\tomcat\deploy\taobao-hsf.sar 需要替換為在本地安裝 Pandora 的實際路徑。

最後,單擊 Apply 或 OK 完成配置。 詳情可以參考:配置 IDEA 開發環境。

六、安裝輕量級配置中心

6.1 環境要求

正确配置環境變量 JAVA_HOME,指向一個1.6或1.6 以上版本的JDK; 8080 和 9600 端口未被使用。

6.2 安裝步驟

将實驗軟體\輕量配置中心目錄中edas-config-center.zip軟體包,解壓本地磁盤(例如:d:\work)目錄。

進入 edas-config-center 目錄,輕按兩下 startup.bat啟動輕量配置中心

正常啟動。由于預設使用的是8080端口,是以,可以通過如下位址進行通路:

​​http://127.0.0.1:8080/​​

6.3 配置位址

對于需要使用輕量配置中心的開發機器,請在本地 DNS(hosts 檔案)中,将jmenv.tbsite.net 域名指向啟動了 EDAS 配置中心的機器 IP。hosts 檔案的路徑如下:

Windows 作業系統:C:\Windows\System32\drivers\etc\hosts Unix 作業系統:/etc/hosts 示例

如果您在 IP 為 192.168.1.100 的機器上面啟動了 EDAS 配置中心,則所有開發者隻需要在機器的 hosts 檔案裡加入如下一行即可(記得備份原檔案):

192.168.1.100 jmenv.tbsite.net 在本機上部署輕量級配置中心,并讓本機的應用通路,配置hosts效果如下圖所示:

阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

七、開發RPC接口

7.1 開發步驟

下面的開發示例将以eclipse作為IDE進行示範:

将實驗軟體\示例代碼目錄中的edas-app-demo.zip本地磁盤(例如:d:\work)目錄,打開eclipse,點選import>Maven>Existing MavenProjects選擇剛解壓到本地的項目carshop。

阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

新增api,新寫一個接口,用來列印名字。在itemcenter-api項目新增接口PrintService。代碼如下:

public interface PrintService {

   public String print(String name);

}      

八、開發RPC Provider

8.1 開發步驟

接下來要開始rpc provider,通過上述定義的接口完成實作類。如下:

在itemcenter項目新增類PrintServiceImpl實作PrintService接口。代碼如下:

public class PrintServiceImpl implements PrintService {

   @Override
   public String print(String name) {
      return name;
   }

}      

修改itemcenter項目resources目錄下hsf-provider-beans.xml,version用自己的名字+日期。

其中,除了定義hsf的配置hsf:provider以外,還需要将PrintServiceImpl暴露為spring的bean,并提供hsf:provider的ref屬性引用。代碼如下:

<bean id="printService"
class="com.alibaba.edas.carshop.itemcenter.PrintServiceImpl"
/>

<hsf:provider id="printServiceProvider"
interface="com.alibaba.edas.carshop.itemcenter.PrintService"
ref="printService" versinotallow="zhuizhi.20180809" group="testHSFGroup">

</hsf:provider>      

九、開發RPC Consumer

9.1 開發步驟

接下來要開始rpc consumer,通過上述第六節定義的接口,遠端調用第七節的接口實作。如下:

修改detail項目resources目錄下hsf-consumer-beans.xml配置檔案。注意此處:hsf:consumer的屬性id設定為“print”代碼如下:

<hsf:consumer id="print" interface="com.alibaba.edas.carshop.itemcenter.PrintService"
maxWaitTimeForCsAddress = "3000"
    versinotallow="zhuizhi.20180809" group="testHSFGroup">
</hsf:consumer>      

修改detail項目中StartListener類,通過上述id屬性“print”擷取到PrintService的執行個體。通過printService調用print方法完成遠端hsf接口調用。代碼如下:

@Override

   public void contextInitialized(ServletContextEvent sce) {
      ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());
      final ItemService itemService = (ItemService) ctx.getBean("item");
      final PrintService printService = (PrintService) ctx.getBean("print");
      Thread thread = new Thread(new Runnable() {

         @Override
         public void run() {
            Random random = new Random();
            while (true) {
               try {
                  Thread.sleep(500l);
                  System.out.println(itemService.getItemById(1111));
                  System.out.println(itemService.getItemByName("myname is le"));
                  System.out.println(printService.print("zhuizhi.czj.") + random.nextInt());
               } catch (Throwable e) {
                  e.printStackTrace();
               }
            }
         }
      });
      thread.start();
   }      

十、驗證HSF應用

10.1 啟動rpc provider

下面咱們要開始驗證上述所編寫的hsf應用,首先,需要啟動rpc provider将接口資訊注冊到輕量級配置中心。下面對rpc provider的啟動做詳細的闡述:

  1. itemcenter項目有接口的實作是hsf的provider。下面以eclipse為例,選中itemcenter項目右鍵,操作如下:
  2. 設定Tomcat4E。右鍵單擊相應的 Eclipse 工程(本示例中的itemcenter項目),右鍵菜單-> Run As > Run Configurations。檢視彈出的配置視窗。
  3. 選擇左側導航選項中的 AliTomcat Webapp,新增啟動配置; AliTomcat 頁籤,有2項需要注意的配置項,即:Pandora的taobao-hsf.sar location(配置hsf相關包位址)和Web Application下的Tomcat Port(tomcat啟動端口号)。下面闡述這兩項如何配置。
  4. Pandora (taobao-hsf.sar location) 區域,選擇 Use local taobao-hsf.sar;單擊旁邊的 Browse 以選擇本地的 Pandora 路徑(如:d:\work\tomcat\deploy\taobao-hsf.sar);
  5. Web Application下的Tomcat Port配置的是tomcat啟動端口号,預設8080端口。在這之前“輕量級配置中心”預設也是使用8080端口号,這就可能造成啟動後端口沖突。在這裡,建議大家修改Tomcat Port的8080為8081。如下圖所示:
阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

6. 根據上述内容在Run Configurations配置完成後,單擊 Apply 或 Run,完成設定。一個工程隻需配置一次,下次可直接啟動(即,右鍵單擊項目->Run/Debug->RunAs->Alitomcat Webapp 可以直接運作應用之前的配置);

  1. 運作成功後,可以在“輕量級配置中心”檢視到釋出的接口資訊。其中,輕量級配置中心的“服務清單”需要根據“IP位址”或“服務名”進行搜尋,“IP位址”必須寫完整的本機IP(即,寫127.0.0.1無效),而如果根據“服務名”搜尋,則服務名需要寫完整(例如:com.alibaba.edas.carshop.itemcenter.PrintService才算一個完整的服務名)。
  2. 阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境
  3. 8.檢視服務注冊日志,C:\Users{目前使用者}\logs\configclient\config-client.log中可以看到如下資訊,對應服務Publish-ok。
  4. 阿裡雲ACP企業級網際網路架構ACP實驗之本地配置EDAS開發環境

10.2 啟動rpc consumer

上述已經将rpc provider(即:itemcenter項目)啟動并對外暴露接口資訊,提供遠端的服務。下面将啟動接口調用方通過rpc的方式遠端調用rpc provider的接口。

啟動目前rpc consumer(即:detail項目)前,確定“輕量級配置中心”和itemcenter項目都已經啟動。