本文章将以OnlineShop微服务Demo为例演示如何在本地构建开发环境。

OnlineShop简介

OnlineShop是GitHub上的一个微服务应用项目。该项目包含Spring Cloud应用与Dubbo应用,其包含了完整的源代码以及构建好的容器镜像,是一个非常典型的微服务示例。

OnlineShop共包含3个微服务,分别是:Frontend、Cart Service和Product Service,其中Cart Service为购物车服务由Dubbo服务构成,Product Service为商品服务由Spring Cloud服务构成,Frontend为客户端服务分别调用了Dubbo和Spring Cloud应用。总体架构见下图:

OnlineShop架构

从上述架构图可以看到该项目非常简单,只有服务注册与发现的能力,缺失了服务查询、链路监控、配置管理和服务鉴权等一系列生产级别的微服务治理能力。

本最佳实践的目标是:在保证应用服务不中断运行的前提下,将OnlineShop无缝迁移至EDAS,并在EDAS上体验强大的微服务治理与应用监控等能力。

前提条件

已安装好Java环境。

构建OnlineShop本地开发环境

  1. 执行以下命令下载OnlineShop源码。
    git clone https://github.com/aliyun/alibabacloud-microservice-demo.git
  2. 创建并导入项目。
    OnlineShop微服务的Demo在src路径下。demo的路径展示
  3. 在项目根目录内执行以下命令。
    mvn package -DskipTests
    编译成功后可以看到如下图所示结果:编译成功

创建云资源

  1. 创建VPC,具体操作,请参见搭建IPv4专有网络
  2. 在创建的VPC内购买3台云服务器ECS,具体操作,请参见通过控制台使用ECS实例(快捷版)云服务器ECS快速入门
  3. 给ECS实例安装JDK并配置Java环境。
    1. 下载JDK 1.8+和Maven 3.5+。
    2. 登录ECS实例安装JDK 1.8+并添加JAVA_HOME环境变量。
    3. 登录ECS实例安装Maven 3.5+并添加MAVEN_HOME环境变量。
  4. 在创建的VPC内创建一个MSE实例,并记录下MSE实例的私网访问方式地址,具体操作,请参见创建Nacos引擎

在微服务应用的配置文件中配置注册中心地址

在上述创建的MSE实例的内网注册中心地址为mse-****-nacos-ans.mse.aliyuncs.com:8848

  1. 分别打开3个微服务应用的application.properties文件,修改注册中心地址为MSE实例的访问方式地址。
    1. 修改Cart Service的注册中心地址。
      Cart Service地址
    2. 修改Product Service的注册中心地址。
      Product Service注册中心地址
    3. 修改Frontend注册中心地址。
      修改Frontend注册中心地址
  2. 执行以下命令编译程序。
    mvn clean install

在ECS实例上部署应用

  1. 执行以下命令上传cartservice-provider-1.0.0-SNAPSHOT.jar至部署Cart Service的ECS实例的/tmp目录下。
    scp src/cartservice/cartservice-provider/target/cartservice-provider-1.0.0-SNAPSHOT.jar root@XX.XX.XX.XX:/tmp
    上传Cart Service部署博
  2. 使用SSH登录Cart Service对应的ECS实例。
    注意 该ECS实例需已开启22端口的安全组规则,具体操作,请参见创建安全组
  3. 移动/tmp/cartservice-provider-1.0.0-SNAPSHOT.jar至/root路径下。
  4. 执行以下命令启动程序。
    nohup java -jar cartservice-provider-1.0.0-SNAPSHOT.jar &
  5. 观察nohup.out日志,当出现下图所示提示时表示应用启动成功。
    观察nohup.out日志
  6. 重复以上步骤在另外两台ECS实例上部署Product Service和Frontend应用。
  7. 访问Frontend应用实例的服务地址http://XX.XX.XX.XX:8080/,出现应用首页则表示访问成功。

为Frontend应用绑定公网SLB

  1. 登录SLB控制台
  2. 在应用ECS实例所在的可用区内购买一台SLB实例,具体操作,请参见创建实例
  3. 在创建的SLB实例的最右侧单击点我开始配置
    配置SLB规则
  4. 配置负载均衡协议为TCP,监听端口为8080
    配置监听端口
  5. 配置后端服务器为Frontend应用所部署的ECS实例,并配置端口8080,然后根据页面提示完成SLB监听规则的配置。
    配置后端服务器
  6. 访问负载均衡的公网服务地址http://{负载均衡IP}:8080/,如果能够成功访问Frontend应用首页,则代表负载均衡绑定成功。

在本地构造流量访问微服务应用

执行以下命令,在本地构造流量一直访问该微服务应用。

while :
do
        result=`curl $1 -s`
        if [[ "$result" == *"500"* ]]; then
                echo `date +%F-%T` $result
        else
                echo `date +%F-%T` "success"
        fi
        sleep 0.1
done
执行结果如下所示。流量访问

后续步骤

平滑迁移微服务应用至EDAS