微服务场景下数据抽取与统计(1)

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 微服务场景下数据抽取与统计(1)

案例小故事

某公司的技术架构体系目前还是以集群扩展体系为主,集群扩展体系架构如图9-1所示。在这种体系结构中,可以看到应用都是单块结构,但是单块结构的应用具有扩展性,通过部署在多个Tomcat上实现应用的集群,所有的应用都访问同一个数据库(这个库可以假设为Oracle数据库),数据库间采用DataGuard来实现主从同步,读库只具有读取功能,为后台数据统计功能提供数据查询和统计服务。目前业务请求的并发量每分钟有几十笔交易,看起来这套架构还是能够支撑目前的业务发展的。

 

突然有一天客户在做活动的时候,监控中心出现各种告警,在每分钟500TPS的时候很多请求超时,监控显示目前的服务器不能支撑这么大的并发量,于是快速增加服务器部署应用上线,发现根本没用,加了和没加一样,加几台都一样,运维和DBA发现此时的数据库压力非常大,好不容易熬过这段时间后,团队成员痛定思痛,一致认为目前的架构体系已经不能支持业务的发展,微服务开始快速推进。


其中微服务的数据去中心化核心要点是:每个微服务有自己私有的数据库持久化业务数据。每个微服务只能访问自己的数据库,而不能访问其他服务的数据库。某些业务场景下,需要在一个事务中更新多个数据库。这种情况也不能直接访问其他微服务的数据库,而是对微服务进行操作。数据的去中心化进一步降低了微服务之间的耦合度。


image.png


image.png


问题随后就来了:

(1)以前团队一共就10个人,只负责一二个项目,现在突然增加到平均每人维护二三个项目,上线还是采用由运维手工打war包,如果有修改的配置文件,则运维人员需要一台一台地进行修改,不仅容易上线出错,而且每次上线都会搞到半夜。


(2)根据上面提到的数据去中心化原则,数据库拆分出来了,一个服务一个数据库实例,但是对后台统计系统来说就是“噩梦”,数据库拆分出来了,统计工作、报表工作该怎么办呢?这部分工作还做不做呢?有人说可以分开统计,一个库一个库进行统计,可是这样的工作量将是巨大的。


(3)机房的双活问题,对于金融公司来说双活还是很关键的一项技术指标。应用双活其实比较容易实现,但对于数据库来说却是一个技术问题了,对于Oracle数据库来说,用Oracle官方提供的OGG(Oracle GoldenGate)进行数据同步,根据论坛上面的资料可以看出,OGG的“坑”非常多,而且也容易丢数据,更重要的是贵。采用Oracle的logminer进行同步,同步的数据不是实时的,会有一定延时。而且在定时读取方面还需要自己进行开发,采用Oracle的DataGuard也只能做主从同步,不能做主主双活。调研过后,最终还是决定自己独立开发。


从单块系统到微服务是逐步演进的过程,如果前期没有调研,没有一个整体规划,后期在实现微服务的时候会发现需要做的事情只会越来越多,尤其是对于快速发展的创业型公司来说。针对以上问题,我们如何解决?上面说的第一个问题可以通过合理实施DevOps来解决,而第三个双活问题在本书相应章节中也有详细介绍,本章将给出合理方案深入讨论如何解决第二个问题,即如何在微服务场景下进行数据统计和抽取。


在企业中,需要将不同服务所属的数据库数据抽取到数据仓库,以便能够对平台进行查询和统计,而优秀的数据仓库离不开良好的数据体系的支撑与维护,数据体系建设是一系列长期的、迭代的过程。


什么是数据仓库

第一次接触数据仓库的读者对这个概念会比较陌生,可能会有这样的疑问,什么是数据仓库?为什么要建立数据仓库呢?下面从数据仓库的定义、特点及数仓(数据仓库简称)与操作型数据库的区别三个方面了解数据仓库。


1.数据仓库的定义

最早数据仓库这个概念是由被称为“数据仓库之父”的Bill Inmon提出的,并且在其出版的Building the Data Warehouse一书中给出了数据仓库的详细定义。Inmon在Building the Data Warehouse中定义数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合,用来支持管理人员的决策。


2.数据仓库的特点

1)面向主题

数据仓库采用面向主题的方式组织数据。数据仓库主要是为公司决策者提供数据依据,决策者更关注整体数据反映的情况。以面向主题的方式组织数据可以将各分散子应用或子系统的数据按照主题组织在一起,让决策者可以从更高层面分析数据,挖掘数据背后蕴藏的商业价值,指导决策者做出正确的判断。


