微服务下数据表之间的耦合关系

1.问题产生

今天同事给我发了一个链接,问我这种做可视化建表的过程觉得怎么样?(如下图)

同事的意思主要是,在微服务架构下,新建单一数据表,然后表内数据需要引用其他数据表的数据列,这种需求是不是可以用可视化的的方式来做,比较方便。

2.My View

在我看来,比较像表字段关联图,也包含中文注释,表名注释,是专门做之前大流程图的“在线关联索引”这个功能的模式,这个表现形式还是不错的,但随着探讨话题深入,我逐渐感觉到如果这个图里面的连线是体现在数据表里面,那并不是一个好的方式,如果这个连线是在后台逻辑关系里,那就OK了,因为:

  • 微服务工程,都很忌讳数据表间有太多的联系,联系可以串在微服务逻辑里,但不要各种主键外键串在数据表里
  • 即使有在传统开发中有数据表耦合度非常高的情况,在做微服务设计时候,要遵循哪怕我多建立几个表,也不要表之间耦合度这么高的模式,所以就自然而然没有上图hightopo那种复杂的表关系图了(说白了表之间的联系就是数据表的外键)
  • 承接这套复杂关系的,是微服务彼此的访问和通讯,上图应该是微服务之间复杂关系关联图,数据表之间要做低耦合
  • 同时,数据表之间关联,属于外存操作,需要刷磁盘,慢,效率低,微服务之间关联,属于半内存操作,相对来说快一点,为什么说是半内存而不是纯内存,因为每个微服务是在一个单独的容器里面,容器之间通讯肯定要比纯内存要慢一点,但我估计还是比刷外存快

总结一下,微服务架构下,无论在功能架构设计,还是在数据表设计,亦或是在通讯访问设计上,都应该做到低耦合,这样不但利于维护,还利于热部署(热更新)

微服务下数据表之间的耦合关系相关推荐

  1. 微服务下蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别...

    更多内容关注微信公众号:fullstack888 在有关微服务.DevOps.Cloud-native的迭代过程中,不可避免的需要"上线",上线就需要部署,需要部署就意味着有修改, ...

  2. 巨杉TechDay回顾 | 微服务下的分布式数据库架构演进与实践

    内容整理自2019年6月2日巨杉TechDay技术沙龙活动. 演讲概述 当前,微服务架构已经成为应用架构转型的主流方向.本次分享,将深入解析在应用架构微服务化的趋势下,底层数据架构如何演进,分布式数据 ...

  3. 微服务下的APM全链路监控

    https://opentalk.upyun.com/333.html 2017 年 10 月 29 日,又拍云 Open Talk 联合 Spring Cloud 中国社区成功举办了"进击 ...

  4. AspNetCore微服务下的网关-Kong(一)

    Kong是Mashape开源的高性能高可用API网关和API服务管理层.它基于OpenResty,进行API管理,并提供了插件实现API的AOP.Kong在Mashape 管理了超过15,000 个A ...

  5. 微服务下权限校验方案

    微服务权限校验方案 权限概述 鉴权和权限控制 权限问题描述 权限概述 任何一个系统都绕不开权限这两个字,一个良好的权限设计对一个系统起到了非常重要的作用,其实权限设计是个范围很大的问题,包括从数据库的 ...

  6. 如何保证微服务下的数据一致性?

    目录 1.传统应用的事务管理 1.1 本地事务 1.2 分布式事务 1.2.1 两阶段提交(2PC) 1.2.2 三阶段提交(3PC) 2.微服务下的事务管理 3.实现微服务下数据一致性的方式 3.1 ...

  7. 微服务下使用GraphQL构建BFF

    https://zhuanlan.zhihu.com/p/35108457 微服务架构,这个在几年前还算比较前卫的技术在如今遍地开花.得益于开源社区的支持,我们可以轻松地利用 Spring Cloud ...

  8. 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解

    主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...

  9. 基于微服务下的持续交付环境

    背景 随着互联网行业的兴起,敏捷开发.Devops被越来越多的公司提及或实施,力求有效地降低交付过程所耗费的成本并提高交付的效率. 持续交付通过建立自动化的构建.测试.部署机制,实现业务快速上线的过程 ...

最新文章

  1. 内核数据结构之红黑树
  2. 性能测试四十八:Jenkins+Ant+Jmeter系统部署
  3. 算法与数据结构(python):堆与堆排序
  4. 报名|腾讯技术开放日·5G技术专场
  5. Android开发者指南(4) —— Application Fundamentals(二)
  6. Spring常用注解的讲解
  7. JavaScript将iframe中控件的值传到主页面控件中
  8. webpack devserver配置_在webpack中使用babel
  9. AD教程系列 | 2-认识其他电子元器件的封装
  10. 实例手册_平法钢筋算不清?钢筋工程量清单编制与应用手册,海量实例看就懂...
  11. 开发软件快捷键(持续更新中)
  12. IP子网编址和无类域路由CIDR
  13. 【转】计算机视觉简介
  14. android 4.4 安装 flash,android 4.0 安装adobe flash player
  15. EXCEL科学计数法转为文本格式
  16. BOF图像特征词典的原理以及实际测试
  17. Elasticsearch 搜索引擎开发实战
  18. 计算机内存错误 要降频,win7系统出现内存自动降频的解决方法
  19. Chrome 浏览器 模糊的解决方法
  20. opencv去除图片水印

热门文章

  1. Authentication
  2. 华为mate40鸿蒙系统什么时候上市,华为mate40什么时间发布?
  3. Python3 去掉json中带的注释
  4. 华为鸿蒙os官网新机发布,预装鸿蒙OS!华为新机入网,但花粉并不买账
  5. 《皮肤的秘密》耶尔·阿德勒 epub+mobi+azw3
  6. js控制div左右匀速移动,走马灯
  7. 【AR技术:带你走进虚拟与现实的交集】
  8. # hihocoder #1197 : Give My Text Back
  9. 光流定点悬停算法c语言代码,opencv3/C++实现光流点追踪
  10. jQuery 中的 get() 方法