快照技术

Redis从入门到精通

梦想的初衷 提交于 2019-12-05 05:23:05
常用的 SQL 数据库的数据都是存在磁盘中的,虽然在数据库底层也做了对应的缓存来减少数据库的 IO 压力。 由于数据库的缓存一般是针对查询的内容,而且粒度也比较小,一般只有表中的数据没有发生变动的时候,数据库的缓存才会产生作用。 但这并不能减少业务逻辑对数据库的增删改操作的 IO 压力,因此缓存技术应运而生,该技术实现了对热点数据的高速缓存,可以大大缓解后端数据库的压力。 主流应用架构 客户端在对数据库发起请求时,先到缓存层查看是否有所需的数据,如果缓存层存有客户端所需的数据,则直接从缓存层返回,否则进行穿透查询,对数据库进行查询。 如果在数据库中查询到该数据,则将该数据回写到缓存层,以便下次客户端再次查询能够直接从缓存层获取数据。 缓存中间件 Memcache 和 Redis 的区别 Memcache 的代码层类似 Hash,特点如下: 支持简单数据类型 不支持数据持久化存储 不支持主从 不支持分片 Redis 特点如下: 数据类型丰富 支持数据磁盘持久化存储 支持主从 支持分片 为什么 Redis 能这么快 Redis 的效率很高,官方给出的数据是 100000+QPS,这是因为: Redis 完全基于内存,绝大部分请求是纯粹的内存操作,执行效率高。 Redis 使用单进程单线程模型的(K,V)数据库,将数据存储在内存中,存取均不会受到硬盘 IO 的限制,因此其执行速度极快。

超融合产品选型 POC 要点之 – 可靠性篇

五迷三道 提交于 2019-12-05 03:49:05
近年来,超融合 IT 基础架构的先进理念和巨大价值已经逐步被用户认可和接受,越来越多用户开始评估和采购超融合产品。面对全新的架构,以及国内市场各种品牌,用户难免产生诸多困惑: 产品的宣传材料写得都挺好,实际运行效果如何?超融合是否在我的实际业务中能真正发挥价值? 2.会不会开始使用挺好,但长期使用或者极端情况下会有各种问题出现? 3.这么多的品牌如何选?国外的产品这么昂贵,是否真的物有所值?国内这些基于开源的产品,到底有什么隐患? 针对以上问题,用户大多会考虑在产品评估阶段引入 POC 测试,用于验证产品的实际表现,并对各家产品进行系统对比,但应如何进行 POC 测试用例设计?本系列文章由 SmartX 行业资深方案工程师根据大量用户实际需求整理,力求为用户提供一份系统实用的 POC 要点参考。 超融合产品POC重点 通过超融合专业文章大家可以了解到,超融合软件架构主要分为三大组件:分布式块存储、虚拟化、系统运维管理。而在这三大组件中,最重要的组件莫过于分布式块存储。其主要原因包括: 1.在超融合产品中,虚拟化和服务器都已经属于比较成熟的技术,而分布式块存储是近几年才通过超融合架构被用户所逐渐采用,需要重点验证; 2.分布式块存储不仅仅是提供存储空间,相较于虚拟化和服务器,其出现故障,带来的影响会更大,直接影响业务连续性、数据可靠性和系统性能等多方面核心指标; 3

超融合产品选型注意事项:可靠性及数据保护至关重要

纵饮孤独 提交于 2019-12-03 20:21:12
近年来,超融合 IT 基础架构的先进理念和巨大价值已经逐步被用户认可和接受,越来越多用户开始评估和采购超融合产品。面对全新的架构,以及国内市场各种品牌,用户难免产生诸多困惑: 1. 产品的宣传材料写得都挺好,实际运行效果如何?超融合是否在我的实际业务中能真正发挥价值? 2.会不会开始使用挺好,但长期使用或者极端情况下会有各种问题出现? 3.这么多的品牌如何选?国外的产品这么昂贵,是否真的物有所值?国内这些基于开源的产品,到底有什么隐患? 针对以上问题,用户大多会考虑在产品评估阶段引入 POC 测试,用于验证产品的实际表现,并对各家产品进行系统对比,但应如何进行 POC 测试用例设计?本系列文章由 SmartX 行业资深方案工程师根据大量用户实际需求整理,力求为用户提供一份系统实用的 POC 要点参考。 超融合产品POC重点 通过超融合专业文章大家可以了解到,超融合软件架构主要分为三大组件:分布式块存储、虚拟化、系统运维管理。而在这三大组件中,最重要的组件莫过于分布式块存储。其主要原因包括: 1.在超融合产品中,虚拟化和服务器都已经属于比较成熟的技术,而分布式块存储是近几年才通过超融合架构被用户所逐渐采用,需要重点验证; 2.分布式块存储不仅仅是提供存储空间,相较于虚拟化和服务器,其出现故障,带来的影响会更大,直接影响业务连续性、数据可靠性和系统性能等多方面核心指标; 3

