原文发表于我的博客, 特此版权声明
noosphere.site: Dqlite,基于sqlite 高可用(HA)数据库
csdn : Dqlite,基于sqlite 高可用(HA)数据库

k3s之前的multi-master的支持 Mysql, PostgreSql, etcd 这3个方案,现在正在实验一个内嵌的multi-master方案,使用一个sqlite的HA版本-dqlite,dqlite-顾名思义,distibution sqlite,以后稳定的话,可能会成为官方推荐的HA方案。

Dqlite用主要做了几个事情:

  1. 提供一个基于raft的解决方案,基于一个叫 c-raft 的 raft轻量级实现,
  2. 把sqlite封装起来,给它存储层注册一个定制driver来操作数据
  3. CAP理论里,和绝大多分布式数据库一样,dqlite选择了(CP without A), 就是选择了Consistency(一致性)、Partition tolerance(分区容错性),而不保证 Availability(可用性),也即是:
  4. 保证了数据一致性
  5. 保持强一致性,用户请求需要在服务器中所有的分区里面完成了一致性才返回
  6. 但是,不保证每个请求都能得到没有报错的响应 一般,我们用sqlite是这样的:

应用程序直接调用一个单节点的sqlite实例

使用dqlite,则是这样的

应用程序不直接操作sqlite的接口,调用的是dqlite提供的接口,dqlite通过c-raft来保证数据一致性和容错行

目前官方提供了一个go的binding, 可以直接在go里使用dqlite的接口

作者有一个demo的演讲,演示了一个go写的分布式氧饱和度检测仪的例子

这段代码很简单,模拟插入氧饱和度的数据,然后提供一个http接口查询平均饱和度返回给调用者

其中getDatabase方法,如果用单实例的sqlite,它是这样的:

如果用dqlite变成这样

startEngine实际上是调用dqlite的接口创建一个新的dqlite节点

然后调用dqlite client这个接口连到集群

往sqlite的存储层注入一个dqlite定制的driver

可以看到,用go来使用这HA方案,还是挺方便易用。

目前k3s的dqlite HA版本目前还是实验状态,不要在生产环境使用,还有一些问题,比如:

  • cpu使用率高
  • 第一个启动的节点如果崩溃了,leader选举不出来

总的来讲,这个k3s的嵌入式HA方案还是非常值得期待,毕竟在IOT这种蝇级设备里面包mysql或者etcd这种程序还是有点太重了

参考:

  1. 作者的演讲
  2. go的binding和demo

随手点个赞吧
要不关注一下公众号"智圈云"

sqlite c++插入 timestamp_Dqlite,基于sqlite 高可用(HA)数据库相关推荐

  1. 基于mycat高可用方案——数据库负载

    引言 传统企业级应用一般采取单台数据库,吞吐所有应用的读写,随着互联网的高速发展,以及微服务架构越来越普及,往往采用分库分表来支撑高速增长的大量业务数据吞吐.分库分表主要有两种方式:水平分表和垂直分库 ...

  2. 基于mycat高可用方案——数据库负载(基于阿里云)

    引言 传统企业级应用一般采取单台数据库,吞吐所有应用的读写,随着互联网的高速发展,以及微服务架构越来越普及,往往采用分库分表来支撑高速增长的大量业务数据吞吐.分库分表主要有两种方式:水平分表和垂直分库 ...

  3. 理解 OpenStack 高可用(HA) (6): MySQL HA

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  4. Web应用的负载均衡、集群、高可用(HA)解决方案整理总结

    一.涉及到的几个组件 1.1.apache      -- 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支 ...

  5. 搭建pxc集群时需要先安装mysql么_完美起航-高可用MySQL数据库之PXC集群

    高可用MySQL数据库之PXC集群 前言 在上一篇文章介绍了时下流行的几种数据库产品后(公众号发送"NewSQL"查看),有不少小伙伴表示对自动集群的数据库感兴趣,特别是Cockr ...

  6. Hadoo集群--高可用HA配置(两台主机)

    目录 1 Hadoop HA架构详解 1.1 HDFS HA背景 1.2 HDFS HA架构 1.3 HDFS HA配置要素 1.4 HDFS HA配置参数 1.5 HDFS自动故障转移 1.6 YA ...

  7. corosync+pacemaker实现高可用(HA)集群(二)

    部署方案二(推荐):corosync+pacemaker 利用ansible自动安装corosync和pacemaker 注:关于ansible的具体使用可参见"ansible实现自动化自动 ...

  8. web应用的负载均衡、集群、高可用(HA)解决方案

    web应用的负载均衡.集群.高可用(HA)解决方案 参考文章: (1)web应用的负载均衡.集群.高可用(HA)解决方案 (2)https://www.cnblogs.com/huojg-21442/ ...

  9. MyCAT+MySQL 搭建高可用企业级数据库集群

    第1章 课程介绍 课程介绍 1-1 MyCAT导学 试看 1-2 课程介绍 第2章 MyCAT入门 这一章中,我们将回顾了垂直切分,水平切分,分库分表等基础概念,然后快速回如何安装和启动MyCAT的, ...

最新文章

  1. 用python写脚本看什么书-终于知晓python编写脚本入门教程
  2. YOLO系列算法精讲:从yolov1至yolov4的进阶之路
  3. mysql5.7.24免安装版配置_mysql5.7.20免安装版配置方法图文教程
  4. obj[]与obj._Ruby中带有示例的Array.rassoc(obj)方法
  5. mlecms v2.2版权
  6. css图片自适应 有缝隙,有间隙,解决办法
  7. excel checkbox mysql_ajax – checkbox – 使用jquery和mysql选中或取消选中
  8. PSP3000破解教程
  9. PHP 获取身份证信息
  10. java能调用易语言的dll文件_易语言调用模块和DLL的方法教学
  11. 关于《训练指南》中的“翻棋子游戏”
  12. mysql提现_MYSQL事务教程之Yii2.0商户提现功能
  13. python绘制中国_如何用Python画一个中国地图?
  14. 饮水机和水桶图解RAID方式,强烈推荐
  15. 实战pixi+gsap,仿刹车动画
  16. 使用disk genius合并C盘和D盘
  17. python实现购物车总结,Python实现的购物车功能示例
  18. Java中GSON的使用
  19. 【解决方案】win7计算机屏保的下拉框中,无照片选项,不能设置自定义图片
  20. 卸载百度超级搜霸过程

热门文章

  1. MySQL—表中添加数据
  2. GCC,Clang,make,cmake,makefile,CMakeLists.txt的概念
  3. 2022-02-21
  4. ECC-based 算法(ECDSA/ECDH) 新潮算法的原理
  5. VC6.0环境设置说明
  6. FSD键盘钩子框架参考爱写驱动的女装大佬
  7. fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include stdafx.h”?
  8. 2、MySQL错误日志(Error Log)详解
  9. 第二章:二分和前缀和 【完结】
  10. 第一章 Matlab的简单介绍