基于微服务架构的老人监管系统的研究

2019-09-10 07:22谢松王雯张琪
科学导报·科学工程与电力 2019年39期

谢松 王雯 张琪

【摘  要】随着互联网技术的不断发展,分布式开发已经成为系统的主流,在系统的维护以及对多次访问的处理上有着天然的优势。本文设计了一个基于微服务架构的老人监控系统的项目构建,以及相关组件的搭配。

【关键词】微服务架构;SpringCloud for Aibaba;分布式开发

1 引言

2014年被称为微服务元年,自提出到现在的发展成熟,提出的目的就是有效的拆分应用,实现敏捷开发和部署,实现分布式开发,为了应对高并发和庞大的访问量,实现异地多活等特性。

智能管理监控系统采用多接口调用的形式完成对前端发送数据,实现实时监控和提醒修改等功能,本文会从微服务的构架实现以及相关集成工具的角度进行探讨。对微服务架构的系统做一次分析。

2 研究现状

微服务架构是一种新的软件体系设计模式,它并没有形成统一,严格的定义,但是基于其分布式环境应用的场景,却拥有一些共同的特征:比如开发敏捷性、持续交付、可伸缩性、最终一致性等[1]。

微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和加速[2]。在分散的组件中使用微服务云架构和平台,使部署、管理和服务功能交付变得更加简单[3]。

微服务架构将笨重的单体应用拆分为多个不同的服务,每个不同的服务处理一个细小功能,使用沙箱的隔离机制,做到互不干扰,解决了单体应用启动时间长,并发处理能力弱的缺点。每个服务可以使用不同的语言进行编写,符合计算机原理的输入和输出,使用统一数据传输方式进行交流,正在的做到了一个方法只做一种是,一个功能只做一件事。

在对问题的处理方面,将庞大的单体应用拆分为一套服务,不对功能进行更改,但是对程序进行分割,在测试调通时,针对不同的部分进行不同的调试,每一个服务都有一个明确的定界,被分割为完全独立的部分,服务间使用统一RPC进行通信。实现了模块化,实现了负载均衡以及单点故障处理,在一个服务出错时不用停止整个应用,只需要停止部分功能,实现了快速启动。每个个体服务都能被更快的开发和维护。

开发者在遵循同一通讯原则的前提下可以使用不同的开发模式与语言,开发者在替换和调试新技术的上线时可以实现部分上线,迭代替换,不需要在同一时间内实现对整个应用的维护和替换,减少了工作量,同时降低了维护系统说消耗的时间。实现了维护后的秒级启动。

微服务应用使用分布式部署,不同的部分分管不同的功能,一个服务处理一个功能,不同功能之间使用Docker的沙箱隔离机制进行纵向分割,在一个服务出错的时候启动备用服务,确保了整个系统的可靠性。

3 系统设计

项目大体使用Java语言进行开发,在相是配的框架中选择了Spring Cloud for Alibaba,其中集成了大量的分布式應用开发所必须要的组件,项目使用Maven进行统一依赖管理。

Nacos:系统服务与注册发现中心,启动的服务被注册在Nacos上,由其进行统一管理和发现。

Sentinel:服务熔断管理,监管服务的状体,提供服务熔断后的处理放反,实现熔断类的接口。@FeignClient(value = "service-provider",fallback = EchoServiceFallback.class)

Dubbo:实现高效的负载均衡策略,区分消费者与提供者,实现大批量的服务守护,同时提供智能分发,实现大量的服务异步链接,实现了系统的垂直扩展与水平扩展。

使用3台阿里云学生服务器进行线上测试,开放不同端口进行分布式开发,实现了项目组成员的协同线上开发。

项目代码管理平台:GitLab,所有项目代码上传到私有云端管理,增强安全性,降低协同开发的难度。

私有仓库:使用Nexus作为项目生成仓库的管理者,实现了本地资源的并行上传和多地同步。方便开发成员访问内部编写的资源包。

镜像服务:使用Harbor进行镜像服务管理,确保开发中数据的安全性,以及服务的上线稳定。

通过API网关形式将内部每一个服务放入服务注册中心精心分发,减少用户端需要记录的IP数量同事为小部分的维护提供了便利,不需要没有大范围变更的情况下更改用户端的数据,减少了版本的更新。

内部使用装萌针对Java的序列化语言Kryo进行RPC通信,进一步提升系统运行的效率,服务有多个备份,当一个服务阻塞时使用下一备用服务,实现负载均衡。

4 结语

随着互联网技术的飞快发展,传统的单体应用在面临多并发和高访问量的情况下存在缺陷,而且系统内部耦合度较高。微服务架构具有良好的横向扩展能力,能够将单点的压力分布到其他每一个服务中。考虑到本系统将要面临的多次访问以及长时间异步请求,所以在设计的初始阶段就是用了分布式的开发思想。对不同的系统进行不同的分析,设计出于实际需求相符合的系统才是开发中的重要步骤。

参考文献:

[1] 王磊.微服务架构与实践[M].北京:电子工业出版社,2015.

[2] 黄小锋,张晶.微服务架构框架介绍与实现[J].电脑与信息技术,2016(6):14-16.

[3] 蒋勇.基于微服务架构的基础设施设计[J].软件,2016,37(5):93-97.

基金项目:

国家大学生创新创业项目成果(编号:201913001014)。

作者简介:

谢松(1999.10-),男,汉族,江西抚州人,本科软件工程专业在读,主要进行Java系统设计与开发;

王雯(1999.10-),女,汉族,浙江衢州人,本科软件工程专业在读,主要从事Web系统开发与研究;

张琪(1972.9-),男,汉族,江苏南京人,副教授,系统分析师,主要从事软件系统、物联网及大数据等领域研究。

(作者单位:宁波财经学院金融与信息学院)