营销型网站建站步骤是什么意思,如何开wordpress网站,网站中英文切换怎么做,二手书网站建设策划书01 背景在线交易服务平台目的是减轻核心系统计算压力和核心性能负荷压力#xff0c;通过该平台可以将核心系统的交易数据实时捕获、实时计算加工、计算结果保存于SequoiaDB中。并能实时的为用户提供在线交易查询服务。在线交易服务平台基于实时处理架构设计#xff0c;通过将… 01 背景在线交易服务平台目的是减轻核心系统计算压力和核心性能负荷压力通过该平台可以将核心系统的交易数据实时捕获、实时计算加工、计算结果保存于SequoiaDB中。并能实时的为用户提供在线交易查询服务。在线交易服务平台基于实时处理架构设计通过将核心系统的数据变更实时的同步到在平台数据库从而达到数据实时复制及向外提供服务的目的。本文旨在分析实时处理系统的各技术原理及整体架构。首先介绍该架构所用到的技术原理然后再介绍整体架构实现并从数据采集层实时处理层数据存储层等方面进行详细分析与说明。02 技术需求2.1 如何构建数据库日志文件实时采集系统该平台需要从银行多个交易系统中实时获取客户余额变动和交易明细数据。该过程要求数据采集组件能够提供高性能、高可用性、高安全可靠性的实时采集、传输功能因此我们采用了具备这些特性的 OGG 和 CDC 采集框架。CDC(Change Data Capture)基于数据库日志实现对数据源变化的实时捕获并且实时传输到目标端。CDC组件通过读取各个业务生产系统数据库的日志文件捕获得到更新(插入、删除、更新)的交易记录信息数据经过行列过滤字符编码转换后由 TCP/IP 发送给目标端目标端接收到源端数据后经过数值转换字符编码转换冲突检测后将变更数据通过 Confluent Rest API 把数据传送到 Kafka将数据直接进行持久化之前进行消息队列的数据缓存。OGG(Oracle GoldenGate)是一种基于日志的挖掘的技术它通过解析源数据库在线日志或归档日志获得数据的增量变化后再将这些变化的数据传输到 Kafka 中Kafka将数据直接进行持久化之前进行消息队列的数据缓存。2.2 如何保证对海量数据的实时处理相比其他实时处理框架如 Spark 来说Storm 的实时性较高延时低而在线交易服务平台实时性要求比较高要求毫秒级的数据处理。Storm 作为纯实时的计算框架其实时计算能力能达到毫秒级。Storm 是基于数据流的实时处理系统提供了大吞吐量的实时计算能力。在一条数据到达系统的时候系统会立即在内存中进行相应的计算因此 Storm 适合要求实时性较高的数据分析场景。此外Storm 支持分布式并行计算即使海量数据大量涌入也能得到实时处理。Storm 还具备以下几个优点低延迟、高可用、分布式、可扩展、数据不丢失并且提供简单容易理解的接口便于开发。2.3 如何实现采集层与实时处理层的对接在采集层和实时处理层之间往往需要加一个消息队列机制用于实现采集层与实时处理层的解耦并缓存需要实时处理的数据保证所有数据都能被有序的正确的处理。此外从源端采集的数据流并不是均匀的而是时而多时而少的数据流。特别是在高并发的条件下数据库日志的数据会出现井喷式增长如果 Storm 的消费速度(即使 Storm 的实时计算能力已经很快了)慢于日志的产生速度必然会导致大量数据滞后和丢失因此我们加上 Kafka 消息系统作为数据缓冲区Kafka 可以将不均匀的数据转换成均匀的消息流从而与 Storm 结合起来实现稳定的流式计算。Kafka 是一个分布式的、分区化、可复制提交的日志服务。作为一个可扩展、高可靠的消息系统在流处理中经常用来保存收集流数据提供给之后对接的 Storm 流数据框架进行处理。作为一个消息队列系统与大多数消息系统比较Kafka 具有更好的吞吐量、内置分区、副本和故障转移等功能这有利于及时处理大规模的消息。03 SequoiaDB 作为存储层的优势在线交易服务平台需要满足实时处理之后海量数据的高速存储和高效检索并且需要保证数据的可用性与可靠性。SequoiaDB 是一款优秀的分布式数据库可以被用来存储海量的数据其底层主要基于分布式、高可用、高性能与动态数据类型设计同时兼顾了关系型数据库中众多的优秀设计如事务、多索引、动态查询和更新、SQL等。利用巨杉数据库自身的分布式存储机制与多索引功能能够很好地为应用提供高并发、低延时的查询、更新、写入和删除操作服务。SequoiaDB 使用 MPP(海量并行处理)架构整个集群主要由三个角色构成分别是协调节点编目节点和数据节点。其中编目节点存储元数据协调节点负责分布式系统的任务分发数据节点负责数据存储和操作。当有应用程序向协调节点发送访问请求时协调节点首先通过与编目节点通信了解底层数据存储的结构与规则再将查询任务分发给不同的数据节点然后聚合所有数据节点上的结果并将结果排序作为合适的查询结果。SequoiaDB 具备以下几点优势1) 具备丰富的查询模型SequoiaDB 适合于各种各样的应用程序。它提供了丰富的索引和查询支持包括二级索引聚合框架等。2) 具有常用驱动开发者整合了系统环境和代码库的原生驱动库通过原生驱动库与数据库交互使得 SequoiaDB 的使用变得简单和自然。3) 支持水平可扩展开发人员能够利用通过服务器和云基础架构来增加 SequoiaDB 系统的容量以应对数据量和吞吐量的增长。4) 高可用性数据的多份副本通过远程复制来维护。遇到故障系统会自动转移到辅助节点、机架和数据中心上使得企业不需要自定义和优化代码就能让系统正常运行。5) 内存级的性能数据在内存中直接读取和写入。并且为了系统的持久性系统会在后台持续把数据写入磁盘。这些都为系统提供了快速的性能使得系统无需使用单独的缓存层。04 技术架构实时处理架构主要分为数据实时采集实时处理实时存储三个模块。其中 CDCOGG用来获取数据Kafka 用来临时保存数据Strom 用来进行数据实时计算SequoiaDB是分布式数据库用来保存数据。系统结构整个实时分析系统的架构先由 OGG/CDC 实时捕获数据库日志文件提取其中数据的变化如增、删、改等操作并存进 Kafka 消息系统中。然后由 Storm 系统消费 Kafka 中的消息消费记录由 Zookeeper 集群管理这样即使 Kafka 宕机重启后也能找到上次的消费记录。接着从上次宕机点继续从 Kafka 的 Broker 中进行消费并使用定义好的 Storm Topology 去进行日志信息的分析输出到 SequoiaDB 分布式数据库中进行持久化最后提供在线实时查询接口供用户进行查询。4.1 数据采集在日志收集流程方面针对不同的系统环境我们设计了不同的采集流程。外围系统采用实时数据同步工具 OGG 进行数据实时采集。OGG 通过捕捉进程在源系统端读取数据库日志文件进行解析提取其中数据的变化如增、删、改等操作并将相关信息转换为自定义的中间格式存放在队列文件中再利用传送进程将队列文件通过 TCP/IP 传送到 Kafka 队列中。OGG数据采集流程图而对于核心系统通过在核心系统源端部署 InfoSphere CDC 实时采集数据库日志及其文件以捕获源端数据库产生的更新(插入、删除、更新)交易记录信息通过连续镜像运行模式不间断地把最新交易数据传送到目标端。在目标系统上同样运行 InfoSphere CDC接收来自于不同源系统传过来的数据再通过 Confluent Rest API把数据传送到 Kafka在对数据进行计算或者直接进行持久化之前进行消息队列的数据缓存。4.2 实时处理这里采用 Storm 进行实时处理Storm 作为实时处理框架具备低延迟、高可用、分布式、可扩展、数据不丢失等特点。这些特点促使 Storm 在保证数据不丢失的前提下依然具备快速的处理速度。在 Storm 集群中 Master 节点上运行的一个守护进程叫“Nimbus”负责集群中计算程序的分发、任务的分发、监控任务和工作节点的运行情况等Worker 节点上运行的守护进程叫“Supervisor”负责接收 Nimbus 分发的任务并运行每一个 Worker 上都会运行着 Topology 程序的一部分而一个 Topology 程序的运行就是由集群上多个 Worker 一起协同工作的。Nimubs 和 Supervisor 之间的协调工作通过 Zookeeper 来管理Nimbus 和 Supervisor 自己本身在集群上是无状态的它们的状态都保存在 Zookeeper 上所以任何节点的宕机和动态扩容都不会影响整个集群的工作运行并且支持 fast-fail 机制。在 Storm 上做实时计算需要自定义一个计算程序“Topology”一个 Topology 程序由 Spout 和 Bolt 共同组成Storm 就是通过 Topology 程序将数据流 Stream 通过可靠(ACK机制)的分布式计算生成我们的目标数据流 Stream。我们使用 Kafkaspout从 Kafka 的 queue 中不间断地获得对应的 topic 数据然后通过自定义 bolt 来做数据处理分别区分出增、删、改记录再通过自定义 bolt 来调用 SequoiaDB API 对SequoiaDB 数据库进行对应的增删改操作从而达到对源数据实时复制的目的。实时处理4.3 数据存储数据源获取数据经过 Kafka 和 Storm实时处理之后通过调用 SequoiaDB API 接口将实时解析后的数据存储到 SequoiaDB 中。通过 SQL 查询 SequoiaDB 为 OLAP 场景提供支持也可通过 JDBC 为在线应用提供 OLTP 服务。将海量数据保存在 SequoiaDB 分布式数据库中利用其数据库自身的分布式存储机制与多索引功能能够很好地为应用提供高并发、低延时的查询以及更新、写入和删除操作等服务。数据实时处理流程示意图SequoiaDB 数据库底层采用多维分区的方式将海量数据分散到多个数据分区组上进行存储。该方式通过结合了 Hash 分布方式和 Partition 分布方式的优点让集合中的数据以更小的颗粒度分布到数据库多个数据分区组上从而提升数据库的性能。多维分区架构图采用分区的目的主要是为了解决单台服务器硬件资源受限问题如内存或者磁盘 I/O 瓶颈问题使得机器能够得到横向扩展此外还能将系统压力分散到多台机器上从而提高系统性能并且不会增加应用程序复杂性。同时结合 SequoiaDB 的副本模式保证系统的高可用性。05 实现价值5.1 商业价值越来越多的企业不再满足于通过夜间运行批量任务作业的方式来处理信息更倾向于实时地获取数据的价值。他们认为数据的价值只有在刚产生时才是最大的认为在数据刚产生时就移动、处理和使用才是最有意义的。在线交易服务平台作为实时处理架构的最佳实践将各个系统的数据进行实时处理整合得到有价值的数据并将其保存到 SequoiaDB 数据库中供用户实时查询使用。数据实时处理系统不仅提高了用户的满意度还将实时处理技术与实际业务应用有效地结合了起来。在未来将会有更多的业务场景需要该技术的支持。5.2 技术价值一个稳定可靠且高效的实时处理架构是将实时数据转化为价值的基础。在线交易服务平台作为由数据实时处理架构搭建起来的平台能够稳定的在生成环境中运行提供高效的服务在技术上具有很高的参考价值。该数据实时处理架构实现了 SequoiaDB 与其他数据库的实时对接能够方便从其他数据库中迁移和备份数据可以作为 SequoiaDB 与其他数据库实时对接的中间件。点击阅读原文获取更多精彩内容~