自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

感悟聚集的博客

心灵和技术理解的沉淀

  • 博客(19)
  • 收藏
  • 关注

原创 glusterfs提供块存储方式

glusterfs块存储应用与实践glusterfs提供块存储方式目前glusterfs 提供块存储主要有:通过fuse客户端或api+iSCSI LUNs (project:gluster-block)通过fuse客户端挂载到vm宿主机提供local disk images通过glusterfs api 形式提供 qemu disk images这3种方式都可以实现给虚拟机提供块存储,区别在于第1种io栈要多经过iscsi 协议栈和第2种要经过fuse内核模块,glusterfs api

2020-08-20 17:35:28 1846

原创 glusterfs 存储节点损坏恢复总结

概述glusterfs 集群的存储节点损坏是不可避免的,但是对于glusterfs 来说,节点损坏包含系统损坏(因为重做系统需要格式化根目录)即glusterfs 配glusterfs 配置文件丢失,数据盘损坏即对于glusterfs数据盘上的brick数据丢失。本文即描述下glusterfs 存储节点损坏最优的修复方案。恢复方案在概述中我们知道存储节点损坏对于glusterfs 来说其实就分为3种损坏。配置文件丢失在存储节点系统损坏或者/磁盘坏掉等都对于glusterfs 意味着配置文件丢失。

2020-06-05 11:54:26 3764

原创 glusterfs dht 层lookup 时lookupeverywhere 分析

glusterfs7 多次扩容后出现重复文件分析背景最近在做glusterfs7版本扩容操作测试的时候,发现偶尔会出现,文件丢失然后再重新创建文件会出现文件重复的现象。具体操作为 从一个节点扩容到10个节点,3副本,添加一个节点操作为probe node–>add-brick–>replace-brick–>rebalance-fix-layout, 添加至10个节点后,删除第1个节点,操作为:replace-brick–>detach node。fuse客户端操作,stat f

2020-05-11 17:44:11 388

原创 设计模式golang-外观模式

定义提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。角色1.高层接口2.子系统接口例子小明喝咖啡,咖啡店制作咖啡,制作咖啡又需要咖啡豆和水等,咖啡店对于小明来说就统一了咖啡豆等子类访问。//子系统接口type Caffe struct{ Name string}type CaffeineShop interface{MakeCaf...

2020-04-12 23:46:53 162

原创 centos7 glusterfs7.0 源码编译安装

本来是可以参考官网 https://docs.gluster.org/en/latest/Install-Guide/compiling-rpms/ 来进行源码编译安装的,没想到官网只说明了centos6 的,centos7 没说明,故此来记录一下。安装依赖包1.官网文档需要的# sudo yum -y --disablerepo=rhs* --enablerepo=*optional-rp...

2020-04-03 18:04:23 688

原创 设计模式golang-适配器模式

适配器模式定义将一个接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。角色1.源接口。2.适配目的接口。3.适配结构体。例子人类能说话,动物也能发声叫,人类能学动物叫,需要一个转换器把人类的叫声转换为动物的叫声。//适配目的接口type AnimalSound interface{Sound()}//源结构体type PeopleSpeak stu...

2020-03-29 22:23:16 264 1

原创 设计模式golang-命令模式

命令模式定义将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。角色1.命令抽象接口2.请求结构体例子一个盒子上的按钮执行//命令抽象接口type Command interface { Execute()}/...

2020-03-22 20:47:31 186

原创 设计模式golang-单例模式

单例模式定义确保一个类只有一个实例,并提供一个全局访问点。角色1.全局访问点即全局访问函数。2.单例结构体。例子var m *singlevar once sync.Once //单例结构体type single struct{ Name string}//全局访问此结构体实例的函数func GetInstance()*single{ once.Do(f...

2020-03-15 17:21:17 99

原创 设计模式golang-工厂模式

工厂模式定义创建对象的接口,让其子类自己决定实例化哪个类,工厂模式使其创建过程延迟到子类进行。角色1.产品抽象接口2.工厂创建产品方法3.产品实例例子选银行借钱的例子,资质方法根据你的收入等其他情况给你选择银行。//抽象产品接口type Bank interface { BorrowMoney()}//具体银行产品实例type BjBank struct{}func...

2020-03-08 17:18:28 91

原创 设计模式golang-装饰者模式

装饰者模式定义动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。角色1.装饰抽象接口2.装饰者3.被装饰者角色关系:装饰者和被装饰者通过装饰抽象接口关联。例子一个早餐铺,卖早餐事物包子、豆浆、鸡蛋,客户可以组合购买。//抽象装饰接口type Food interface { GetFoodDesc()string Cost()float64}...

2020-02-29 19:59:15 237 1

原创 设计模式golang-观察者模式

