巨杉Tech | 微服务趋势下的数据库设计与应用简析
周五(7月12日)巨杉数据库参与了由得到App主办八里庄技术沙龙活动,分享主题是关于分布式数据库架构与实战。
以下就是根据巨杉数据库现场分享的内容进行的分享实录整理。
巨杉数据库简介
巨杉,专注新一代分布式数据库技术研发,自2011年成立以来,坚持从零开始打造分布式开源数据库引擎,是中国首家连续两年入选 Gartner 数据库报告的数据库厂商。
巨杉数据库的主要产品包括 SequoiaDB 分布式关系型数据库与 SequoiaCM 企业内容管理软件,应用场景包括分布式在线交易、数据中台、分布式内容管理等。
目前,巨杉数据库已在近百家大型商业银行核心生产业务上线,并广泛应用于金融、电信、政府、互联网、交通等领域,企业用户总数超过1000家。
数据库应如何应对微服务发展趋势

很多企业内部的应用开发都在从传统中间件加数据库的“烟囱式”开发,向微服务架构转型。而在微服务体系架构中,几乎每个微服务都需要提供数据持久化的能力,而用户也希望每个微服务所承载的数据量能够无限的弹性扩张。但是,在采用微服务架构的过程中,每个微服务使用自身独立的数据库存储又会使过去集中在一个地方的数据分散到很多不同的设备中,造成整个IT架构的数据严重碎片化。

实际上,当企业用户采用微服务体系架构的时候,从数据管理的角度,业界有两种做法。
第一种:就是对应用程序进行微服务改造,底层数据库使用传统集中式数据库进行存储。这种做法学习成本也较低,其存在数据紧耦合,无法弹性扩张,以及可能存在单点故障等问题。
第二种:每一组微服务对应一个独立的小数据库,往往使用MySQL或PostgreSQL,业界使用较多的。这种机制能够解决集中式存储的问题,但是也带来了新的挑战,包括数据极度碎片化,在微服务之间无法共享,运维成本极其高昂。
两种办法都不能很好的解决微服务下数据存储管理的问题,因此分布式数据库就是要解决上述的两个问题。第一就是针对每个微服务做到数据弹性扩张,第二就是对整个企业IT做到数据的统一治理从而避免碎片化存储。
联机交易需要什么样的分布式数据库

联机交易数据库特性
适合微服务的分布式数据库都应该具有特性,主要应该从两大维度。一是对传统技术的兼容,二是技术和架构的创新。
传统技术的兼容方面,必须支持ACID和SQL的完整性。
从新技术的前瞻性来看,首先,分布式数据库的核心价值在于数据库资源池在保证与传统数据库100%兼容的基础上,必须满足分布式弹性扩张,当资源池里面空间和计算能力不足时,需要通过动态增加计算存储节点的方式进行扩容。
其次,大家采用的开发流程、SQL标准、以及安全策略各不相同,因此分布式数据库必须能够支持多种模式的访问接口。
最后,HTAP,即交易分析混合处理能力。联机交易数据与实时数据分析在资源池内进行资源隔离,对同一份数据库访问并可以做到互不干扰。适合微服务的数据库必须有较强的交易分析混合处理能力。
分布式数据库架构及关键特性

巨杉数据库实例化架构
要打造适合微服务架构的数据库,巨杉数据库采用了计算存储分离的架构。其中存储层采用自研的原生分布式数据库引擎,上层计算层则可以创建成百上千个数据库实例,同时每个数据库实例对应用完全透明,不需感知。如图5所示。

计算与存储分离架构
对于计算和存储分离,把分布式存储层展开,SeuqoiaDB分布式存储引擎有很多节点角色,其中有协调节点编目节点和数据节点和编目节点。协调节点是数据路由,数据存储在数据节点。编目节点保存整个数据集群系统信息。数据节点把数据打散到不同的分区中,使用三副本架构,任何一个节点出故障,不影响正常运行。

巨杉数据库核心应用场景
巨杉数据库大维度下的定位是一款真正的金融级分布式关系型数据库。 巨杉数据库目前在企业级应用场景主要包括分布式在线交易、数据中台以及分布式内容管理。
在线交易是数据库最广泛应用的场景之一,通常用来支撑核心业务运营。分布式在线交易数据库核心业务价值包括,分布式架构转型,高并发、高处理能力,业务持续扩展能力以及自主可控与数据安全要求。
数据中台提供全量数据的实时在线服务,泛指传统核心交易以外的所有对外服务业务。
内容管理平台为企业提供存储、管理和使用海量非结构化数据能力。常见应用包括影像平台、文档管理平台、音视频双录系统等。

分布式事务能力
巨杉数据库支持分布式事务,使用二段提交确保多个节点之间数据一致,锁机制是悲观锁,支持MVCC的读写提交能力。

