数据对接-ETL之StreamSet学习之旅七微服务

本文介绍了如何使用StreamSets创建Restful风格的API微服务,包括建立Api、测试接口和监控性能。通过实例展示了从配置到测试的过程,并讨论了其在微服务场景中的适用性和优势。
摘要由CSDN通过智能技术生成

StreamSet作为大数据ETL工具的选择,当然需要处理数据的合并与转存,其大部分功能集中于此。有些场景可能需要其对外提供个接口,可以被调用,StreamSets能做到吗?答案是能!并且能做当今流行的微服务,啊!好高大上~,今天就来看看吧。

学习系列

  1. 数据对接-ETL之StreamSet学习之旅一
  2. 数据对接-ETL之StreamSet学习之旅二
  3. 数据对接-ETL之StreamSet学习之旅三
  4. 数据对接-ETL之StreamSet学习之旅四
  5. 数据对接-ETL之StreamSet学习之旅五
  6. 数据对接-ETL之StreamSet学习之旅六
  7. 数据对接-ETL之StreamSet学习之旅七 微服务

1、Restful风格的Api

使用StreamSets建立微服务时,可以建立三种类型的微服务,Rest Http服务,WebSocket 客户端、WebSocket服务端微服务。本次主要阐述建立Restful风格的Http形式的Api微服务,家里的Api服务,可以被其他系统调用。譬如有个手机App,要做一系列数据展示,那我们理论上可以使用这些api完成功能。

2、建立Api

在建立新管道时,我们选择微服务类型。如下图所示,在左上角选择新建管道。
在这里插入图片描述
在弹出选择框内选择微服务。
在这里插入图片描述
好了,一个框架已经搭好了,现在一个访问用户的restful接口已经建立。
在这里插入图片描述

3、测试一下

既然内容已经填好了,那我们先来测试下,看看链路是否顺畅。准备好你的api测试工具,什么拿手用什么。什么,你啥都没有,要我推荐?有工具的直接跳到4小节吧,我这里多啰嗦几句。

3.1 大名鼎鼎的Postman,后端程序员必备

网址如下:https://www.getpostman.com/
在这里插入图片描述

3.2 测试专业级Jmeter

在这里插入图片描述
专业级工具,可进行压力测试,入门稍微慢点,需要半天熟悉下。

3.3 curl 命令行,linux专属工具~~

想展示大神级的操作,来个命令,瞬间逼格满满。

curl -X POST "http://baidu.com:8080/api/test/test" -H "accept: application/json" -H "Content-Type: application/json-patch+json" -d "{\"data\":{\"orderGID\":\"string\"},\"accessToken\":\"string\"}"

注意,以上命令纯属测试!慎用。

4、测试微服务接口

在这里插入图片描述
按图中操作步骤,查看管道流程内的组件 HTTP Router 1,发现其定义了2个api接口路径

  1. GET /rest/v1/user
  2. POST /rest/v1/user

我们再查看下微服务监听的端口,在组件“REST Service 1”的配置上查看,如下图所示,默认是8000,这里我修改为7000。application ID是个重要的验证值,待会再说。
在这里插入图片描述

4.1 测试下get方法

在这里插入图片描述
发起一个get请求:http://192.168.100.48:7000/rest/v1/user,这里192.168.100.48是StreamSets安装的主机ip。7000端口是我们设定的端口,后面的 /rest/v1/user就是路由内配置的路径, get请求也是路由节点配置的。
此时发起请求后,返回403错误
此处是StreamSets的第一个小关卡,点击组件“REST Service 1”的配置上,在Application ID下面点击“Show Value”,查看设置的值是什么,查看后发现是:“microservice”。
让我们在Http请求头里增加X-SDC-APPLICATION-ID 项,值设置为“microservice”。
在这里插入图片描述
OK,完美的发起请求,并受到返回信息了!
你可以把GET,修改为POST,请求测试第二个接口,应该也是OK的。

4.2 微服务的数据格式

默认建立的微服务接口,请求格式为Json格式,返回值亦为json格式。在组件“REST Service 1”的配置里,可以设定这些值。
Data Format设定请求数据时的数据格式,甚至压缩与否等。支持的数据格式有

  1. Avro
  2. Binary
  3. Datagram
  4. Delimited
  5. Json
  6. Xml
  7. Protobuf
  8. Text
  9. Log
  10. SDC Record。

返回值仅支持2种格式:Json和Xml。
协议方式支持TLS下的https方式。

接口返回的格式必须是
{“httpStatusCode”: xxx,
“data”: [
],
“error”: []
},这点是需要注意的。

5、微服务的结构

通过上述章节描述,您应该清楚了1个StreamSets支持的微服务api接口大致的骨架,对的,通过流程创建时,不可缺少的1个源组件是 “Rest Service”组件,后面紧跟着的是处理器组件“Http Route”,最后结尾的组件应该是“Send Response To”目标组件。中间的处理组件可以任意多的进行组合。这样子你的微服务就搭建起来了。

6、微服务的监控

StreamSets本身已经提供了丰富的监控信息,在每个管道的摘要内均可以查看整个管道的监控信息,点击组件,在摘要内也可以看到组件的监控信息。
在这里插入图片描述
通过上图监控,可以看到这个微服务提供的服务,有2组输入数据,处理完后数据成功输出的有4组,还有1组错误。点击左下面的Errors选项卡,可以查看错误统计信息;如果需要查看详细的错误,可以在流程图内找到有错误计数的组件,点击其选项内的错误,可以查看到详细的错误描述,甚至原始数据。

7、并发性能

有许多场景可能会要求微服务的并发性能,如果要求比较苛刻的话,可能需要您采用java/c#/Go等其他后端语言编写了,这是个复杂和精细的事情。对于StreamSets,也可以尽量满足性能要求,可以在组件“Rest Service”的端口设定下面设置“Max Concurrent Requests”,并发请求数量,数字越大越耗费cpu和内存,因此,适量设置到合适的数字,再进行压力测试,看是否满足您的需求。

8、结语

我做过相对复杂业务的流程微服务,下图只是一部分。

在这里插入图片描述
在同等熟悉的开发效率上,如果组件齐全,StreamSets开发微服务还是比较快的,如果缺少相应的组件,需要配合js脚本、第三方api等完成,相对优势逐渐不明显。
如果接口用在和三方交互,经常变动时,也是非常合适的,那真是说改就改,马上运行。
因此工具应该用在合适的范围,划定界限,不要什么场景都往一个工具上套!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

webmote

如果能帮到你,请支持下博主

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值