《微服务架构在大数据管理平台中的应用.docx》由会员分享,可在线阅读,更多相关《微服务架构在大数据管理平台中的应用.docx(4页珍藏版)》请在第一文库网上搜索。
1、微服务架构在大数据管理平台中的应用工引言随着互联网行业的高速发展和技术的更新换代,软件产品通常呈现出两类特性:用户需 求变化快和数据量庞大。传统单体应用架构模式很难适应和满足市场的需求,开发出速度更 快、更有弹性的应用系统。在这种情况下,如何构建一套灵活、可扩展并且稳定的自动化系 统成为架构师们所面临的一大难题。海量数据下,传统架构开发模式的单一服务已经不能满足用户对时间性能的需求和模块 的独立部署、升级或者替换。在这种情况下,分而治之的思想被提出。于是架构模式从单体 架构模式发展到分布式架构模式,再到面向服务的架构模式(SOA),直到现在的微服务架 构模式,业务服务被不断的细化拆分,颗粒度也
2、随之越来越小。2014年3月MaIIin Fowler在Microservices中阐述了一种微服务架构模式的设计思想: 将单一的应用程序划分成为一组小的服务,服务之间互相协调、互相配合,为用户提供最终 的价值。Martin FoWIer并没有直接给微服务一个明确的定义,而是提出一种架构理念,用简 洁的模组化方式组合出复杂的大型应用系统,系统中各个功能模块服务独立运行,模块与模 块之间使用与语言无关的轻量级通信协议进行通信。每个模块都根据某一个具体的业务进行 构建,并且能独立、自动化地部署到生产、类生产等环境。2现状分析正如当一个项目里的代码超过一百万行.中所描述的场景,随着用户对应用系统 需
3、求不断的增加和变更,业务逻辑越来越复杂,源代码行数越来越多,单体式架构模式无论 从组织架构层面还是源代码层面,代码的调整、修改和发布都会变得非常困难。甚至每次发 布、升级新版本就像行军打仗一样,需要最高领导从上到下协调工作,浪费很多时间成本, 而且不符合敏捷开发的思想。如果采用微服务架构,将整体需求按业务拆分成松耦合式微服务,各个微服务模块独立 开发、部署、上线。理想情况下,每个团队符合亚马逊的TwoPizzaSize”原则,即一个团 队在6L0人,这也符合敏捷开发团队的人数,相互之间沟通方便,迭代开发速度快。3大数据管理平台体系大数据平台的整体建设思路是满足快速、高效、准确的需求。整个大数据
4、平台是建立在 开源HadOOP的基础上,根据特定需求,改造成适合自身使用的体系,如图1所示。大数据管理平台主要分为以下几层:大数据管理平台体系图1大数据管理平台体系数据采集层实现整个大数据管理平台基础数据信息的采集和就地显示等功能。平台通过 通讯管理机采集的数据主要包括电、水、气、暖等能源信息。通讯管理机可支持市场上大多 数厂家(国网、天溯、三星、威盛、科陆、中电、威思顿、纳宇等)智能电表、智能水表、 智能燃气表等的数据采集。通讯管理机通过网络通讯接口上传数据到数据接入层。数据接入层是数据接入大数据管理平台的门户,所有流入大数据平台的数据必须经过接 入层的把控。接入层提供三种数据接入方式:We
5、b数据接入页面(即表单实现方式)、基于 SQL的ETL功能、第三方系统对接方式(约定数据传输协议格式)。接入层的数据最终组装 成平台定义的协议格式发送到各个业务模块,进行运算、分析、入库等操作。数据仓库层通过元数据、数据湖、资源调度去建立统一的数据管理中心,用于对管理决 策过程的支持。元数据是用来描述数据的数据。数据湖用来统一存储数据,通常是HDFS。 资源调度就是分配内存、磁盘、CPU等资源。数据仓库根据需求从业务中收集、抽取、转换 有关数据,进行适当的分析、处理,将数据转换成商务智能,拟定出更加符合客户需求的战 略并付诸实施,将实践结果再次反馈数据仓库进一步研究、分析,良性循环,提高企业竞
6、争 力。计算层包括在线计算、实时计算和离线计算。以能耗数据为例,根据历史和当前数据使 用核心算法,运用机器学习和人工干预的方式得出当前能耗排名报表、节能方案建议等有价 值信息,以达到节能的最终目的。可视化分析层提供主要数据总览、报表展示、报表导出、权限控制等功能。在可视化页 面中,出于安全性考虑,不同角色人员拥有不同的操作权限,相应的所展示的某信息也不全 面。4基于微服务架构的大数据管理平台的实现大数据管理平台是部署在云端的,平台架构如图2所示。(工具服务)日志服务监控服务 编排服务服务发现 持续集成持续发布数据总览节能报告能耗排行能耗预测报表导出告警显示(平台服务用户管理安全服务权限管理缓存
7、服务负载均衡数据挖掘数据库实时库推送服务多维分析告警诊断数据修攵(可视化服务)(容器服务)镜像构建镜像仓库镜像加速容错服务,基础服务)云主机 云硬盘 云网络(采集服务)智能仪表通讯管理机 FD图2大数据管理平台基础架构大数据管理平台采用KUbemetes+容器+负载均衡技术实现。容器的核心是标准和封装, 将环境配置、依赖版本、权限修改、路径创建等都打包到标准的容器镜像中,只要基于该镜 像创建出的容器就完全相同。所以,容器技术的出现完全改变了应用程序的部署和管理方式, 从安装配置环境到编码,到发布、升级,镜像是贯穿整个过程的标准,最终保证开发、测试、 生产环境完全一致。使用KUbemetes+容
8、器+负载均衡技术一个非常大的好处是可以保证整个 平台的稳定性,当一个容器挂掉,可以通过副本在秒级恢狂,对业务几乎没有任何影响,对 用户体验非常好。数据采集层采用了软件+硬件的负载均衡技术实现。软件方式采用加权最小连接算法, 硬件方式使用F5。加权最小连接算法是最小连接算法的超集,为每个服务器设定权值表示 其处理性能。系统管理员可动态设置每个服务器对应权值。在新连接发起时,加权最小连接 算法会尽可能地使服务器已连接数与权值成比例。大数据管理平台的架构设计有以下几个特点:(1)模块功能小而单一根据微服务架构“微”的特点并结合公司在医疗、机场、商业地产行业的战略目标,将 整体业务拆分成多个小而单一的
9、功能,每个功能只专注于做一件事,已到达系统松耦合、高 维护的能力。初步划分模块时,通常按业务领域,先划分成采集服务、基础服务、容器服务、 工具服务、可视化服务、平台服务几大类。然后每类服务再划分出单一功能的微服务,如图 2所示。(2)自动化独立部署、升级、替换通过容器相关技术,使每个业务模块都可以独立开发、部署、升级以及备份,从而不影 响整个系统。我们可以对比单体应用架构模式。在单体应用模式下,所有功能模块打包到统一个WAR 或EAR文件下,部署到某个应用服务器(TOMCAT、WebLogic、JboSs、IBAMWebSPeher等) 上。在更改某一模块代码时,例如数据接入模块,你需要重新编
10、译整个项目,重新打包、替 换整个系统,即使并未更改其他模块代码。当你提到JenkinS后,很可能某一个和数据接入 模块完全不想管的权限管理模块出错了。这可能增加我们的工作量和风险。微服务架构的独立开发部署能力就避免了这样的问题,通常一个微服务是在领域驱动设 计下完成的,各个业务模块之间有清晰的边界线。(3)轻量级通信协议微服务架构提倡将整体业务拆分成多个小而单一的微服务,每个微服务都是独立运行的。 从程序角度来看,每个微服务都可以视为一个进程。所以微服务之间的通信不再是简单的进 程内呼叫,而是需要网络通信协议来实现。因此我们需要一种轻量级通信协议实现分布式服 务间的通信。微服务间通信常用的是H
11、TTP协议下的REST或者Message机制,例如JMS, AMQP 等。(4)去中心化数据管理所谓去中心化即分库。微服务架构强调小而单一,每个微服务都可以独立开发、升级、 部署,其实也就意味着很多微服务拥有独立的数据库。随着微服务架构模式落地,业务数据被分散在各个微服务之中,同时也带来了两个明显 的问题:1 .如何满足业务对数据完整查询? 2.如何对数据进行挖掘分析?这些问题需要在不 影响当前微服务业务的前提下,分析全量数据。大数据管理平台提供在线处理数据和离线处理数据两种方式。在线处理数据即微服务对 外提供标准接口,供其他服务调用。在线方式需要编写大量源码进行数据处理,而且可能会 影响微服务业务性能,不推荐使用。离线处理数据使用数据仓库技术将微服务中分散的业务 数据准实时同步到另一数据库,供完整数据查询和数据分析挖掘使用。离线方式对微服务业 务性能几乎无影响。5结束语随着大数据时代的到来,数据正在迅速膨胀变大,在大数据管理系统中,传统的架构模 式已经不再满足人们对性能的需求,微服务架构己经成为发展的必然趋势。并且随着云计算、 分布式和容器技术的发展,微服务技术上的一些问题己经可以得到很好的解决,微服务架构 模式的应用已经成为一种浪潮。