LXC容器

淺唱寂寞╮ 提交于 2019-12-03 09:32:16
1. LXC简述 Linux container是一种资源隔离机制而非虚拟化技术。VMM(VMM Virtual Machine Monitor)或者叫Hypervisor是标准的虚拟化技术,这种技术通过虚拟层(也就是VMM或叫Hypervisor),主要作用一是让多个操作系统和应用共享硬件资源, 其二是把上层虚拟机的指令转换成底层Host操作系统所认识的指令,这就意味着在Linux上可以跑windows系统,container技术介于chroot和VM之间,其“虚拟机”和主机操作系统相同或很类似,即Linux下均是Linux架构的,没有安装windows虚拟机的。cgroup就是一个资源限制器,没有提供隔离功能,真正的隔离功能内核使用namespace实现的,这就意味着cgroup资源限制的模块间影响比container要大很多。 官方给出的LXC未来的目标是: The goal of LXC is to create an environment as close as possible as a standard Linux installation but without the need for a separate kernel. 1.1 LXC与docker的关系 LXC将Linux进程沙盒化,使得进程之间相互隔离,并且能够控制各进程的资源分配。 lxc

帧同步优化难点及解决方案

女生的网名这么多〃 提交于 2019-12-03 06:43:01
帧同步这部分比较复杂,细枝末节有很多优化点,也有一些不同的优化方向,根据不同项目类型、对操作手感的要求、联机玩家的个数等,会有不同的难点和痛点。不同的优化方向,优化手法的差异,可能导致一些争论。并且,帧同步,本身也有很多变种,以应对不同的需求。所以,本文一切都是基于作者的项目类型(ACT)来做的方案和优化,并不一定适合其它也需要帧同步的游戏,故在此提前说一下,以免引起一些不必要的误解。 帧同步的几个难点 帧同步的基础原理,以及和状态同步的区别,已经有很多文章介绍,我就不再赘述,大家可以自行google。以下只说几个难点。 保证客户端独自计算的正确,即一致性 帧同步的基础,是不同的客户端,基于相同的操作指令顺序,各自执行逻辑,能得到相同的效果。就如大家所知道的,在Unity引擎中,不同的调用顺序,时序,浮点数计算的偏差,容器的排序不确定性,Coroutine内写逻辑带来的不确定性,物理浮点数,随机数值带来的不确定性等等。 有些比较好解决,比如随机数值,只需要做随机种子即可。 有些需要注意代码规范,比如在帧同步的战斗中,逻辑部分不使用Coroutine,不依赖类似Dictionary等不确定顺序的容器的循环等。 还有最基础的,要通过一个统一的逻辑Tick入口,来更新整个战斗逻辑,而不是每个逻辑自己去Update。保证每次Tick都从上到下,每次执行的顺序一致。 物理方面

linux基础练习5

非 Y 不嫁゛ 提交于 2019-12-02 18:32:24
1、磁盘lvm管理,完成下面要求,并写出详细过程: 1) 创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录 添加两块硬盘,加上一个硬盘分区,将分区调整成LVM格式,作为一个整体将三块硬盘组成LVM分区 创建成功 查看pv物理卷由几块硬盘组成,接下来创建vg(卷组) 创建卷组 利用vgcreate 创建卷组vg0表示为卷组名,加上要组成组的硬盘。 查看卷组基本信息 接下来创建pe指定PE大小为16M vgcreate testvg -s 16M /dev/sda6 /dev/sdb /dev/sdc 创建并查看lv逻辑卷 创建文件系统并挂载至users目录 2) 扩展testlv至7G,要求archlinux用户的文件不能丢失 lvextend -L +2G /dev/testvg/testlv 增加空间至7G 这时空间已经扩大,但对应的文件系统没有创建,所以df命令查看的还是原来的5G的空间,我们需要将新增空间加入至文件系统 ext4系统利用resize2fs将剩余未分配空间同步文件系统 xfs系统利用 xfs_growfs 挂载点 设备名名 扩展 增加挂载时可以在线扩展,建议备份 3) 收缩testlv至3G,要求archlinux用户的文件不能丢失 收缩文件系统时

KVM&Libvirt基本概念及开发杂谈