2)集成性

数据仓库中集成了各分散数据源的数据。对多个来源、多种类型的数据进行统一加工、汇总、整理,去除数据中的“杂质”,规范字段格式,保证数据仓库中的数据具有全局一致性。


3)相对稳定

操作型数据库中的数据是实时更新的,数据仓库中的数据相对稳定,不会频繁地执行修改、删除操作。在数据仓库中以查询操作为主,数据经过加工进入数据仓库之后一般不会发生改变,会被长期保存或根据业务需求保存很长一段时间后被删除。


4)反映历史变化

数据仓库的主要任务是对大量历史数据进行统计分析,决策者根据历史数据分析结果预测未来发展趋势。

相关文章
|
4月前
|
SQL 数据库 微服务
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
|
4月前
|
消息中间件 Kafka 微服务
微服务数据问题之MetaQ设置同步异步刷盘如何解决
微服务数据问题之MetaQ设置同步异步刷盘如何解决
|
4月前
|
消息中间件 存储 微服务
微服务数据问题之异步刷盘如何解决
微服务数据问题之异步刷盘如何解决
|
2月前
|
存储 搜索推荐 数据库
MarkLogic在微服务架构中的应用:提供服务间通信和数据共享的机制
随着微服务架构的发展,服务间通信和数据共享成为关键挑战。本文介绍MarkLogic数据库在微服务架构中的应用,阐述其多模型支持、索引搜索、事务处理及高可用性等优势,以及如何利用MarkLogic实现数据共享、服务间通信、事件驱动架构和数据分析,提升系统的可伸缩性和可靠性。
38 5
|
3月前
|
安全 网络安全 数据安全/隐私保护
云原生技术探索:容器化与微服务架构的实践之路网络安全与信息安全:保护数据的关键策略
【8月更文挑战第28天】本文将深入探讨云原生技术的核心概念,包括容器化和微服务架构。我们将通过实际案例和代码示例,展示如何在云平台上实现高效的应用部署和管理。文章不仅提供理论知识,还包含实操指南,帮助开发者理解并应用这些前沿技术。 【8月更文挑战第28天】在数字化时代,网络安全和信息安全是保护个人和企业数据的前线防御。本文将探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。文章旨在通过分析网络安全的薄弱环节,介绍如何利用加密技术和提高用户警觉性来构建更为坚固的数据保护屏障。
|
2月前
|
缓存 负载均衡 数据管理
深入探索微服务架构的核心要素与实践策略在当今软件开发领域,微服务架构以其独特的优势和灵活性,已成为众多企业和开发者的首选。本文将深入探讨微服务架构的核心要素,包括服务拆分、通信机制、数据管理等,并结合实际案例分析其在不同场景下的应用策略,旨在为读者提供一套全面、深入的微服务架构实践指南。**
**微服务架构作为软件开发领域的热门话题,正引领着一场技术革新。本文从微服务架构的核心要素出发,详细阐述了服务拆分的原则与方法、通信机制的选择与优化、数据管理的策略与挑战等内容。同时,结合具体案例,分析了微服务架构在不同场景下的应用策略,为读者提供了实用的指导和建议。
|
3月前
|
Java 数据库连接 微服务
揭秘微服务架构下的数据魔方:Hibernate如何玩转分布式持久化,实现秒级响应的秘密武器?
【8月更文挑战第31天】微服务架构通过将系统拆分成独立服务,提升了可维护性和扩展性,但也带来了数据一致性和事务管理等挑战。Hibernate 作为强大的 ORM 工具,在微服务中发挥关键作用,通过二级缓存和分布式事务支持,简化了对象关系映射,并提供了有效的持久化策略。其二级缓存机制减少数据库访问,提升性能;支持 JTA 保证跨服务事务一致性;乐观锁机制解决并发数据冲突。合理配置 Hibernate 可助力构建高效稳定的分布式系统。
60 0
|
4月前
|
消息中间件 微服务
微服务数据问题之同步复制如何解决
微服务数据问题之同步复制如何解决
|
4月前
|
消息中间件 负载均衡 Kafka
微服务数据问题之Kafka实现高可用如何解决
微服务数据问题之Kafka实现高可用如何解决
|
4月前
|
消息中间件 存储 负载均衡
微服务数据问题之Kafka作为元数据节点如何解决
微服务数据问题之Kafka作为元数据节点如何解决