博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在微服务之间共享使用数据库
阅读量:6874 次
发布时间:2019-06-26

本文共 1475 字,大约阅读时间需要 4 分钟。

本文讲的是如何在微服务之间共享使用数据库
【编者的话】如何在微服务之间共享使用数据库?本文介绍了一个该领域很容易犯错的架构问题,并且提出了解决方案和反思。

几年前,我是一个团队的首席开发人员,该团队为客户端开发Java web应用程序。本文里我们称之为“项目A”。我们在客户现场构建web应用,还有其他团队在相关项目上共同工作。因为我们在项目早期沟通合作一直很愉快深入,所以会定期在团队间交换软件的架构思想。


一天,一个新项目(项目B)启动了。该项目会由另外一个团队完成。我认为在这个新项目中我们也能有所贡献,我们将项目A的记录用户,角色和权限的通用认证的数据库schema共享给了项目B。最终,这两个项目都是使用相同用户数据库的内部web应用程序。对了,还忘记说一点,这些应用程序没有中央的用户数据库 -- 每个新项目都是从头开始的。我们发现通过共享已有的基础架构和最佳实践,不仅仅可以节省开发时间,而且还能够节省很多客户支持的时间,因为他们不需要处理单独的用户目录了。


项目进展顺利,第二个项目使用单独的数据库用户账号访问我们的数据库表,这样两个项目可以隔离开从而避免混乱。

一段时间之后。。。

毕竟存储用户,角色和权限不是什么难事。大概一年后,我们计划开发项目A的新版本。我们都很兴奋,因为有机会可以将项目A中工作不太好的地方改进,同时保留好的功能。我们也改进了一些项目A里工作得还可以的部分 -- 其中,包括改进了存储用户,角色和权限的数据库表的schema。老实说,当时根本没有想到会影响项目B。




当然,很快项目B就崩溃了。我们的错误之处在于给了项目B直接访问数据库的权限。不仅仅就现在的标准而言,就算是根据以前的标准,正确的决定也是去创建一个单独的认证服务,来共享通用的API,而不是直接共享数据库访问。

还有更多的。。。

因此,我们犯了一个严重的架构错误,但是这里还有另外一个问题。具有讽刺意味的是,项目B使用的人不多。当时要求项目B的团队都没怎么使用项目B。这个项目就一直停滞着,可以使用,但一直没有正式启用。因此在两周之后才有人发现项目B不工作了。




在第一个可怜的用户报告出问题的时候,我们的开发人员已经到其他项目上工作去了。在做问题定位分析的时候,我们检查了错误日志,尝试找出是什么问题。现在来看,我们当时没有规划精细的监控方案,能够自动监测到应用程序的问题,这也是失误决策的一部分。




虽然这次事故听上去很古老,但是我真的希望大家能够从中学习到经验教训。一定要确保通过稳定的API来访问数据库,从而将简单的数据库转变为服务,也使得共享使用更为容易。并且确保正确监控应用程序和服务。围绕API构建的环境会长期保持基础架构的动态性。监控则能确保能够有效控制日益增长的复杂度。


我期望这篇文章的问题能够在你在Eclipse IDE里打开File菜单,选择Export as .war来开启部署之旅的时候就对你有所启示。


原文链接:(翻译:崔婧雯 校对:李颖杰)
 

===========================

译者介绍

崔婧雯,现就职于IBM,高级软件工程师,负责IBM WebSphere业务流程管理软件的系统测试工作。曾就职于VMware从事桌面虚拟化产品的质量保证工作。对虚拟化,中间件技术,业务流程管理有浓厚的兴趣。
原文发布时间为:2015-10-26
本文作者:lingxizhixia
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:如何在微服务之间共享使用数据库

转载地址:http://ubmfl.baihongyu.com/

你可能感兴趣的文章
TWEEN动画、JQUERY、ES6 — 2、轮播图-渐隐渐现版本
查看>>
php填坑小记
查看>>
API Token 驗證方式設計
查看>>
青芒 for Mac客户端开发笔记
查看>>
XTCP 一个便捷的TCP消息包拼装和解析框架
查看>>
阿里云态势感知服务(上篇)
查看>>
基于 Spring Boot 2.0 构建一个 RESTful WebService
查看>>
Qtum研究院:以太坊智能合约潜在风险
查看>>
iOS快速集成支付宝
查看>>
Java中的数组
查看>>
git stash 怎么用?
查看>>
如何处理错误消息Please install the gcc make perl packages
查看>>
图片加载之SDWebImage(上)
查看>>
深入理解javascript中的继承机制(1)
查看>>
区块链平台EOSIO开发智能合约和dapp(三)
查看>>
Spring Cloud Gateway的全局异常处理
查看>>
策略模式
查看>>
nginx+php执行请求的工作原理
查看>>
图解git原理与日常实用指南
查看>>
告诉你微信域名被封的原因和防封方案
查看>>