计算机视角下微服务相关技术研究与应用实践

论文价格:免费 论文用途:其他 编辑:硕博论文网 点击次数:
论文字数:32511 论文编号:sb2020032821492830163 日期:2020-03-31 来源:硕博论文网
本文是一篇计算机论文研究,本论文以微服务架构为研究对象,在分析了其特点的基础上,着重对微服务架构下数据集成问题和客户端负载均衡效率问题进行了深入研究,提出了基于事件消息流的数据集成解决方案和基于动态权重的负载均衡算法,并将优化过的微服务架构应用于污水处理管理系统,给出了该系统的设计方案和测试结果。

第一章  引言

1.1 论文背景及意义
在互联网时代,社会发展速度与日俱增,各类互联网应用如雨后春笋般大量涌现,在方方面面影响着人们的生活。在这背后,互联网技术起到了举重轻重的作用,然而随着社会的进一步发展,如何面对快速变更的需求?如何处理复杂的业务场景?如何面对海量的访问请求?如何处理海量的各种数据?这些都对互联网技术提出了更高的要求。
在众多的互联网技术中,Web 技术具有举足轻重的地位。传统的 Web 技术多采用的是单体式架构(Monolithic Architecture)开发系统(如 CRM、ERP 等大型应用)[1],整个应用的开发方式是分层的思想,将整个应用的数据库、接口、UI 等进行分层设计、统一开发并最终分层实现。典型的 Web 应用通常分为表示层、控制层、服务层、数据访问层、持久层这 5 层,然后在这些层次结构中横向开发各类模块。随着业务逻辑的变更,单体架构每次更新都需要重新测试、部署整个应用,甚至有可能因为某个模块的变更导致整个应用不可用;同时,在访问量上升需要提高系统性能时,系统需要拓展却无法进行针对性的拓展,而只能拓展整个应用。随着时间的推移,应用会变得越来越笨重,软件开发者很难保持原有好的模块架构,使得一个模块的变更很难不会影响到其它的模块,应用各项开发维护工作也会随着变得越来越困难,进而无法快速响应市场的变化[2]。
针对这个问题,Gartner 提出了 SOA(Service Oriented Architecture)面向服务的架构[3]。SOA 提出在对软件进行架构设计时,把整个应用服务根据业务细化成多个独立的小的服务,即低耦合及面向服务流程的思想[4]。但是在 SOA 的架构中,企业服务总线仍处于非常重要的位置[5],致使整个系统的 SOA 架构很难实现真正的面向服务以及完全的组件化,SOA 的研究和应用遇到了瓶颈[6][7]。
.............................

1.2 国内外发展现状
2014 年,Martin Fowler 和 James Lewis 最开始对微服务进行了定义[2],S.Newman 在 Martin Fowler 的文献的基础上介绍了上述微架构的某些方面的实践[10],L.Krause 在他的工作中讨论了微服务的模式和应用[15]。
近些年来,微服务架构正在被越来越多的公司和开发者所使用,经受住了实践的考验。如 Netflix,Amazon,Twitter 等业界大型网站系统都已声称迁移至微服务架构,SAP 公司于 2016 年下半年推出了 Yaas 平台,专门为微服务进行销售。目前 Yaas 平台中已经集成了与各个领域相关的微服务,如电商、制造企业、食品行业、医疗行业等。随着微服务开发者的增加,Yaas 平台的微服务将日益丰富[16]。同时,开源社区也贡献出了不少用于简化微服务开发的框架和分布式相关框架,如 Spring boot,Spring cloud,阿里巴巴 Dubbo,京东 JSF 等等,进一步推进了微服务架构的落地和发展。
另外还有不少研究人员在各自擅长的领域对微服务架构做了进一步的研究和改进,推动了微服务架构和相关支撑技术的发展,同时在更广泛的应用领域开展了许多实践工作。
Chris Richardson 总结了微服务架构在实践中的各类常见模式,包括服务拆分、部署模式、边界问题、通信模式、数据管理,安全与测试等等,为开发人员和架构师快速选型实践提供了颇有价值的参考.
北京交通大学的肖仲垚研究实现了一种微服务通信框架,主要在 Netty 设计实现的通信模块和自定义的二进制私有协议栈模块上进行二次开发。相比于传统的 http 协议调用方式,该通信框架具有码流小、可维持长连接以及传输速率更高等优点。同时在使用方式上借用了自定义注解的便捷性,通过自定义注解在业务系统中配置该通信框架,有效降低了框架与业务系统之间的耦合强度。框架同时还具备服务注册中心功能,可以动态的注册、发现服务以及及时替换掉故障服务,采用开源框架 Hystrix 实现服务熔断处理,进一步提升了通信框架整体的可靠、可用性。
..........................

第二章  相关技术介绍
 
2.1 Spring Boot
Spring  Boot 是 Pivotal 基于 Spring  Framework 创建的优异的 J2EE 框架,因由 SPR-9888[22]的请求被开发出来,该请求由 Mike  Youngstrom 提出,要求在 Spring 框架中支持无容器 Web 应用程序体系结构。
Spring  Boot 是一种“约定优于配置(convention-over-configuration)”的解决方案。“约定优于配置”是软件框架使用的软件设计模式,其试图减少使用框架的开发者在不必丧失灵活性的情况下做出的决策的数量,通俗来讲就是在以往大量的项目配置中,事先定义好了许多约定性的配置,无需开发者再次进行配置以提高开发效率。Spring  Boot 中预先配置了 Spring 对 Spring 平台和第三方库的最佳配置和使用的“见解视图(opinionated  view)”,使得大多数的 Spring  Boot 应用程序只需要很少的配置即可运行[23]。
Spring  Boot 主要有以下特点:
(1)快速构建基于 Spring 的独立 Web 应用 (2)内嵌了 Tomcat 或者 Jetty 等 Web 容器,应用无需以传统的 war 包形式部署 (3)提供基于约定配置的“启动器”POM 文件简化了 Maven 项目的配置 (4)在一切可能的时候自动配置 Spring 及第三方库 (5)提供生产环境中常见的指标、运行状况检查和外部化配置功能 (6)绝对没有代码生成,也不需要传统的 XML 配置
Spring  Boot  的友好性使得 Java 开发人员能够快速开发大规模的项目,Spring  Boot 是在 Java 语言下开发基于 REST 和微服务架构的 Web 后台应用的最快的工具之一。
...........................

