数据经过ETL、存储等数据处理过程之后,通过数据应用产品的形式呈现给最终使用方,PC和APP类数据产品以各类不同用途的数据大屏、看板将数据指标展示给管理者、运营和业务人员,数据应用后端也会为商城、CRM等业务团队开发出一些restful类型的数据接口,供他们取数使用。

数据应用层架构解析

数据应用层使用前后端分离的技术架构,后端遵守J2EE开发标准,是一套分布式系统,采用Spring Cloud+Spring Boot微服务框架实现后端功能,后端服务架构如下:

Spring Boot 使用约定优于配置的理念,为分布式微服务系统提供了简单易用的编程模型,用来构建弹性、可靠的数据应用微服务系统,Spring Cloud 提供的一系列框架解决数据应用微服务架构中服务治理的问题。数据应用微服务系统整合Spring Boot和Spring Cloud组件,对外提供一套整体的数据应用微服务解决方案,这里简要介绍一下核心的微服务组件:

1、Spring Cloud Alibaba:Nacos 注册和配置中心

注册中心是微服务架构最核心的组件,它起到新服务节点信息(服务名称、IP、端口等)的注册与状态维护的作用。注册中心使用心跳机制定时检查该节点的运行状态,最大程度保证其持有的服务节点列表都是可用的。

配置中心的职责就是集中管理微服务架构中每一个服务实例的配置数据,诸如数据库连接字符串、各种用户名密码、IP 等信息均从配置中心远程下载,不再本地保存。修改配置时,服务实例自动从配置中心拉取最新配置信息,不需要重启服务实例,就能自动感知配置的变化。

2、Spring Cloud Ribbon:服务负载均衡

微服务间彼此调用时并不是直接通过 IP、端口直接访问,而是由调用者通过服务名在注册中心查询该服务拥有哪些可用节点,然后注册中心将可用节点列表返回给服务调用者,这个过程称为“服务发现”。因服务高可用的要求,服务调用者会接收到多个可用节点,必须要从中进行选择,因此在服务调用者一端必须内置负载均衡器,通过负载均衡策略选择适合的节点发起通信请求。

Netfilx Ribbon 是 Netflix 公司开源的一个负载均衡组件,属于客户端负载均衡器,运行时以 SDK 形式内嵌到每一个微服务实例中,为微服务间通信提供负载均衡与高可用支持。

3、Spring Cloud Fegin:服务通信

Netflix Feign 是 Netflix 设计的开源的声明式 WebService 客户端,用于简化服务间通信。Netflix Feign 采用“接口+注解”的方式开发,通过模仿 RPC 的客户端与服务器模式(CS),采用接口方式开发来屏蔽网络通信的细节。

4、Spring Cloud Gateway:服务网关

对于最终用户来说,微服务的通信与各种实现细节应该是透明的,用户只需关注他要使用的 API 接口即可。因此微服务架构引入服务网关控制用户的访问权限。服务网关是外部环境访问内部微服务的唯一途径,在这个基础上还可以扩展出其他功能,例如:用户认证与授权、容错限流、动态路由、A/B测试、灰度发布等。

Spring Cloud Gateway 是 Spring 自己开发的新一代 API 网关产品。它基于 NIO 异步处理,摒弃了 Zuul 基于 Servlet 同步通信的设计,因此拥有更好的性能。同时,Spring Cloud Gateway 对配置进行了进一步精简,比 Zuul 更加简单实用。

5、自建ELFK:集中式日志管理

微服务架构默认将应用日志分散保存在每一个微服务节点上,当系统进行用户行为分析、数据统计时必须收集所有节点日志数据。使用ELK、EFK组件,搭建独立的日志收集系统,定时抓取增量日志形成有效的统计报表,为决策提供数据支撑。

6、Spring Cloud Alibaba:Sentinel 服务保护

在服务间通信过程中,如果某个微服务出现响应高延迟可能会导致线程池满载,严重时会引起系统崩溃。这里就需要引入服务保护组件实现高延迟服务的快速降级,避免系统崩溃。

在 Spring Cloud Alibaba 生态中有一个重要的流控组件 Sentinel。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性,并提供友好的UI界面对各类配置进行操作。

7、其他组件

其他组件诸如消息队列、调度组件等,在项目中按需对组件进行引入和调整即可,这里不做过多介绍。

数据应用工程分层规范

在设计架构和组织代码时,我们都会用到分层思想,分层思想是分而治之理论的体现,一些常见的软件设计原则也会在分层时使用到,比方说:

  • 单一职责原则——规定每个类只有单一的功能

可以理解为每一层拥有单一职责,且层与层之间边界清晰;

  • 迪米特法则——原意是一个对象应当对其它对象有尽可能少的了解

在分层架构的体现是数据的交互不能跨层,只能在相邻层之间进行;

  • 开闭原则——要求软件对扩展开放,对修改关闭

它的含义其实就是将抽象层和实现层分离,抽象层是对实现层共有特征的归纳总结,不可以修改,但是具体的实现是可以无限扩展,随意替换的。

使用好分层思想和设计原则,不仅可以帮助我们设计出可扩展、可维护的软件系统,也可以帮助我们沉淀通用能力,提高开发效率,达到持续迭代、持续交付的目的。数据应用工程分层规范归纳如下:

数据应用无损上线方案

数据应用产品需求经过开发测试后,就进入上线阶段,由于这些数据应用产品是给B端或者C端用户使用的,上线时需考虑对用户访问和使用数据的影响,以下是两个上线操作对用户访问产生影响的例子:

  • 上线过程中有的请求转发到了正在上线的节点导致访问超时或者访问异常
  • 已有数据功能需求有了变化,后端API改变了入参,后端上线后,前端没有上线完成,这时候如果有用户访问,前端请求转发到了新接口上就会报错,从而用户看不到数据

