微服务下数据表之间的耦合关系
微服务下数据表之间的耦合关系
1.问题产生
今天同事给我发了一个链接,问我这种做可视化建表的过程觉得怎么样?(如下图)
同事的意思主要是,在微服务架构下,新建单一数据表,然后表内数据需要引用其他数据表的数据列,这种需求是不是可以用可视化的的方式来做,比较方便。
2.My View
在我看来,比较像表字段关联图,也包含中文注释,表名注释,是专门做之前大流程图的“在线关联索引”这个功能的模式,这个表现形式还是不错的,但随着探讨话题深入,我逐渐感觉到如果这个图里面的连线是体现在数据表里面,那并不是一个好的方式,如果这个连线是在后台逻辑关系里,那就OK了,因为:
- 微服务工程,都很忌讳数据表间有太多的联系,联系可以串在微服务逻辑里,但不要各种主键外键串在数据表里
- 即使有在传统开发中有数据表耦合度非常高的情况,在做微服务设计时候,要遵循哪怕我多建立几个表,也不要表之间耦合度这么高的模式,所以就自然而然没有上图hightopo那种复杂的表关系图了(说白了表之间的联系就是数据表的外键)
- 承接这套复杂关系的,是微服务彼此的访问和通讯,上图应该是微服务之间复杂关系关联图,数据表之间要做低耦合
- 同时,数据表之间关联,属于外存操作,需要刷磁盘,慢,效率低,微服务之间关联,属于半内存操作,相对来说快一点,为什么说是半内存而不是纯内存,因为每个微服务是在一个单独的容器里面,容器之间通讯肯定要比纯内存要慢一点,但我估计还是比刷外存快
总结一下,微服务架构下,无论在功能架构设计,还是在数据表设计,亦或是在通讯访问设计上,都应该做到低耦合,这样不但利于维护,还利于热部署(热更新)
微服务下数据表之间的耦合关系相关推荐
- 微服务下蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别...
更多内容关注微信公众号:fullstack888 在有关微服务.DevOps.Cloud-native的迭代过程中,不可避免的需要"上线",上线就需要部署,需要部署就意味着有修改, ...
- 巨杉TechDay回顾 | 微服务下的分布式数据库架构演进与实践
内容整理自2019年6月2日巨杉TechDay技术沙龙活动. 演讲概述 当前,微服务架构已经成为应用架构转型的主流方向.本次分享,将深入解析在应用架构微服务化的趋势下,底层数据架构如何演进,分布式数据 ...
- 微服务下的APM全链路监控
https://opentalk.upyun.com/333.html 2017 年 10 月 29 日,又拍云 Open Talk 联合 Spring Cloud 中国社区成功举办了"进击 ...
- AspNetCore微服务下的网关-Kong(一)
Kong是Mashape开源的高性能高可用API网关和API服务管理层.它基于OpenResty,进行API管理,并提供了插件实现API的AOP.Kong在Mashape 管理了超过15,000 个A ...
- 微服务下权限校验方案
微服务权限校验方案 权限概述 鉴权和权限控制 权限问题描述 权限概述 任何一个系统都绕不开权限这两个字,一个良好的权限设计对一个系统起到了非常重要的作用,其实权限设计是个范围很大的问题,包括从数据库的 ...
- 如何保证微服务下的数据一致性?
目录 1.传统应用的事务管理 1.1 本地事务 1.2 分布式事务 1.2.1 两阶段提交(2PC) 1.2.2 三阶段提交(3PC) 2.微服务下的事务管理 3.实现微服务下数据一致性的方式 3.1 ...
- 微服务下使用GraphQL构建BFF
https://zhuanlan.zhihu.com/p/35108457 微服务架构,这个在几年前还算比较前卫的技术在如今遍地开花.得益于开源社区的支持,我们可以轻松地利用 Spring Cloud ...
- 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解
主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...
- 基于微服务下的持续交付环境
背景 随着互联网行业的兴起,敏捷开发.Devops被越来越多的公司提及或实施,力求有效地降低交付过程所耗费的成本并提高交付的效率. 持续交付通过建立自动化的构建.测试.部署机制,实现业务快速上线的过程 ...
最新文章
- 内核数据结构之红黑树
- 性能测试四十八:Jenkins+Ant+Jmeter系统部署
- 算法与数据结构(python):堆与堆排序
- 报名|腾讯技术开放日·5G技术专场
- Android开发者指南(4) —— Application Fundamentals(二)
- Spring常用注解的讲解
- JavaScript将iframe中控件的值传到主页面控件中
- webpack devserver配置_在webpack中使用babel
- AD教程系列 | 2-认识其他电子元器件的封装
- 实例手册_平法钢筋算不清?钢筋工程量清单编制与应用手册,海量实例看就懂...
- 开发软件快捷键(持续更新中)
- IP子网编址和无类域路由CIDR
- 【转】计算机视觉简介
- android 4.4 安装 flash,android 4.0 安装adobe flash player
- EXCEL科学计数法转为文本格式
- BOF图像特征词典的原理以及实际测试
- Elasticsearch 搜索引擎开发实战
- 计算机内存错误 要降频,win7系统出现内存自动降频的解决方法
- Chrome 浏览器 模糊的解决方法
- opencv去除图片水印
热门文章
- Authentication
- 华为mate40鸿蒙系统什么时候上市,华为mate40什么时间发布?
- Python3 去掉json中带的注释
- 华为鸿蒙os官网新机发布,预装鸿蒙OS!华为新机入网,但花粉并不买账
- 《皮肤的秘密》耶尔·阿德勒 epub+mobi+azw3
- js控制div左右匀速移动,走马灯
- 【AR技术:带你走进虚拟与现实的交集】
- # hihocoder #1197 : Give My Text Back
- 光流定点悬停算法c语言代码,opencv3/C++实现光流点追踪
- jQuery 中的 get() 方法