栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 架构设计

数据服务架构

架构设计 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据服务架构

1.系统架构

2.系统功能
  1. 接口规范化定义
    在系统上定义API的输入输出,生成API文档,屏蔽了中间的存储,数据的流转通过API来进行

  2. 数据网关
    作为网关服务,数据服务必须要具备认证、权限、限流、监控四大功能,这是数据和接口复用的前提

首先是认证,需要支持开发和生产两种模式,开发模式比较便于使用通过appcode直接认证,生产通过 accesskey 和 secretkey,应用每次调用 API 接口,都必须携带 acesskey 和 secretkey

其次是限流,授权的时候会为每个应用进行限流,限流的方式有很多种,比如(qps达到多少。今日访问量到达上限,总访问量使用完,5分钟内qps达到多少)。超过设定的值就会发生限流甚至是熔断操作,直接拒接链接

还要提供接口相关的监控,比如接口的 90% 的请求响应时间、接口调用次数、失败次数等相关的监控,另外,对于长时间没有调用的 API ,应该予以下线。这样做的好处是防止没用的接口额外占用资源。

  1. 全链路打通
    需要记录数据到API的流转 以及API到应用的流转过程。可以全面掌控到数据具体使用到了哪里

  2. 多种数据交互方式
    支持pull 和 push 的方式,将数据导入到kafka

  3. 合理利用各引擎优势
    将数据存储在适合自己的存储计算引擎上 比如小数据量的放mysql,kv放redis,支持跨数据源join,实现数据的复用。节省资源

  4. 构建 API 集市,实现接口复用

一个接口可以为多个应用提供使用,而不是每个人都去开发一个一样的接口

3. 项目结构

项目结构
daas-ui
dass-common
daas-admin (提供 UI 相应的后端管理功能)
daas-server (提供与数据源交互的查询服务)
daas-gateway (dass-server 的网关)
daas-gateway-auth (athentication, authorization)
daas-gateway-rate-limiter (限流)
daas-gateway-monitor (收集 access log 分析到 api, 应用的的调用)
daas-admin
功能描述
对于开发人员可以导入数据源,进行API的生成,发布,测试,上线等步骤,使用人员可以通过申请,获得授权,拿到appcode 与 appkey 来使用API

功能点

  • 多数据源管理,支持 mysql redis 等(1期支持mysql)
  • 支持向导模式,模板模式来生成API(1期支持向导模式)
  • 向导模式支持跨数据源JOIN
  • 生成API文档
  • 支持 草稿 发布 测试 上线 下线多种状态的API
  • 支持API集市的展示
  • API的测试,测试不通过不能闪现
  • 运维人员管理界面,API的授权,展示
  • 权限的申请
daas-monitor

功能描述
对于数据源的监控,对于QPS的监控。log日志的监控。防作弊用户,支持拉黑,主动限流

功能点

  • 支持对不同数据源的监控告警
  • 对API接口QPS的监控告警
  • 对于响应时间,失败率成功率,以及API使用情况等等的告警
  • 主动限流
daas-server

API服务提供者,对于访问的请求,首先从元数据DB获取到详情,然后解析逻辑计划为物理计划,分发执行服务。最后进行聚合 返回结果,每个service基本相同,通过配置文件区分访问那些数据库。

功能描述
服务提供者

功能点

  • 解析逻辑计划
  • 执行物理计划到不同的引擎
  • 对于不同数据源的数据聚合
daas-gateway

gateway 基于 ambassador envoy 来实现,ambassador 通过 CRD 安装到 kubernetes 后,可以简单配置 mapping 转发来将服务请求转发到 daas-server,所有的 daas-server 使用 kubernetes 自带 service 来向 gateway 提供服务,且由 service 实现简单的负载均衡。

此外,我们将认证权限(auth),限流(rate limiter)服务,监控(monitor)这些 cross-cut 的服务配置到 ambassador 上,从而使用 daas-server 存只需要关心主要业务逻辑和实现水平的无状态扩容。

daas-gateway-auth

3.数据库表
datasources
- id
- ds_name
- ds_connection_json
- ds_type (mysql, redis, hbase)
- ds_state
- ds_desc

api_basic
- id
- api_name
- api_tags
- api_method_type (GET, POST)
- api_desc
- api_state (待测试,测试失败,测试通过,已发布)

api_conf
- id
- api_id
- ds_id
- ds_catalog (数据库)
- ds_schema (表名)
- parameters {[{‘name’: ‘’, ‘type’: ‘’, ‘opt’: ‘’, ‘desc’: ‘’} ]}
- returns {[{‘name’: ‘’, ‘type’: ‘’, ‘sample’: ‘’, ‘desc’: ‘’}]}
- join

apps
- id
- app_name
- app_desc
- owners
- app_status
- owner_ids

app_users
- id
- app_id
- user_id
- user_name

app_api_auth
- id
- app_id
- api_id
- app_key
- app_secret
- limit

API

  • like
  • 分页
  • range
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/909622.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号