为了保证用户的良好使用体验,我们需要采用无损上线的方案来保证上线不影响用户正常使用,整个无损上线方案如下:

小结&思考

数据应用的需求来源于业务,为业务提供数据支持,帮助业务根据数据实现决策。数据应用系统相对业务应用系统来说,数据应用产品有比较多的临时需求和短期需求,从需求提出、产品成型、成熟使用再到衰退下线,生命周期比较短,但数据的意义就在于及时性,过时的数据会让用户对数据的使用价值大打折扣。因此我们需要注重数据应用系统的可扩展性、可维护性和高可用性,需要不断沉淀通用能力,实现能力复用,快速迭代、持续交付,保证数据的快速产出,保障用户的良好使用体验。

欢迎扫码关注:

电商数据应用体系建设总结(二)—— 数据应用层架构介绍和规范总结相关推荐

  1. 电商用户标签体系建设基础步骤

    构建用户标签体系主要根据用户在历史时间内的网购行为记录,从网购时间点.内容深度剖析,针对用户的基础属性.社交行为.互动行为.消费行为.偏好习惯.财富属性.信用属性和地理属性等八大维度构建用户标签体系, ...

  2. 星起航跨境—青岛跨境电商完善服务体系建设,促进行业发展

    统计显示,2021年,中国跨境电商行业规模达到14.2万亿元,同比增长14%.在此期间,青岛的跨境电商也迎来了爆发式增长.2021年,青岛跨境电商进出口额突破300亿元,较2020年连续翻番. 青岛作 ...

  3. 大数据项目之电商数仓、数据仓库概念、项目需求及架构设计

    文章目录 1.数据仓库概念 2. 项目需求及架构设计 2.1 项目需求分析 2.1.1 采集平台 2.1.2 离线需求 2.1.3 实时需求 2.1.4 思考题 2.2 项目框架 2.2.1 技术选型 ...

  4. 标准化体系建设(下):如何建立基础架构标准化及服务化体系?

    前面我们一起讨论了为什么要做标准化,标准化的套路是什么,并按照套路进行了基础设施和应用的标准化示例.我想这些内容可以帮助我们举一反三,尝试着应用到实际工作中了. 今天,我继续跟你聊基础架构标准化的问题 ...

  5. 【电商数仓】数仓搭建之数据主题(data warehouse topic-- DWT)层(DWT层之首日和每日数据导入脚本)

    文章目录 一 首日数据导入脚本 1 编写脚本 2 脚本内容 3 脚本使用 二 每日数据导入脚本 1 编写脚本 2 脚本内容 3 脚本使用 一 首日数据导入脚本 1 编写脚本 在/home/hzy/bi ...

  6. DM 源码阅读系列文章(二)整体架构介绍

    2019独角兽企业重金招聘Python工程师标准>>> 作者:张学程 本文为 DM 源码阅读系列文章的第二篇,第一篇文章 简单介绍了 DM 源码阅读的目的和规划,以及 DM 的源码结 ...

  7. 湖仓一体电商项目(一):项目背景和架构介绍

    文章目录 项目背景和架构介绍 一.​​​​​​​项目背景介绍

  8. 数据中台建设(三):数据中台架构介绍

    文末有惊喜  文章目录 数据中台架构介绍 一.数据中台构建方法论

  9. DIY ROV系列(二)ROV架构介绍

    从使用角度来讲,ROV可分为两部分,水上部分和水下部分. 水上部分:1,线盘:连接水下和水上的纽带.通常为盘零浮力电缆使用,需要在线盘上使用滑环,原因是放线和收线的时候不会把线绞断. 2,岸机箱:岸上 ...

  10. 中央网信办等四部门发布《数字乡村标准体系建设指南》,全面规范农业农村数据标准

    近日,中央网信办.农业农村部.工业和信息化部.市场监管总局会同有关部门发布<数字乡村标准体系建设指南>. 关于农业农村数据标准其中提出: 数据资源标准:主要包括基础库.专题库标准:基础库标 ...

最新文章

  1. Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) B. Verse Pattern 水题
  2. Java编程基础04——流程控制语句
  3. Golang sync.Map原理
  4. 第四章之Hadoop I/O
  5. tl494组成的超声波发射电路_透彻分析利用TL494组成的逆变器电路
  6. zookeeper 屁民
  7. 关于JavaWeb项目加密的实现 2021-04-24
  8. memcache使用方法测试 # 转自 简单--生活 #
  9. Web前端之HTML取色器
  10. 【33】t-SNE原理介绍与对手写数字MNIST的可视化结果
  11. C(每日一题)——数据结构——创建一个线性链表(详细过程)
  12. ubuntu1804安装python3.8+odoo14
  13. apache 服务器状态查看
  14. R计算两列数据的相关系数_Python+pandas计算数据相关系数(person、Kendall、spearman)...
  15. ps命令 查看系统进程信息
  16. 简单两步彻底根除系统多余输入法
  17. Blender 插件开发 计算模型长宽高
  18. windows安装ElasticSearch
  19. Android按照拼音排序获取联系人并根据拼音首字母获取联系人
  20. [Scrapy爬虫]自己修改常用网站,去广告,省时间

热门文章

  1. 数据结构一些常见术语的中英文对照
  2. 算法动画图解 | 被 “废弃“ 的 Java 栈,为什么还在用
  3. C语言 图书管理系统(课程设计)
  4. Android Studio 关联源码
  5. 最新版2017安装教程
  6. 多年iOS开发经验总结
  7. 超市管理系统连接服务器失败,超市管理系统应用解决超市管理难题
  8. java如何使用移位运算符_JAVA移位运算符使用教程
  9. java连接SqlServer2000
  10. Android Studio 写个单元测试用例,就是这么方便