时光总嘲笑我的痴心妄想 提交于 2019-12-02 16:59:14
导读 大家好,本次肖力分享的主题是KVM&Libvirt基本概念及开发杂谈,内容有些凌乱松散,主要基于自己早期整理的笔记内容和实践感悟,有些内容难免有失偏颇,望见谅。前面先介绍下需要了解的基本知识,大部分内容在肖力著作中都有更详细的解释,可阅读参考。 KVM包含: 1.内核模块kvm.ko,用于核心虚拟框架。 2.包含与处理器相关的模块kvm-intel.ko,kvm-amd.ko 3.kvm需要使用经过修改定制的qemu软件提供用户空间工具 *内核组件已经包含在Linux内核2.6.20中了 *部分操作系统在kvm中运行仍然存在某些问题,可以查看KVM官网提供的操作系统运行兼容性状态列表 使用KVM的前提条件: 1.qemu-kvm-release.tar.gz 2.kvm-kmod-release.tar.bz2,自己编译内核模块的需要这个东东 3.支持VT技术的Intel处理器或支持SVM技术的AMD处理器 使用qemu前提条件: 1.zlib库及头文件 2.sdl库及头文件 3.alsa库及头文件,这个是用来提供虚拟化音频相关功能,默认是禁用的,现在不知道什么状态了,可以使用--enable-alsa来启用 4.gnutls库及头文件,可选的VNC TLS支持,默认此功能是开启的,可以用--disable-vnc-tls关闭 5.kernel头文件 *创建,安装

LVM磁盘阵列技术

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-01 13:29:27
LVM逻辑卷管理器 LVM(逻辑卷管理器)可以允许用户对硬盘资源进行动态调整。(让用户灵活的变更分区的大小) 逻辑卷管理器是Linux系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。而LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区的动态调整。LVM的技术架构如图。 LVM的核心理念 1.物理卷处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列,这都可以。 2.卷组建立在物理卷之上,一个卷组可以包含多个物理卷,而且在卷组创建之后也可以继续向其中添加新的物理卷。 3.逻辑卷是用卷组中空闲的资源建立的,并且逻辑卷在建立后可以动态地扩展或缩小空间。 部署逻辑卷   部署LVM时,需要逐个配置物理卷、卷组和逻辑卷。常用的部署命令如表所示。 部署逻辑卷步骤:(PV -> VG -> LV)   让硬盘设备支持LVM技术(pvcreate)。   把硬盘设备加入到卷组(vgcreate)。   从卷组中切割一定空间作为逻辑卷(lvcreate)。   把生成好的逻辑卷进行格式化,然后挂载使用

Deleaker – 内存泄漏猎人(RAD Studio 的附加组件)

陌路散爱 提交于 2019-11-30 14:40:57
程序员面临(并希望我们意识到)的常见问题之一是内存泄漏或任何其他类型的资源泄漏。 例如,Windows限制了进程一次可以分配的GDI或USER32对象的数量。 当事情走错路时,您可能希望拥有一些工具来帮助您(再次)找到自由创建自己的正确路径。 一些IDE具有内置的泄漏检测功能。 MS的Visual Studio最近获得了一个工具,可以显示从堆分配的内存块的列表。 遗憾地说,但不仅从堆分配可能会泄漏内存,而且还通过COM / ActiveX技术分配的内存和虚拟内存和文件映射视图,等等。 不幸的是,Visual Studio根本无法检测到句柄,GDI和USER32资源的泄漏(另一方面,Deleaker可以检测到所有类型的泄漏,并且也可以在Visual Studio中工作)。 RAD Studio没有这样的内置工具。 如果在调试期间可以仅单击“魔术”按钮,并查看在何处以及通过什么代码分配了内存,文件和其他描述符,对象,那就太好了。 Deleaker 最近这样的延伸, Deleaker ,它可以做所有这一切以及更多, 已被释放 。 最初,Deleaker是作为Visual Studio的扩展而创建的,但从今年开始,它开始支持其他IDE,包括RAD Studio和Qt Creator。 您可以在此处下载Deleaker: https : //www.deleaker.com/download

SOFAJRaft Snapshot 原理剖析 | SOFAJRaft 实现原理

前提是你 提交于 2019-11-30 09:28:31
SOFAStack ( S calable O pen F inancial A rchitecture Stack)是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。 SOFAJRaft 是一个基于 Raft 一致性算法的生产级高性能 Java 实现,支持 MULTI-RAFT-GROUP,适用于高负载低延迟的场景。 本文为《剖析 | SOFAJRaft 实现原理》最后一篇,本篇作者胡宗棠,来自中国移动。《剖析 | SOFAJRaft 实现原理》系列由 SOFA 团队和源码爱好者们出品,项目代号: SOFA:JRaftLab/ ,文末包含往期系列文章。 SOFAJRaft: https://gitee.com/sofastack/sofa-jraft 导读 本文主要介绍 SOFAJRaft 在日志复制和管理中所采用的快照机制。考虑到单独介绍 SOFAJRaft 中的快照机制原理和实现或许有一些唐突,我会先通过一个读者都能够看得明白的例子作为切入点,让大家对快照这个概念、它可以解决的主要问题,先有一个比较深刻的理解。 一、快照的概念与特点 SOFAJRaft 是对 Raft 共识算法的 Java 实现。既然是共识算法,就不可避免的要对需要达成共识的内容,在多个服务器节点之间进行传输,一般将这些共识的内容称之为日志块