任务管理器-微服务端
1. 概要
该解决方案旨在帮助您通过云开发平台构建服务形态的Serverless后端服务,主要传达了几个知识点:
微服务注册与服务发现的集成使用;
把一个微服务架构的系统在云开发平台上部署运行起来;
日常、预发、正式环境的数据库使用配置;
1.1. 业务功能介绍
该方案TaskManager 是一款代办事项管理软件;能够协助用户完成待办事务的管理与进度跟踪,比如工作计划、生日提醒、旅行安排等,以便更好的规划时间和安排生活。[
1.2. 应用&架构说明
说明该产品共有2个应用,分别是:WEB服务、数据访问微服务;应用间通过 “MSE微服务引擎” 提供的 nacos 引擎实现服务的注册与发现;数据库模型有任务种类(categories)和任务列表(tasks)
1.2.1. WEB服务
为用户提供Web操作页面,包含浏览器端运行的UI逻辑,以及与之相关的控制层逻辑;
使用微服务技术和服务端进行通信:“任务服务”使用 Dubbo 客户端进行调用;“任务分类”服务,使用 Feign 实现远程调用;
1.2.2. 数据访问微服务
提供任务管理的各领域服务能力;
持久化层:可以使用您在VPC已经开通的数据库,如果没有,默认使用内嵌的h2 内存数据库实现数据存储能力(每次重启后数据会被重置);
服务层:对外暴露 dubbo 和 HTTP 两种协议接口,其中“任务”相关的服务使用 Dubbo 协议暴露,“任务分类”相关服务以 http 协议暴露;
2. 部署&访问流程
2.1 准备工作-需要开通的基础设施服务
API 网关(APIGateway):通过API网关向外透出http服务;
容器镜像服务(CR):系统编译构建的镜像存储在镜像仓库中;
负载均衡(SLB):提供私有网络的SLB服务,费用较低;
专有网络(VPC) :整个系统的网络环境;
弹性容器实例(ECI) :弹性容器服务,部署镜像的服务器;
微服务引擎(MSE):微服务注册和发现;
日志服务(SLS):记录系统操作的日志,可以协助排查问题;另外
需要创建一个微服务引擎实例 ,为了节省费用,建议开通按量付费模式的MSE实例,不使用的时候可以及时释放掉。如下图:付费模式:按量付费;地域和可用区:选择您习惯使用的区域,本例选择的是:华东2(上海)引擎类型:Nacos引擎版本:随意,本例选择的是:1.1.3引擎规格:选择最低配置:1核2G集群节点数:设置1台专有网络:选择一个已创建的VPC,如果没有,可以在这里创建一个:VPC创建 , 本例是:“vpc数据库”。交换机:选择一个已创建的交换机,如果没有,可以在这里创建一个:交换机创建 , 本例是: “vswitch数据库”。公网带宽:因为是内网访问,设置0Mbps
注意:VPC和交换机创建的区域,需要和您上面选择的区域保持一致,本例是:华东2(上海)
创建完MSE实例后,mse基本信息中会有内网地址选择,本例是:“mse-9e0c7c63-nacos-ans.mse.aliyuncs.com”
如果不使用默认H2数据库,则需要自己开通一个RDS数据库(建议用默认H2数据库)。新开通或者已开通的数据库所在的VPC&交换机需要和MSE所在VPC&交换机保持一致。
2.2 应用创建**
登录云开发平台,点击「免费云开发」,点击「应用管理」,点击「新建应用」,选择「Java」,选择「通过模版创建」,选择「官方模板」,选择「任务管理器-微服务端(微服务架构)」,点击下一步,填写完信息之后,点击下一步,选择「计算服务」,开通项目所依赖的云服务,点击完成
应用创建完成后,点击「在线开发部署」,等待代码仓库完成初始化,自动进入 CloudIDE页面
然后下一步设置应用基本信息,填写:应用名称、所属区域(这里应该填写VPC、交换机、MSE 所在的同一区域)、应用介绍。
应用创建完后,需要完成“环境管理” 和 “应用配置” 的相关配置项操作:
环境管理->高级设置中,需要选择 VPC(vpc数据库)和交换机(vswitch数据库),其它默认,如下图:
应用配置,需要填写刚才创建的MSE内网地址,本例是:“mse-9e0c7c63-nacos-ans.mse.aliyuncs.com”,user_namespace可以为空,系统默认会设置一个ID值。
这些准备好后,就可以进入到应用的实现和部署工作了,点击“开发部署” 将打开CloudIDE系统集成开发环境中,对相关逻辑进行开发实现(当然本例无需修改代码就能部署跑通);
直接打开CloudIDE部署插件,进行应用部署:
部署成功后,会有一个系统自动生成的临时域名,有半个小时有效期,如果使用默认H2数据库可以访问到H2数据库的控制台,在浏览器打开域名,本例是:http://test1yi7f8mnrp8r779arh1.workbenchapi.com
H2控制台:
另外在微服务引擎(MSE)控制台,也可以看到一条服务注册信息:2、任务管理器-Web客户端创建
创建过程和 “任务管理器-Service服务端”创建过程一样。最后输出的是系统自动生成的一个临时域名,有半个小时有效期。3、配置补充说明
实际生产系统,一般日常开发环境的数据库和线上环境的数据库是不一样的,数据库配置可以定义成变量,比如application.properties中这样定义数据源:
spring.datasource.driver-class-name = ${ds_drivername}
spring.datasource.url= ${ds_url}
spring.datasource.username= ${ds_username}
spring.datasource.password= ${ds_password}
在应用管理->应用配置中,在日常环境、预发环境、线上环境配置相应的数据源信息,如下图:
3. 相关云产品