喂 大家好我们是来自腾讯云Tistag团队的一个存储研发团队然后我们最近有做了一个叫NOT的一样这样一个产品它的功能就相当于这题目上讲到的就是说是一个智能的对象存储网关好然后我们先看一下我们今天的目录首先我们会介绍一下SEF因为我们的存储是基于SEF来做开发的所以说我们会介绍一下现在在SEF对象存储的一个现状然后我们会基于对象存储做了一些类类的价格优化后面是一个我们新的价格的一个功能点首先我们看一下SEF对象存储有一个现状当我们在生产环境上大规模使用对象存储的时候我们会发现对象存储的性能会随着时间的推移数据量的增加会表现得越来越差尽管我们可以做一些优化比如说我们把锁影放在SSD上去然后它的一个性能表现还是会让人满意我们就会做一个事情就是说把对象存储的锁影给去掉去到锁影之后会有一个比较明显的提升也就是说有300%的提升但是它会缺失掉一个锁影存储的功能就是说它不可以在锁影这个桶然后它的Live Circle的这些配置都会失效所以说我们下面就会锁影的话就会对我们对象存储有一个比较大的影响那到底是该去还是不去呢这是一个问题那在我们长时间使用SEF的时候我们会发现一个问题首先就是说SEF在我们生产环境上使用的是比较多的SEF尽管好用但是它并没有那么好用比方说当我们集群出现了故障的时候当我们替换磁盘的时候集群扩容的时候这些恢复流量恢复流量会大大的影响集群的一个性能的表现然后当我们数据量非常大的时候它的集群的性能也会表现得很差当然这都是针对于对象存储的对象存储还有一个问题就是说它并不能针对我文件的大小或者文件的类型进行一个文件的分流不能把小的文件直接分流到SSD上去大的文件就分流到SATA上去那这些东西都是我们需要在做智能网关的时候所需要考虑的一个事情然后自身还有一个很大的问题就是说第四点就是这里的第四点对象存储它自身不做负载均衡很难突破于屋里带宽那我们如果有一些项目需要一个十个G的以上的带宽的话那必须在前面架一个负载均衡其实这样的也有增加了一些硬件成本当我们但是我们的NAT的话做出来之后的话它并不需要增加额外的任何硬件就可以实现一个带宽的一个无上限的扩容然后我们当然也有参考到现在现有的一个方案就是YG的这样一个方案他们也是他们做的是说把对象图书网关就RGW这个网关进行了一个改造就是说全部重写用购来重写然后用SEF当然于是SEF现在是在他们这一层次只是提供一个文件的一个独写的一个功能并不是提供了对象图书的功能而对象图书的功能是他们自己做的一个YG的这一层这一层的话是负责了S3请求的一个解析还有一个认证的这些工作那他们把元素聚直接放到了一个TIDV像我们高性能的数据库上去这样的话他的好处就是说我们那个就可以把这个所引的一个影响就会放到了一个他们就把所引放到了一个数据库上之后他的所引就是去到的那他就可以真正的开发出SEF的一个原生的一个独写的一个性能这样性能的表现还是蛮好的但是他还有一些缺点就是说怎么样呢他把整个RGW网关这一层给重购了这样的工作量是非常大的我们其实没有这么多的人力去做这样的开发那所有的他还有一个小问题就是说他的S3的请求他其实是要对接他的YG的一个S3的请求那对S3的请求并不是完全兼容的所以说我们后面就要做到一个NAT的一个这样一个产品现在由我们这个开发美女来介绍一下对我们是基于小胖前面讲到的RGW的现状然后顾外的我们需要对对象存储进行一个大小分流还有就是对应用层的原数据提供减缩功能并且我们希望当NAT一个Safe的磁盘例如说出现故障的时候对整个集群来说是几乎无影响的同时要达到无线扩容和无线带宽的支持在此机所上我们提出了NAT架构我们可以看到NAT架构主要是由层屠层网关层和用户层组成其中存储层我们的Safe是以三节点为一set构建其次我们所有的Safe集群都是去index的我们会针对Safe集群的盘的特性将其分为高性能Safe集群和普通Safe集群在网关层NAT服务主要是进行一个请求的重定项和请求的分发而Elastic Search它主要是将Safe层去掉的index中对象的原数据存入ES集群当中而NAT-M心跳它主要是向下来检测Safe集群是否健康的以及NAT集群NAT服务各服务本身状态图的同步而在我们的用户层我们提供客户端Driver实现一个软DNS的功能实行求既支持我们自身的一套NAT服务也可以将请求定向转发到公用云上面下面我们来主要介绍一下NAT的工作原理当一个用户请求发送至NAT的时候首先由NAT接收到了这个请求首先是解析它四层TCP的一个投请求解析出它里面的原数据部分分析出它具体的请求类别和它的原数据通过这一个选择器选择出该请求对应的一个Safe目标集群组将这一个对象哈希到特定的一个Safe集群从而实现一个请求的重定向之后我们就会立刻将请求返回给用户同时同时一步地将对象的原数据写入到ES中从而实现几乎当我们来写一个对象的时候它的数据基本上是和直接写Safe集群是无差别的接下来我们再介绍一下NAT架构当中的它的功能特点第一个就是Safe集群的扩容Safe集群的扩容主要是存储上的扩容当一个Safe集群要加入到NAT当中的时候首先第一步Safe集群要将它所有的RGWIP信息告知NAT第二步由NAT来首先来发一个向它的各个RGW发一个聘请求并且第三步它会写一组测试数据成功了之后这一个Safe集群就加到了某一个NAT当中它此时的我们只对外提供它的Bucket相关的操作和用户相关的操作当各个NAT它的状态图一次同步了之后我们会由NAT向Safe集群发一个同步的操作就是让Safe集群中的用户信息和Bucket信息和目前已有的NAT集群中的信息保持一致同步结束了之后我们才会让Safe集群对外提供对象的读写服务Safe层面的扩容主要是存储层面的扩容而NAT的扩容主要是带宽的扩容当一个NAT新的NAT要加入以有的三个NAT中的时候它首先会从以有的NAT中拉取信息比如说NAT中目前已管理的Safe信息和NAT自身的状态图其次它会向原有的三个NAT发送就应请求此时服务注册完毕但是对于客户端来说它目前知道的还是原有的三个NAT等它下一次请求的时候旧的NAT会向它推送新的NAT的状态图它收到新的状态图之后再去拼新的NAT成功了之后将其加入到自身的轮型列表当中我们通过在Safe层面的扩容和NAT层面的扩容实现了一个存储和带宽的武商线在我们实际的应用中当时17承载的是一个3GB的带宽量27通过对NAT自身的扩容和Safe集群的扩容我们可以支持承载到12GB的一个带宽最后我们来说一下当Safe集群出现故障时候的处理如图所示当A集群中出现坏盘的时候由NATM检测到A集群出现故障因此将其降级此时它对外只可读不可写其次NAT像出现故障的集群发送一个全速恢复的指令带起全速恢复完毕之后该集群再重新加入到NAT集群当中对外提供读写服务这就是我以上所讲的内容谢谢大家后面还有我们T-Strike团队的一个二维码然后大家想了解我们团队的最新的一个消息还有就是说对我们团队比较感兴趣的话可以扫这个二维码关注一下当然可以到我们的展台上扫码领取公仔谢谢大家