2.2 Spring Cloud
Spring Cloud 为开发人员提供了一套用于快速构建分布式系统中常见模式的工具。它基于 Spring Boot 的开发友好性大大地简化了分布式系统基础设施的开发工作,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,均可采用 Spring Boot 进行开发并易于启动和部署。事实上,Spring Cloud 并不是在重复造轮子,它做的是组合目前各家公司贡献给开源社区的比较成熟、经过实践检验的服务框架,经过 Spring Boot 的封装简化了复杂繁琐的配置和实现原理,最终给开发者留出了一套开发友好、部署维护便利的分布式系统开发工具包[24]。Spring,Spring boot,Spring Cloud 之间的关系如图 2.1 所示。
图 2.1 Spring,Spring boot,Spring Cloud 关系图
...............................
 
第三章  数据集成方案设计 ......................................... 11
3.1  数据集成方案分析 ................................... 11
3.2  方案设计与实现 ................................... 13
第四章  ribbon 负载均衡算法改进 ...................................... 21
4.1 ribbon 负载均衡算法 ................................ 21
4.2  算法设计与实现 .............................................. 21
第五章  微服务应用实践 ................................... 33
5.1  系统需求分析................................ 33
5.2  系统设计 ...................................... 34

第五章  微服务应用实践

5.1 系统需求分析
某市污水处理厂管理系统主要有以下几个目标1、实现污水处理厂的信息化管理模式,提高企业运作效率。2、实现各生产工艺流程的实时监控和运行控制,增强生产运营的实时性和稳定性。3、建立企业知识库,提高工作人员知识和技能水平,并为后期人工智能自动异常诊断打下基础。4、提供完善的报表和统计分析功能,用以支持科学管理决策。 系统功能性需求主要包括五大功能模块:
1、数据管理模块。数据管理模块主要负责公共信息、化验数据、运行数据、能耗物耗数据、维护管理数据、异常诊断信息等各类数据的采集管理以及对外提供数据。采集的数据主要有两大来源:一是各类传感器和工控机采集到的实时数据;二是相关工作人员手工录入的数据。同时子公司的数据管理模块所保存的数据还需要同步到集团公司构建数据仓库进行数据分析。数据管理模块为系统实时监控及各类数据分析工作提供了数据基础。
2、运行控制模块。运行控制模块主要对数据管理模块中采集的各类数据进行图形化界面展示,并且可以通过对工控机发送控制指令控制相应的设备执行某些操作。同时,对生产过程中的异常情况实时告警并提供相应预案,在异常处理后将相应的数据和处理方案存入知识库,随着运行时间的增加,知识库不断丰富,进一步提高了污水处理可靠程度和处理效率。
图 5.1  总体架构图
............................

第六章  总结与展望

6.1 总结
本论文以微服务架构为研究对象,在分析了其特点的基础上,着重对微服务架构下数据集成问题和客户端负载均衡效率问题进行了深入研究,提出了基于事件消息流的数据集成解决方案和基于动态权重的负载均衡算法,并将优化过的微服务架构应用于污水处理管理系统,给出了该系统的设计方案和测试结果。论文主要的研究内容可分为以下几个部分:
(1)对微服务架构下数据集成方案进行研究设计。在分析了微服务架构下多种数据集成方案如API调用、导出程序周期性导出和事件消息导出的优劣之后,针对数据事件导出方案做了进一步的研究,方案引入了 Mysql binlog 解析工具Maxwell 和消息中间件 Kafka 作为实践落地载体,通过 Maxwell 将 Mysql 数据变更 binlog 解析为 JSON 格式的数据,通过 kafka producer 发送至 kafka,再由消费者消息,消费者将 JSON 消息转换为 SQL 语句更新至集成数据库,完成数据汇集工作。最后搭建测试环境对方案进行测试验证。
(2)对微服务架构下客户端负载均衡算法进行研究改进。分析了微服务架构工具集 spirng cloud 中的负载均衡库 ribbon 后,提出一种动态权重负载均衡算法,提高 ribbon 负载均衡效率。通过 linux 服务器中的/proc 文件系统下的相关文件获取负载信息,通过 websocket 协议将收集到的负载信息发送至 ribbon 进行整合处理计算出每台负载服务器的权重,当服务请求到来时,依据各服务器的权重为请求分配处理服务器。最后搭建测试环境对算法进行测试验证。
(3)将微服务架构思想应用于污水处理管理系统实践。将微服务架构应用于工业领域生产实践,分析了污水处理信息系统的需求,做出基于微服务架构的污水处理管理系统的整体架构设计、数据库设计、分布式事务设计等设计,并将上文的数据集成方案和改进后的 ribbon 应用于系统中,最后对系统进行了功能、性能和安全测试。
参考文献(略)


如果您有论文相关需求,可以通过下面的方式联系我们
点击联系客服
QQ 1429724474 电话 18964107217