美文网首页
55,一文读懂Spring Boot、微服务架构和大数据治理之间

55,一文读懂Spring Boot、微服务架构和大数据治理之间

作者: 滔滔逐浪 | 来源:发表于2019-01-17 21:06 被阅读210次

为服务架构

微服务的诞生并非偶然,他是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有2类特点:需求变化快和用户群体庞大,在这种情况下,如何从系统架构的角度出发,构建灵活,易扩展的系统,快速应对需求的变化;同时,随着用户的增加,如何保证系统的可伸缩性、高可用性,成为系统架构面临的挑战。

如果还按以前的传统开发模式,开发一个大型而全的系统已经很难满足市场对技术的需求,这时候分而治之的思想被提出来了,于是我们从单独架构发展到分布式架构,又从分布式架构发展到SOA架构,服务不断的被拆分和分解,力度也是越来越小,直到微服务架构的诞生。

微服务架构师SOA架构的传承,但是一个最本质的区别在于微服务是真正的分布式的,去中心化的。把所有的思考逻辑包括路由,消息解析等放在服务内部,去掉一个大一统的ESB,服务间轻通信,是比SOA更彻底的拆分。微服务架构情调的重点是业务系统需要彻底的组件化和服务化。原有的单个业务系统会拆分为多个可疑独立开发,设计,运行和运维的小应用,这些小应用之间通过服务完成交互和集成。

大约2009年开始,netflix完全重新定义了它的应用程序开发和操作模型,拉开了为服务探索的第一步,直到2014年三月Martin Fowler 写的一篇文章MIcroservices以更加通俗易懂的形式为大家定义了什么是微服务架构.Martin Flower在文中阐述了对微服务架构的设想,认为微服务架构是一种架构模式,他提倡将单一的应用程序
划分成一组小的服务,服务之间相互协调,互相配合,为用户提供最终价值。

每个服务运行在其独立的进程中,服务和服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful api )。每个服务都是围绕具体的业务进行构建,并且能够被独立的部署到生产环境,类生产环境等。另外,应尽量避免统一的,集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言,工具对其进行构建’。

微服务架构和数据治理

随着微服务架构的落地,人们发现微服务架构虽然改进了开发模式,但同时也引入了一些问题,再这所有的问题中,最重要的也是马上要面临的一个问题就是数据的问题,在微服务架构中我们强调彻底的组件化和服务化,每个服务否可以独立的部署和投产,其实也就意味着很多的微服务有自己独立的数据库。

整个业务数据被分散在各自子服务之后会带来2个明显的问题:
1,业务管理系统对数据完整的查询,比如分页查询,多条件查询等,数据被割裂后如何整合?
2,如何对数据进一步发掘和挖出?这些需求可能需要分析全量的数据,并且在分析时不影响当前服务。

从技术方案说,我们一般有2种选择来处理这些问题,第一种是在线处理数据 ,第二种是离线处理数据。

在线处理数据的方案就是按照微服务的标准接口来进行,后端需要哪个系统的数据就去调用某个微服务提供的接口来获取。 后端管理平台根据前端的需求去不同定位服务系统去获取数据,然后将返回的数据进行处理后将数据返回。这个方案与2个弊端:1)一方面微服务数据方需要提供数据接口,一方面数据的使用需要去写调用方法,并且调用者要编写大量的代码进行数处理;2)在对各个微服务进行调取数据时候回影响微服务正常业务处理性能。

离线处理方案,就是业务数据准时时的同步到另外一个数据库中,在同步的数据过程中进行数据整合处理,以满足业务方对数据的需求,数据同步过来后,在提供另外一个服务接口专业负责对外输出数据的信息,这种方案的特点:1 )数据同步方案是关键,技术选型有很多,如何选择切合公司业务的技术方案;2) 离线数据处理对微服务正常业务处理没有影响。

在我以往的工作中2种方案都有实施过,个人比较倾向于使用第二种方案。

MongoDB和数据分析
MongoDB称之为对开发人员最友好的数据库,不在强调传统关系数据库中的行和列,整个表可以看一个Json文档,MongoDB也被认为在NOSql中最像关系数据库的NOsql数据库,保留了类似数据库的数据库(DataBase),集合(collection),文档对象(Document).

MongoDB 是目前最热门非关系数据库之一,在最新的数据库排行榜中MOngoDB排名第五,在所有的非关系数据库中排名第一,非常广泛的应用于国内外的互联网公司。

MongDB最大的特点是支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据库建立索引。MongoDB在高可用和读写负载均衡上的实现非常简洁和友好,MongoDB自带了副本集的概念,通过设计恰当的副本集和驱动程序,可以非常便捷的实现高可用,读写负载均衡。

MongoDB的这些特性非常方便的对数据进行0高性能查询,mpngoDB支持Aggregate和Mapreduce利用分而治之的理念来处理大规模数据分析。Springboot对MOngoDBd 支持非常好,使用Springboot 非常便利的处理对MongoDB查询和操作,Springboot也提供了组件包来支持对MongoDb的使用。

MongoDB4.0宣布正式支持ACID事务,未来MongoDB的想象空间更加巨大!因此MongDB+springboot是微服务架构中数据分析的理想选择之一。

再来聊聊Springboot
Springboot 是由Pivotal 团队提供的全新框架,其设计目的用来简化新spring应用的初始搭建以及开发过程。该框架使用了特定的方式进行配置,从而使开发人员不在需要定义样板华配置。采用Springboot 可以大大的简化开发模式,所有你想集成的常用框架,他都有对应的组件支持。

Springboot 基于Spring开发,springboot本身不提供Spring 框架的技术特性以及扩展功能,只是用于快速,敏捷的开发新一代基于spring程序,也就是说,他并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升spring开发者体验的工具,同时他集成了大量常用的第三方库配置(例如redis,MongoDB,jpa,RabbitMQ,Quartz等等),SPringboot 应用中这些第三方库几乎可以零配置的开箱即用,大部分的springboot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。

springboot一经推出就受到开源社区的追捧,springboot官方提供了很多Starters方便集成第三方产品,很多主流的框架也纷纷进行了主动的集成,比如Mybatis. spring官方非常重视Springboot的发展,在spring 官网首页进行重点推荐介绍,是目前Spring官方重点发展的项目之一。

15595524-7de10e38d6b1ae34.png

springboot 本身发展特别快,自从2014年4月发布springboot1.0之后,版本更新非常频繁,在2016年使用的时候是1.3X,到现在一经分布了Springboot 2.0, SpringBoot2.0集成了很多最新优秀的技术和新特性,并且对springboot1.0的api进行了大幅优化。spring boot一经推出就迅速的成为一门热门的技术,从下图也可以看出这个结论:


1.png

上图为2014年到2018年 Spring Boot 的百度指数,可以看出 Spring Boot 2.0 的推出引发了搜索高峰。

Spring Boot 和微服务架构
随着spring 不断的发展,设计的领域越来越多,项目整合开发需要配合各种各样的文件,慢慢变得不那么容易使用简单,违背了最初的理念,甚至人称配置地狱。springboot 正是在这样的一个环境背景下被抽象出来的开发框架,目的为了让大家更容易使用spring,更容易的集成各种常用的中间件,开源软件;另外一个方面,Springboot 诞生的时候,正处于微服务概念在慢慢运量中,springboot的研发融合了微服务架构的理念,实现了在java'领域中微服务架构落地的技术支撑,

Spring boot 作为一套全新的框架,来源于spring大家族,因此spring所有具备的功能他都有,而且更容易使用;Spring boot以约定大于配置的黑心思想,默认的帮我们进行了很多的设置,多数spingboot 应用中只需要很少的Spring配置。Springboot 开发了很多的应用集成包,支持绝大多数开源软件,让我们以很低的成本去集成其他主流的开源软件。

spring boot特性:

使用spring 项目 引导页面可以在几秒构建一个项目

方便对外输出各种形式的服务,如 RESRT API WebSocket,Web, Streaming,Tasks

非常简洁的安全策略集成。

支持关系数据库和非关系数据库

支持运行期内嵌容器,如Tomcat, Jetty

强大的开发包,支持热启动

自动管理依赖

自带应用监控

支持各种IED, 如IntelliJ IDEA, NetBeans

Spring boot 的这些特性非常方便,快速构建独立的微服务。所以我么使用Spring boot 开发项目,会给我们传统开发带来非常大的便利度,可以说是如果你使用过Spring boot开发过项目,就不会再愿意以以前的方式去开发项目。

总结一下,使用Springboot 至少可以给我们带来以下几个方面的改进:

springboot 使编码变简单,Springboot 提供了丰富的解决方案,快速集成各种解决方案提升开发效率。

Spring boot 使配置变的简单,Spring boot 本身内嵌启动容器,仅仅需要一个命令即可启动项目,结合Jenkins ,Docker 自动化运维非常容易实现。

Spring boot 使部署变动简单,Springboot自带监控组件,使用Acutator 轻松监控服务各项状态。

总结 ,Springboot 是java 领域最优秀的微服务架构落地技术,没有之一。

三者之间的纠葛

了解完微服务架构,Springboot,大数据治理后,我们就发现了这样一个有趣的事情: 微服务架构是一种架构思想,是架构不断发展的必然结果,具有构建灵活,容易扩展,快速应用,可伸缩性,高可用等特点;微服务架构思想的推出对技术有了更高的要求,在这样的背景下Springboot 孕育而生,Spring boot出生名门,从一开始就站在一个比较高的起点,又经过这几年的发展,生态逐渐完善,Springboot 已经当之无愧成为java领域最热门的技术,

微服务架构下,数据被分隔到n个独立的微服务中,如何应对市场,业务对大量数据的查询,分析就变得非常急迫,利用Spring boot和MongoDB可以轻松的解决这个问题,通过技术手段将分裂到n个微服务的数据同步到mongoDB集群中,在同步到过程中进行数据清洗,来满足公司各项业务需求。springboot 对MongoDB的支持非常友好,一方面SpringDAta
技术预生成很多常用方法便于使用,另外一个方面SpringBOot 封装了分布式计算的相关函数,可以让我们以比较简洁的方式来实现统计查询。

SpringBOOT 是Java 领域微服务架构最优秀的技术,Spring boot+MongoDB 方案是在微服务架构下数据治理的最佳方案之一。

当然如果我们队微服务架构,springboot,MongoDB 不熟悉的话,可能会走很多的弯路。错误的技术方案对后期的未付落地带来非常大的困扰每增加额外的开发工作,我自己神佑体会,合适的技术方案可以节省60%以上的工作量。

6.png

相关文章

网友评论

      本文标题:55,一文读懂Spring Boot、微服务架构和大数据治理之间

      本文链接:https://www.haomeiwen.com/subject/dncwdqtx.html