实验概述
企业级分布式应用服务(Enterprise Distributed Application Service, 简称 EDAS)是以阿里巴巴中间件团队多款久经沙场的分布式产品作为核心基础组件,面向企业级云计算市场提供高可用分布式解决方案,是阿里巴巴企业级互联网架构解决方案的核心产品,它涵盖了应用生命周期管理、服务运维管控等众多功能。
本实验主要是指导学员如何在本机上配置并搭建 EDAS 本地开发测试环境。
实验目标
完成此实验后后,学员可以掌握的能力有:
- 在本地搭建 EDAS 本地开发测试环境;
- 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,直接安装。
2.2 配置环境变量
单击开始菜单,在列表找到 “计算机”,鼠标右键单击,从弹出的列表中找到属性进入
新窗口中 点击左侧 “高级系统设置”,然后点击环境变量,进入变量配置页面。
新建系统变量名 JAVA_HOME ,变量值如下:C:\Program Files\Java\jdk1.7.0_79
打开环境变量PATH,在变量值最前端增加如下语句: %JAVA_HOME%\bin; 注意:末尾的“;”分号不能省略。
新建变量名 CLASSPATH ,变量值如下:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 注意:前面的“.;”符号不能省略。
2.3 验证
在CMD命令窗口下输入java -version,可以正常显示java版本。
三、安装maven并配置环境变量
3.1 安装Maven
将实验软件\开发软件目录中apache-maven-3.6.1-bin打开,其中的文件apache-maven-3.6.1 复制到本地磁盘C:\work目录(如果没有该文件夹,可以新建一个)。
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>的格式)
四、安装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的选项,即为已安装。效果如下:
对于未找到该选项或自行下载的eclipse,需要安装 Tomcat4E插件,如下所示安装步骤进行操作:点击工具栏菜单> Help 按钮,选择 Install New Software > 依次单击 Add > Local > 选中实验软件\开发软件tomcat4e.zip 包 > OK > Select All > Next 按钮即完成插件安装,重启Eclipse。界面如下:
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端口,因此,可以通过如下地址进行访问:
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效果如下图所示:
七、开发RPC接口
7.1 开发步骤
下面的开发示例将以eclipse作为IDE进行示范:
将实验软件\示例代码目录中的edas-app-demo.zip本地磁盘(例如:d:\work)目录,打开eclipse,点击import>Maven>Existing MavenProjects选择刚解压到本地的项目carshop。
新增api,新写一个接口,用来打印名字。在itemcenter-api项目新增接口PrintService。代码如下:
八、开发RPC Provider
8.1 开发步骤
接下来要开始rpc provider,通过上述定义的接口完成实现类。如下:
在itemcenter项目新增类PrintServiceImpl实现PrintService接口。代码如下:
修改itemcenter项目resources目录下hsf-provider-beans.xml,version用自己的名字+日期。
其中,除了定义hsf的配置hsf:provider以外,还需要将PrintServiceImpl暴露为spring的bean,并提供hsf:provider的ref属性引用。代码如下:
九、开发RPC Consumer
9.1 开发步骤
接下来要开始rpc consumer,通过上述第六节定义的接口,远程调用第七节的接口实现。如下:
修改detail项目resources目录下hsf-consumer-beans.xml配置文件。注意此处:hsf:consumer的属性id设置为“print”代码如下:
修改detail项目中StartListener类,通过上述id属性“print”获取到PrintService的实例。通过printService调用print方法完成远程hsf接口调用。代码如下:
十、验证HSF应用
10.1 启动rpc provider
下面咱们要开始验证上述所编写的hsf应用,首先,需要启动rpc provider将接口信息注册到轻量级配置中心。下面对rpc provider的启动做详细的阐述:
- itemcenter项目有接口的实现是hsf的provider。下面以eclipse为例,选中itemcenter项目右键,操作如下:
- 设置Tomcat4E。右键单击相应的 Eclipse 工程(本示例中的itemcenter项目),右键菜单-> Run As > Run Configurations。查看弹出的配置窗口。
- 选择左侧导航选项中的 AliTomcat Webapp,新增启动配置; AliTomcat 选项卡,有2项需要注意的配置项,即:Pandora的taobao-hsf.sar location(配置hsf相关包地址)和Web Application下的Tomcat Port(tomcat启动端口号)。下面阐述这两项如何配置。
- Pandora (taobao-hsf.sar location) 区域,选择 Use local taobao-hsf.sar;单击旁边的 Browse 以选择本地的 Pandora 路径(如:d:\work\tomcat\deploy\taobao-hsf.sar);
- Web Application下的Tomcat Port配置的是tomcat启动端口号,默认8080端口。在这之前“轻量级配置中心”默认也是使用8080端口号,这就可能造成启动后端口冲突。在这里,建议大家修改Tomcat Port的8080为8081。如下图所示:
6. 根据上述内容在Run Configurations配置完成后,单击 Apply 或 Run,完成设置。一个工程只需配置一次,下次可直接启动(即,右键单击项目->Run/Debug->RunAs->Alitomcat Webapp 可以直接运行应用之前的配置);
- 运行成功后,可以在“轻量级配置中心”查看到发布的接口信息。其中,轻量级配置中心的“服务列表”需要根据“IP地址”或“服务名”进行搜索,“IP地址”必须写完整的本机IP(即,写127.0.0.1无效),而如果根据“服务名”搜索,则服务名需要写完整(例如:com.alibaba.edas.carshop.itemcenter.PrintService才算一个完整的服务名)。
- 8.查看服务注册日志,C:\Users{当前用户}\logs\configclient\config-client.log中可以看到如下信息,对应服务Publish-ok。
10.2 启动rpc consumer
上述已经将rpc provider(即:itemcenter项目)启动并对外暴露接口信息,提供远程的服务。下面将启动接口调用方通过rpc的方式远程调用rpc provider的接口。
启动当前rpc consumer(即:detail项目)前,确保“轻量级配置中心”和itemcenter项目都已经启动。
启动detail项目,步骤跟itemcenter项目启动方式相同。即:需要通过右键菜单-> Run As > Run Configurations配置Run/Debug中Tomcat Port(可配置为8082端口)和taobao-hsf.sar地址)。
代码通过StartListener启动后默认调用itemcenter项目的rpc接口,调用成功可以在控制台看到以下信息: