微服务是一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建。总结一下,微服务主要特点如下:
通常我们关注的app自动化主要focus在移动端脚本,而往往忽略了后端需求,比如远程控制设备,调度设备,实时更新脚本等等。一般情况都是另外独立开发一个后端服务来实现所有功能,不仅成本高,周期长,后期维护更是麻烦。不难发现有很大一部分后端需求是一致的,比如设备管理,脚本管理等等。所以我们可以把后端分割为SaaS(所有后端通用的需求)和微服务(个性化的需求)两部分,一般情况下使用SaaS就足够了,如果有其他需求则直接编写微服务脚本实现,简单快捷,成本低,维护更是方便。下面以冰狐智能辅助的微服务为例进行实际分析。(点击这里查看微服务实战demo)
冰狐智能辅助的微服务使用JS脚本实现,支持模块化管理、高并发访问、数据库访问,主要用于扩展后端服务,或者创建其他独立的业务逻辑。 可用于实现移动端和服务端访问请求,以及通用的业务处理和数据查询服务等,架构图如下:
由上图可知,冰狐智能辅助的微服务主要由移动端接口、服务等接口、业务处理服务、数据查询服务和微服务脚本组成,下面分别介绍。
冰狐智能辅助的微服务脚本使用的是js,一个微服务可以由一个或者多个js脚本组成,直接独立编写js,独立部署,非常方便。
当移动端脚本开发者需要调用自定义的后端服务功能时使用callMicroService,比如访问后端数据库、获取用户和设备相关信息等。移动端接口可以指定脚本和函数名(默认函数名为main),params直接透传给微服务脚本相应的函数,函数的返回值即为接口返回值。
当开发者需要让第三方调用开发者自定义的后端服务功能或者直接使用冰狐SaaS时使用该接口。第三方服务端可以调用open api:/api/call_micro_service来调用微服务。服务端接口可以指定脚本和函数名(默认函数名为main),query参数params直接透传给微服务脚本相应的函数,函数返回值为接口返回值。
当用户需要从外部录入数据或者需要触发某个行为或者调度设备时可以使用业务处理服务,实际处理过程由微服务脚本完成。若需要让用户点击界面执行某个业务,则可以创建业务处理服务,可以让用户输入参数,然后触发云端的微服务(服务参数直接透传给微服务脚本)。
当用户需要查看系统内部数据时(可以类比于数据报表功能),可以使用数据查询模块来实现,比如查询所有上传的用户资料等。
本文详细讲解了微服务的基本概念,和其在app自动化领域的应用,并给出了基于冰狐智能辅助的微服务实战demo。