开发者学堂课程【企业级分布式应用服务 EDAS 使用攻略:HSF 应用开发】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/359/detail/4215
HSF 应用开发
内容介绍:
一、应用开发概述
二、查看 Consumer
三、查看 Provider 应用
四、演示项目开发模块
一、应用开发概述
点开 Eclipse,新建 edas 项目 edas-parent,里面包含三个包:detail(商品模块,即 Consumer 应用)、itemcenter(类目中心,即 Provider 应用)、itemcenter-api(抽象出的通用api,在实际应用场景中,多数需要抽象出通用的接口,放到一个专用 api 中,做成 war 包,让其他的 Consumer 应用和 Provider 应用来调用)。
在实际应用过程中,一个应用既可以提供 Provider 接口,又可以作为 Consumer 调用其他应用的接口。
打开 pom.xml,查看 parent 中的 pom 依赖。可以看到这个 demo 也是基于 spring服务框架开发的一个 demo,其使用的日志框架是 SLF4J,实现是 logback。
此处要强调“日志框架”,因为目前 EDAS 默认不处理应用日志,如果开发者不自行设置应用日志滚动切割,日志会默认输入到 tomcat-的 cattalina.log,在实际生产过程中,可能会损坏磁盘。所以在实际过程中,应由开发者利用通用的日志框架对自己的业务日志进行切割和管理。
二、查看 Consumer
打开 hsf.consumer-beans.xml 查看 Consumer beans 配置文件,它消费了一个服务示例,其中声明了对应的接口、version、group;打开 logback.xml 查看 logback 的配置文件,其主要设置了日志滚动的路径,但应用开发者设置的日志最好放在HOME admin下面,因为 EDAS 开发仅有 admin 权限,如果单独设置应用日志路径在其他的路径下,可能需要 root 权限,而 EDAS 没有权限去写这个 log,因此,设置的日志最好放入 HOME admin下面。
课堂演示中主要定义了切割的大小及保留时长,切割的大小设定成30 KB,保留日期7天。还设置了日志的输出级别为“INFO”。
对于其他级别的日志配置可参考日志官方框架和网上的相关资料进行配置。然后启动应用的 Consumer。
访问方式:演示中用 springmac 编写了一个 Controller,访问地址为 list,上传一个name 的参数,调用接口是 itemService ,访问无误,但系统报错,提示“[HSF-Consumer] 未找到需要调用的服务额目标地址,需要调用的目标服务与组别一致。由于 Provider 未启动,因此调用的目标服务地址显示为0。Provider 未正常启动是报错的原因之一,还有可能是调用目标服务的版本号与组别不一致导致的。
点击左侧的 itemcenter,启动 Provider 应用,再次访问 Consumer,返回成功。
分析逻辑:点击 itemcenter-api ItemService.java, 查看 java 的 api,api 主要 java了接口,接口中包含有2个方法,一个根据 ID 获取 Item,一个通过 Name 获取Item。而 Consumer 中是 java 了一个 name 值来获取返回值。
三、查看 Provider 应用
打开左侧 itemcenter 中的hsf-provider-beans.xml,查看其配置文件,其配置文件中声明了一个实现接口的bean,然后在Provider配置中制定了ref依赖是itemService,其version、group与Consumer保持一致。
查看其实现ItemServiceImpl.java配置文件,当ByName不等于edas时,输出“拖拉机”,等于的时候输出“奔驰”。
四、演示项目开发模块
在实际应用中,consumer可能会有多个,故可以建立多个Consumer,且同一应用中可能会有provider,故可以声明一个provider文件来启动服务接口给其他的consumer调用。