普元eos开发手册_微服务平台之EOS服务

本文介绍了普元EOS服务如何支持老应用快速适应微服务架构,详细讲解了EOS服务的概念、Swagger描述、服务开发(Hello World、文件上传/下载、调用其他EOS服务、分布式事务)和服务治理(服务列表、统计、发布/授权、日志查看、请求链路、API调用统计)。通过这些内容,帮助开发者理解EOS在微服务环境中的应用。
e1191ef125dbf810bb19b86df8e178bc.png

转载本文需注明出处:微信公众号EAWorld,违者必究。

前言:

​在微服务环境下,原先使用EOS开发的应用要如何才能快速的变成微服务应用?如何将EOS应用对外暴露RESTful接口,如何通过Swagger查看接口描述以及如何调用其他RESTful接口等等?这些就是EOS服务要解决的问题。

目录:

1.EOS服务

2.EOS服务开发

3.EOS服务治理

1.EOS服务

1.EOS服务是什么?

e406247901b5c38da42cf739072f119e.png

EOS服务是为了支持老EOS开发的应用可以快速融入到当前流行的微服务架构下而提供的一种实现方式。

EOS服务是通过.eosservice的描述文件将逻辑流暴露成对外服务,EOS服务支持RESTful的访问,未暴露成EOS服务的逻辑流无法由外部直接访问。

.eosservice文件内容,主要包括:

  • name: 服务名称
  • bizflow: 对应的逻辑流名称
  • inputs: 输入参数列表
  • outputs: 输出参数列表

2.EOS服务的Swagger描述

9041b401db018dbeca36a22f1c92c978.png

把逻辑流暴露成EOS服务后,可以支持通过在线查看RESTful接口描述。为了尽量和老应用保持兼容,path的后缀仍然为“.biz.ext”,method统一为“POST”

2.EOS服务开发

1. Hello World 示例

45fbdbed21b67c2669b49a58e91459e8.png

这是一个Hello World的示例,定义了一个输入/输出参数。通过Postman发送一个POST请求并加上Body参数:{"user": "luffy"},可以看到输出:{"hello":"Hello, luffy !"}

2. 文件上传/下载示例

c534bad965e07e722650dcc674350703.png
  • 文件上传

定义一个逻辑流,逻辑流的输入参数类型是“com.primeton.ext.access.http.IUploadFile”,文件上传支持一次上传多个文件,只要在输入参与勾选【数组】即可。该逻辑流执行完毕后,上传的文件就会被自动删除,如果想要长久保留,需要在逻辑流里将该文件复制到别的目录下。

  • 文件下载

定义一个逻辑流,逻辑流的输出参数类型是“com.primeton.ext.access.http.IDownloadFile”,文件下载只支持一次下载一个文件,注意:该逻辑流执行完毕后,下载的文件就会被自动删除。

3. 调用其他EOS服务

0f8c34c6fbc9656cbc2e881265272bcf.png

调用其他EOS服务也比较简单,先选择一个需要调用的EOS服务名称,然后填入需要调用服务的具体地址(可以是ip:port,也可以是注册中心上的应用名),最后填上输入/输出参数。

4. 分布式事务

e555d3f52ac71a058e0747be3946a8e2.png

一个分布式事务必须由开始、结束图元组成。

分布式事务是基于Saga实现。在分布式事务的范围内,可以包含其他各种的图元(有些图元带补偿操作,有些图元不带补偿操作),当分布式事务范围内出现异常,会自动调用那些已成功执行过图元的补偿操作。

支持补偿操作的图元包括:

  • Spring Bean调用图元:在【高级】tab页里有补偿的输入框,可以选择的是同一个Spring Bean的不同方法,补偿的方法需要和原方法有一样的输入参数。
  • EOS 服务调用图元:在【高级】tab页里有补偿的输入框,补偿的输入框的值是一个URL,该URL指向的是另一个EOS服务,补偿的EOS服务需要和原服务有一样的输入参数。

3.服务治理

1. EOS服务列表

372913f0c777859230bada718cb5f142.png

通过Govenor,可以看到一个应用的EOS服务列表,并支持对每个具体的服务进行上/下线操作,下线的服务再被访问时,会返回403。

{"error":"Forbidden by sdk-access-control(DISABLED_APIS)",  "message":"Access denied,the api is disabled,  api path: [/com.primeton.eos.sample.biz.sample01.biz.ext],  method: [POST]"}

2. EOS服务统计

3521e7573616e5993510c70d4335609c.png

在Govenor上还可以看到EOS服务的统计信息,包括:执行次数,执行时长以及正在运行的EOS服务。

3. EOS服务发布/授权

48f639646de67b41332609634300feac.png
871e95b0b05469dcaa06737f40ee1672.png

EOS服务还可以通过网关进行发布/授权,已授权的服务可以被其他系统的应用调用。其他系统的应用调用这种服务的时候需要在请求头里加上订阅凭证。

4. 应用日志查看

11e66f4354d50f104dc4e937a5ef9c49.png

可以查看应用运行时的日志,和老EOS一样,仍然分为3种日志并支持在线调整日志级别:

  • engine_trace:应用引擎日志的ROOT Logger Name
  • log.sys:应用系统日志的ROOT Logger Name
  • 其余名称是应用跟踪日志

5. 请求链路查看

bab2e7abb245655e2aae201b541766f1.png

通过请求链路可以查看一个请求是成功还是错误,请求处理时间是多少,以及它的调用链路:经过了多少应用,在每个应用内的耗时是多少。

6. API调用统计

e73f07e76dd317868f219a7d54261690.png

API调用统计可以按照应用、实例组、实例、API来统计汇总请求信息,包括:响应状态码,请求数,最小响应时间,最大响应时间,平均响应时间以及响应时间总和。支持按应用、实例组、实例、API、时间段等条件进行查询以及按请求数和响应时间排序。

这次和大家分享了普元EOS服务相关的开发和治理,希望对大家有所帮助。不足之处,也请多多指正,谢谢。

790b8b6f14714a00a3fe3360d364fd34.png

关于作者:八点五分,普元高级软件工程师,开源技术爱好者,容器技术专家,曾参与浦东发展银行BPM项目、银联PAASV1等项目。

关于EAWorld:微服务,DevOps,数据治理,移动架构原创技术分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值