在这里插入代码片# 观察者模式定义一系列对象之间的一对多的关系,当一个对象改变状态时,它的所有依赖者都会收到通知。原理是观察者订阅被观察者,如果被观察者状态变化,通知订阅的观察者。角色被观察者被观察者订阅抽象接口观察者结构体实现订阅接口角色关系为:观察者实现被观察者抽象的订阅接口,观察者订阅被观察者,被观察者一旦数据状态改变,就通知调用订阅者订阅的抽象接口。例子一个公司业务部...

2020-02-23 17:14:25 155

原创 设计模式golang-策略模式

策略模式定义定义算法族,分别封装起来,让他们相互可以替换,此模式让算法的变化独立于使用算法的客户(head first 设计模式书中定义)。在golang 中相当于一个interface 抽象方法类,各个结构体来实现interface 抽象的方法。角色调用策略主体策略模板策略具体实现例子小明同学还信用卡,还的方式有很多例如支付宝、微信等方式1.定义抽象策略模板2.定义具体还...

2020-02-22 22:02:23 164

转载 Go语言开发实践规范汇总

目录统一规范篇 合理规划目录 GOPATH设置 import 规范 代码风格 大小约定 命名篇 基本命令规范 项目目录名 包名 文件名 常量 变量 变量申明 变量命名惯例 全局变量名 局部变量名 循环变量 结构体(struct) 接口名 函数和方法名 参数名 返回值 开发篇 包 魔...

2020-02-22 20:40:45 337

原创 kafka 总结

kafka 总体介绍消息队列应用场景异步解耦、广播发布订阅、 流量削锋 。kafka企业使用方式1.kafka topic 管理平台。包含topic 注册 管理,topic 消息结构体定义及其修改(topic 消息结构 定义为avro 结构。方便接入到大数据hive 里面。消息可以持久化到hbase中,最终可以通过ksql 查询)。2.topic 消息监控。生成和消费情况监控hook等。...

2020-02-20 13:48:09 131

原创 redis 总结

概述redis 是一个内存的缓存数据库,用于做缓存的。为各个服务做集中缓存服务。支持多种缓存数据结构。如 string、hash、list、set、sortset,也支持简单的发布订阅、和消息队列、lua 脚本自己支持的缓存服务和事务等一些其它服务。redis 架构模式单机到集群单机模式​ 适合于不重要的缓存数据,可以快速重建,失效对系统影响不大的数据。缺点:单点,数据容易丢失。...

2020-02-20 13:45:52 403

原创 业务应用开发总结

业务开发往往是产品需求都比较急,叠带比较快。往往是快速排期、快速设计、快速开发,快速上线的一个状态,这就比较考验程序员的如何来适应这个快速的节奏和建立自己的开发流程和如何抛开工作之外的自我提升。那怎么来应对这样一个快速的节奏呢?理解团队技术栈熟悉开发框架,熟悉团队中间件(如redis、kafka、orm、log、rpc等封装)的使用,最好深入源码研究,发现使用方法、什么场景怎么使用,有哪...

2020-01-01 16:34:24 359

原创 snowflake 64位id 自增算法

在分布式系统中生成一个64位id,并保持id 大致顺序,需求为每秒生成100万的id。为了满足 分布式系统、顺序、每秒生成100万。算法把 64位id 分为 0位保留,1--12位 为序列号,13--23位为机器id,24--63位为毫秒级时间,64位保留。分布式用13-23位的机器id 保证,顺序用24--63位的时间保证,序列号1--12位 保证没毫秒内可以并发生成12位的序列号,这样

2016-06-14 09:34:45 815

原创 关于开源分布式文件系统的性能调优方法

现在开源的文件系统各有优劣,并应用场景不大一样,所以区分一个文件系统的好坏 只能通过不同的应用场景来区分。如果确定了应用场景然后选择分布式文件系统的话,然后就是看性能是否满足要求了。开源的分布式文件系统一般默认配置的话很难达到一个最优性能。下面我就来说一下调优一个文件系统我的方法。1.首先要明白你自己是一个怎么样的配置环境,例如:你一台服务器,能提供多大io,能从你的硬件配置(网卡,磁盘)算出

2015-11-13 22:11:10 869

原创 glusterfs 动态扩容 没那么简单

glusterfs 号称 是不中断业务扩容,意思是在后台做扩容操作的时候不影响客户端的访问。原来一直没有细看这一块代码,最近同事在afr层修改一些代码的时候,遇到问题就是按glusterfs架构思路写的代码,把一些需要记录的信息存放在inode 的ctx里面,然而一做扩容或者其他需要改变graph 树的时候就会出问题,发现设置在inode 里面的ctx 没了,父目录也没有做lookup操作,导致原

2015-11-12 21:54:48 2315

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除