HTAP读写分离

多租户物理隔离能力
通过数据库引擎的分布式架构、Multimodel多模数据存储类型以及实例化的数据库实例管理,巨杉数据库可以实现多租户啊管理的能力、HTAP等等云化数据库必须的技术能力。

最后八里庄技术委员会主席李丹与巨杉数据库技术专家合照留念,期待更多数据库技术交流。
巨杉Tech | 微服务趋势下的数据库设计与应用简析的更多相关文章
- NetCore微服务简单流程审批数据库设计及后台服务开发
1.数据库设计 -- ---------------------------- -- Table structure for TBase_Flow -- ----------------------- ...
- CI Weekly #11 | 微服务场景下的自动化测试与持续部署
又一周过去了,最近我们的工程师正在搞一个"大事情" --「[flow.ci](http://flow.ci/?utm_source=bokeyuan&utm_medium= ...
- CI Weekly #5 | 微服务架构下的持续部署与交付
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...
- 微服务框架下的思维变化-OSS.Core基础思路
如今框架两字已经烂大街了,xx公司架构设计随处可见,不过大多看个热闹,这些框架如何来的,细节又是如何思考的,相互之间的隔离依据又是什么...相信很多朋友应该依然存在自己的疑惑,特别是越来越火热的微服务 ...
- 微服务架构下分布式事务解决方案——阿里GTS
1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发.当前被越来越多的开发者推崇,很多互联网行业巨头.开源社区等都开始了微服务 ...
- TOP100summit:【分享实录-华为】微服务场景下的性能提升最佳实践
本篇文章内容来自2016年TOP100summit华为架构部资深架构师王启军的案例分享.编辑:Cynthia 王启军:华为架构部资深架构师.负责华为的云化.微服务架构推进落地,前后参与了华为手机祥云4 ...
- 微服务架构下分布式事务解决方案——阿里云GTS
https://blog.csdn.net/jiangyu_gts/article/details/79470240 1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这 ...
- Re:从 0 开始的微服务架构--(四)如何保障微服务架构下的数据一致性--转
原文地址:http://mp.weixin.qq.com/s/eXvoJew3bjFKzLLJpS0Otg 随着微服务架构的推广,越来越多的公司采用微服务架构来构建自己的业务平台.就像前边的文章说的, ...
- Apollo:微服务架构下的配置管理
问题背景 在实际工作中,我们的开发环境,测试环境,生产环境对应的 Mysql 数据库,Redis 这些信息都不一样,每个环境都有对应的一套配置,在 Spring Boot 中我们通常会编写多个配置文件 ...
随机推荐
- HTML5文档类型如何定义,有哪些标签,以及如何使用,从整体认识HTML5
html5新增结构标签 header 头部 nav 导航 section 区域 article 文章 aside 侧边栏 figure 一组多媒体内容 figcaption 多媒体内容的标题 foot ...
- windows 2008r2+php5.6.28搭建详细过程
安装IIS7 1.打开服务器管理器(开始-计算机-右键-管理-也可以打开),添加角色 直接下一步 勾选Web服务器(IIS),下一步,有个注意事项继续下一步(这里我就不截图了) 勾选ASP.NET会弹 ...
- 牛客练习赛56 E 小雀和他的王国
题目链接:https://ac.nowcoder.com/acm/contest/3566/E 思路:tarjan缩点,桥重建图,dfs跑树的直径. #include <iostream> ...
- java多线程技能-使用多线程-继承Thread类
/* 使用多线程可通过继承Thread类或实现Runnable接口. Thread和Runnable的关系:public class Thread implements Runnable. 使用thr ...
- UVA-1588
只用C来写 题目:https://vjudge.net/problem/UVA-1588 #include<stdio.h> #include<string.h> #defin ...
- QPixmap和QImage
1.QPixmap QPixmap的设计本来就是用来加速显示,用paint绘图时用QPixmap会比其他类的效果好很多.一般小图片用QPixmap. 2.QImage 依赖软件,直接像素访问,适合大图 ...
- 随机定时修改密码change_passwd.sh
change_passwd.sh #!/bin/sh /usr/bin/chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /usr/b ...
- JS:JS判断提交表单不能为空等验证
这段代码在<form>中有οnsubmit="return on_submit()",如果 onsubmit ()返回 fasle,表单的元素就不会提交,即action ...
- vue项目中使用element ui上传图片到七牛
1.获取token值 后台有接口调用直接返回token值 //请求后台拿七牛云token async getQiniuToken() { //token let uploadtoken = await ...
- Docker学习参考网站
Docker——从入门到实践 https://www.yuque.com/grasilife/docker 2.阿里源网站:https://cr.console.aliyun.com 3.DaoClo ...