一文读懂Spring Boot、微服务架构和大数据治理之间的故事(文末有彩蛋!) 推荐 原创 纯洁微笑 2018-05-10 12:23:57 ©著作权 文章标签 Spring boot 文章分类 Java 后端开发 ©著作权归作者所有:来自51CTO博客作者纯洁微笑的原创作品,谢绝转载,否则将追究法律责任 微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如何从系统架构的角度出发,构建灵活、易扩展的系统,快速应对需求的变化;同时,随着用户的增加,如何保证系统的可伸缩性、高可用性,成为系统架构面临的挑战。 如果还按照以前传统开发模式,开发一个大型而全的系统已经很难满足市场对技术的需求,这时候分而治之的思想被提了出来,于是我们从单独架构发展到分布式架构,又从分布式架构发展到 SOA 架构,服务不断的被拆分和分解,粒度也越来越小,直到微服务架构的诞生。 微服务架构是 SOA 架构的传承,但一个最本质的区别就在于微服务是真正的分布式的、去中心化的。把所有的“思考”逻辑包括路由、消息解析等放在服务内部,去掉一个大一统的 ESB,服务间轻通信,是比 SOA 更彻底的拆分。微服务架构强调的重点是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用,这些小应用之间通过服务完成交互和集成。 大约 2009 年开始,Netflix 完全重新定义了它的应用程序开发和操作模型,拉开了微服务探索的第一步,直到2014年3月 Martin Fowler 写的一篇文章 Microservices 以更加通俗易懂的形式为大家定义了什么是微服务架构。Martin Fowler 在文中阐述了对微服务架构的设想,认为微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 每个服务运行在其独立的进程中,服务和服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。 微服务架构和数据治理 随着微服务架构的落地,人们发现微服务架构虽然改进了开发模式,但同时也引入了一些问题,在这所有的问题中,最重要的也是马上要面临的一个问题就是数据的问题。在微服务架构中我们强调彻底的组件化和服务化,每个微服务都可以独立的部署和投产,其实也就意味着很多的微服务有自己独立的数据库。 整个业务数据被分散在各个子服务之后会带来两个最明显的问题:1、业务管理系统对数据完整的查询,比如分页查询、多条件查询等,数据被割裂后如何来整合?2、如何对数据进一步的分析挖掘?这些需求可能需要分析全量的数据,并且在分析时不能影响到当前业务。 从技术方案来讲,我们一般有两种选择来处理这些问题,第一种是在线处理数据,第二种是离线处理数据。 在线处理数据的方案就是按照微服务的标准接口来进行,后端需要哪个系统的数据就去调用某个微服务提供的接口来获取。后端管理平台根据前端的需求去不同的微服务系统去获取数据,然后将返回的数据进行处理后将数据返回。这种方案有两个弊端:1)一方面微服务数据方需要提供数据接口,一方面数据的使用者需要去写调用方法,并且调用者需要编写大量的代码进行数据处理;2)在对各个微服务进行调取数据时会影响微服务的正常业务处理性能。 离线处理数据方案,就是将业务数据准实时的同步到另外一个数据库中,在同步的过程中进行数据整合处理,以满足业务方对数据的需求,数据同步过来后,再提供另外一个服务接口专业负责对外输出数据信息。这种方案有两个特点:1)数据同步方案是关键,技术选型有很多,如何选择切合公司业务的技术方案;2)离线数据处理对微服务正常业务处理没有影响。 在我以往的工作中两种方案都实施过,个人更倾向于使用第二种方案。 MongoDB 和数据分析 MongoDB 称之为对开发人员最友好的数据库,不再强调传统关系数据库中的行和列,整个表可以看作一个 Json 文档,MongoDB 也被认为在 Nosql 中最像关系数据库的 Nosql 数据库,保留了类似关系数据库的数据库(DataBase)、集合(Collection)、文档对象(Document)。 MongoDB 是目前最热门非关系数据库的之一,在最新的数据库排行榜中 MongoDB 排名第五,在所有的非关系数据库中排名第一,非常广泛的应用于国内外的互联网公司。 MongoDB 最大的特点是支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。MongoDB 在高可用和读写负载均衡上的实现非常简洁和友好,MongoDB 自带了副本集的概念,通过设计恰当的副本集和驱动程序,可以非常便地实现高可用、读写负载均衡。 MongoDB 的这些特性非常方便对数据进行高性能查询,MongoDB 支持 Aggregate 和 Mapreduce 利用分而治之的理念来处理大规模数据分析。Spring Boot 对 MongoDB 的支持非常友好,使用 Spring Boot 非常便利的处理对 MongoDB 查询和操作,Spring Boot 也提供了组件包来支持对 MongoDB的使用。 MongoDB 4.0 宣布将正式支持 ACID 事务,未来 MongoDB 的想象空间更加巨大!因此 MongDB + Spring Boot 是微服务架构中数据分析的理想选择之一。 再来聊聊 Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。采用 Spring Boot 可以大大的简化开发模式,所有你想集成的常用框架,它都有对应的组件支持。 Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。同时它集成了大量常用的第三方库配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz 等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用,大部分的 Spring Boot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。 Spring Boot 一经推出就受到开源社区的追捧,Spring Boot 官方提供了很多 Starters 方便集成第三方产品,很多主流的框架也纷纷进行了主动的集成,比如 Mybatis。Spring 官方非常重视 Spring Boot 的发展,在 Spring 官网首页进行重点推荐介绍,是目前 Spring 官方重点发展的项目之一。 Spring Boot 本身发展特别快,自从 2014 年 4 月发布 Spring Boot 1.0 之后,版本更新非常频繁,我在 2016 年使用的时候是 1.3.X,到现在 Spring Boot 已经发布了 Spring Boot 2.0,Spring Boot 2.0 集成了很多最新优秀的技术和新特性,并且对 Spring Boot 1.0 的 API 进行了大幅优化。Spring Boot 一经推出就迅速的成为一门热门的技术,从下图也可以看出这个结论: 上图为2014年到2018年 Spring Boot 的百度指数,可以看出 Spring Boot 2.0 的推出引发了搜索高峰。 Spring Boot 和 微服务架构 随着 Spring 不断的发展,涉及的领域越来越多,项目整合开发需要配合各种各样的文件,慢慢变得不那么易用简单,违背了最初的理念,甚至人称配置地狱。Spring Boot 正是在这样的一个背景下被抽象出来的开发框架,目的为了让大家更容易的使用 Spring 、更容易的集成各种常用的中间件、开源软件;另一方面,Spring Boot 诞生时,正处于微服务概念在慢慢酝酿中,Spring Boot 的研发融合了微服务架构的理念,实现了在 Java 领域内微服务架构落地的技术支撑。 Spring Boot 作为一套全新的框架,来源于 Spring 大家族,因此 Spring 所有具备的功能它都有,而且更容易使用;Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。Spring Boot 开发了很多的应用集成包,支持绝大多数开源软件,让我们以很低的成本去集成其他主流开源软件。 Spring Boot 特性: 使用 Spring 项目引导页面可以在几秒构建一个项目 方便对外输出各种形式的服务,如 REST API、WebSocket、Web、Streaming、Tasks 非常简洁的安全策略集成 支持关系数据库和非关系数据库 支持运行期内嵌容器,如 Tomcat、Jetty 强大的开发包,支持热启动 自动管理依赖 自带应用监控 支持各种 IED,如 IntelliJ IDEA 、NetBeans Spring Boot 的这些特性非常方便、快速构建独立的微服务。所以我们使用 Spring Boot 开发项目,会给我们传统开发带来非常大的便利度,可以说如果你使用过 Spring Boot 开发过项目,就不会再愿意以以前的方式去开发项目了。 总结一下,使用 Spring Boot 至少可以给我们带来以下几方面的改进: Spring Boot 使编码变简单,Spring Boot 提供了丰富的解决方案,快速集成各种解决方案提升开发效率。 Spring Boot 使配置变简单,Spring Boot 提供了丰富的 Starters,集成主流开源产品往往只需要简单的配置即可。 Spring Boot 使部署变简单,Spring Boot 本身内嵌启动容器,仅仅需要一个命令即可启动项目,结合 Jenkins 、Docker 自动化运维非常容易实现。 Spring Boot 使监控变简单,Spring Boot 自带监控组件,使用 Actuator 轻松监控服务各项状态。 总结,Spring Boot 是 Java 领域最优秀的微服务架构落地技术,没有之一。 三者之间的纠葛 了解完微服务架构、Spring Boot、大数据治理之后,我们就发现这样一个有趣的事情:微服务架构是一种架构思想,是架构不断发展的必然结果,具有构建灵活、易扩展、快速应用、可伸缩性、高可用等特点;微服务架构思想的推出对技术有了更高的要求,在这样的背景下 Spring Boot 孕育而生,Spring Boot 出生名门,从一开始就站在一个比较高的起点,又经过这几年的发展,生态足够完善,Spring Boot 已经当之无愧成为 Java 领域最热门的技术。 微服务架构下,数据被分隔到 N 个独立的微服务中,如何应对市场、业务对大量数据的查询、分析就变的非常急迫,利用 Spring Boot 和 MongoDB 可以轻松的解决这个问题,通过技术手段将分裂到 N 个微服务的数据同步到 MongoDB 集群中,在同步的过程中进行数据清洗,来满足公司的各项业务需求。Spring Boot 对 MongoDB 的支持非常友好,一方面 Spring Data 技术预生成很多常用方法便于使用,另一方面 Spring Boot 封装了分布式计算的相关函数,可以让我们以较简洁的方式来实现统计查询。 Spring Boot 是 Java 领域微服务架构最优落地技术,Spring Boot+MongoDB 方案是在微服务架构下数据治理的最佳方案之一。 当然如果我们对微服务架构、Spring Boot 、MongoDB 不熟悉的话,可能需要走很多的弯路。错误的技术方案会对后期的微服务落地带来非常大的困扰,增加额外的开发工作量,我自己深有体会,合适的技术方案可以节省60%以上的工作量。 为此我特意写了一个专栏《微服务技术架构和大数据治理实战》,讲解微服务架构和大数据治理的技术落地。将工作中实践过最具实战代表性的一些内容整理出来,以 51CTO 专栏的形式来展现。课程内容将站在全局的角度去看待微服务实践和数据分析,讲解微服务架构、Spring Boot、MongoDB、同步方案、数据分析等内容,帮助广大的技术朋友们少走弯路,掌握微服务和数据分析的技术。 本专栏共18节课程,围绕四大块内容: 一、微服务架构和 Spring Boot; 二、Spring Boot 和 MongoDB 实战详解,介绍实战中遇到的典型问题; 三、微服务架构下的数据治理,数据同步、实时变更; 四、微服务架构实践的经验和教训。 认真学完此专栏之后,会对微服务架构实践、Spring Boot 和 MongoDB 使用、微服务架构下数据处理有进一步的了解,具备使用 Spring Boot 开发微服务项目、利用相关技术解决微服务架构中数据治理的疼点。 专栏地址:微服务技术架构和大数据治理实战 赞 收藏 评论 分享 举报 上一篇:人工智能发展史 下一篇:给大家聊一聊云收藏从 Spring Boot 1.0 升级到 2.0 所踩的坑 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 一文读懂什么是智慧校园 在科技飞速发展的今天,教育领域正经历一场深刻变革,其中,智慧校园(Smart Campus)作为教育信息化的重要载体,以其高度的智能化、网络化和数据驱动的特点,正在引领着学校迈向教育现代化的新阶段。智慧校园是一种高度信息化、智能化的校园环境,它将先进的信息技术、物联网技术、云计算、大数据分析等与教育教学、科研、管理和服务深度融合,旨在构建一个高效、便捷、个性化、可持续发展的现代化校园生态系统。简而 智慧校园 基础设施 应用层 RAG一文读懂!概念、场景、优势、对比微调与项目代码示例 本文结合“基于ERNIE SDK + LangChain 搭建个人知识库”的代码示例,为您讲解RAG的相关概念。 百度 百度飞桨 RAG 飞桨星河社区 【微服务-Sentinel】基于Nacos实现微服务架构的配置中心实战 前面的文章,我们介绍了Sentinel中熔断与限流的处理方式,了解了Sentinel对系统实施保护的原理。这篇文章我们来一起看一下,如何基于Nacos集中管理应用配置,实现微服务架构中“配置中心”的组件。因为构建Nacos配置中心正是Sentinel实现集群保护的基础所在。前面我们在 Dashboard 配置的一系列规则都要在生产环境中基于 Nacos 配置中心进行持久化存储。一、为什么微服务 微服务 配置文件 spring 一文读懂Spring Boot、微服务架构和大数据治理之间的故事 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如何从系统架构的角度出发,构建灵活、易扩展的系统,快速应对需求的变化;同时,随着用户的增加,如何保证系统的可伸缩性、高可用性,成为系统架构面临的挑战。 微服务 程序员 Java 后端 互联网 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事 转载微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如何... spring 微服务 数据 23、一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事(十五) 微服务架构微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物 spring 微服务 数据 一文读懂数据治理 不明白如何消费数据的数据集市建设就是耍流氓数据是有成本,此前坐馆老司机陈斌老师曾发表过《数据是黄金还是垃圾》的观点。数据是有成本的。存储数据是需要成本的,数据的成本绝非只有物理存储空间成... IT IT业界 IT消息 一文读懂 SOA 架构和微服务架构的区别 点击关注公众号,回复“1024”获取2TB学习资源!场景如果我们打开支付宝首页,去看我们的余额,它会展示你的总资产,昨日收益、累计收益等信息。假如这个页面所展示的信息,都来自各个不同的系统/应用,我们通过各个接口把这些数据展示出来。如果我们现在要在前端页面展示这几项数据的话,我们应该怎么去展示呢?在这种情况下,我们不可能让客户端与6个不同的应用/系统都一一去通信来去完成数据的展示。而是6个应用 百度 java 编程语言 大数据 人工智能 一文读懂微服务架构的重构策略 你很有可能正在处理大型复杂的单体应用程序,每天开发和部署应用程序的经历都很缓慢而且很痛苦。微服务看起来非常适合你的应用程序,但它也更像是一项遥不可及的必杀技。如何才能走上微服务架构的道路?下面将介绍一些策略,帮你摆脱单体地狱,而无须从头开始重写你的应用程序。通过开发所谓的绞杀者应用程序(stranglerapplication),可以逐步将单体架构转换为微服务架构。绞杀者应用程序的想法来自绞杀式藤 JAVA 一文详解微服务架构 [文末中奖名单] 使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节。... 数据库 分布式 java 大数据 编程语言 企业数据治理体系一文读懂 01 数据治理有哪些误区?大数据时代,数据成为社会和组织的宝贵资产,像工业时代的石油和电力一样驱动万物,然而如果石油的杂质太多,电流的电压不稳,数据的价值岂不是大打折扣,甚至根本不可用,不... 大数据 qt4 consul toa 人工智能 【微服务架构】一文读懂单片到微服务架构的模式和最佳实践 在本文中,我们将学习 数据库 大数据 python 人工智能 java 【微服务架构演进】一文读懂单片到微服务架构的模式和最佳实践 在本文中,我们将学习如何使用设计模式、原则和最佳实践来设计微服务架构。我们将使用正确的架构设计模式和技术。在本文结束时,您将了解如何在微服务分布式架构上设计系统以实现高可用性、高可扩展性、低延迟和对网络故障的弹性,从而处理数百万个请求。Event-Driven Architecture本课程将是软件架构设计的旅程,逐步将架构单片演变为事件驱动的微服务。我们将从设计处理少量请求的电子商务整体架构开始 架构 微服务 java 云原生 开发语言 一文读懂微服务,设计微服务的最佳实践! 你是否曾想过,什么是微服务?以及大规模的互联网行业,例如社交,电商,物流,金融等领域,如何使用微服务构建互联网应用以满足用户需求。要了解微服务是什么,你必须了解如何将单体应用程序,拆解为独立打包和部署的微型应用程序。本文章将帮助你清晰化的理解,开发者如何根据需求使用微服务来构建他们的应用程序。下面,从以下几个维度进行阐述 为何选择微服务? 什么是微服务? 微服务架构的功能微服务架构 微服务 应用程序 开发人员 购物网站 数据库 一文读懂数据治理怎么做 股份制改革对我国银行业来说只是一个开始,企业在风险管理、创造价值等方面还有很长的路要走。风险管理要求提供精准的数据模型、创造价值要求充分银行数据资产,这是数据治理的外部推动因素。此外,随... 大数据 编程语言 机器学习 人工智能 数据分析 一文读懂微服务编排利器—Zeebe 一、工作流与微服务编排1. 工作流提到工作流,印象里都是OA系统各种请假审批流。事实上,广义上的工作流是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。简单理解,我们为了实现某个业务目标,抽象拆解出来的一系列步骤及这些步骤之间的协作关系,就是工作流。例如订单发货流、程序构建流等。业界通常用BPMN流程图来描述一个工作流。(1)没有工作流时的任务协作 以实现一个用户购买逻辑为例,如果不 java 一文读懂数据治理和数据资产管理的关系 国际数据管理协会(DAMA)指出:数据治理(Data Governance, DG)是指对数据资产管理行使权力和控制的活动集合(规划、监督和执行)。 数据治理 数据资产管理 (文末送书)一文读懂 Web 安全 Web 安全是互联网中不可或缺的一个领域,这个领域中诞生了大量的黑帽子与白帽子,他们都是安全领域的王者,在平时里,他们利用各种巧妙的技术互相博弈,时不时就会掀起一场 Web 安全浪潮,真可谓神仙打架,各显神通。 服务器 数据 sql 后缀名 解决方案 一文读懂spring boot 和微服务的关系 Spring Boot 和微服务没关系, Java 微服务治理框架普遍用的是 Spring Cloud。 Spring Boot 产生的背景,是开发人员对 Spring 框架越来越复杂的配置吐槽越来越多,Pivotal 设计 Spring Boot 微服务 网易数帆 spring 网易云 开发人员 微服务技术架构和大数据治理实战 微服务 大数据 一、微服务架构的定义微服务(MSA)是一种架构风格,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。它有如下几个特征:小,且只干一件事情。独立部署和生命周期管理。异构性轻量级通信,RPC或者Restful。快速回顾一下Martin Folwer对微服务的定义 二、 广发银行大数据平台微服务的边界与拆分因为讨论的问题涉及银行的行为规范,出于合规 微服务技术架构和大数据治理实战 大数据 解决方案 架构 数据接口