伴随着阿里云五周年之际,阿里云技术公开课“阿里云课堂”正式启动。云计算将开创新的计算模式时代,随着云计算的快速发展、为了让更多的开发者深入了解使用云技术,也让IT从业者更好地支持自身业务的发展,阿里云将在全国12个城市开展阿里云技术公开课,涉及课程从编程开发、数据中心运维、海量数据处理、深度学习、移动开发等等时下最热的技术,通过“阿里云课堂”技术公开课、能够面对面的交流,使开发者可以真正了解云计算、用好云计算。 阿里云课堂第五期详情 第五期公开课将于2014年12月27日13:00在深圳南山区保利剧院(广东省深圳市南山区文心五路33号保利文化广场)举行,ImapBox邀请了阿里云开发组长/高级工程师/技术专家杨成虎(花名:叶翔)、阿里云开发组长/高级工程师/技术专家仇应俊两位演讲嘉宾,将分别就开放结构化数据服务、OCS(缓存服务)从分布式到云服务的进化等方面做精彩分享,带你发现云计算之美。 [免费参与请猛戳报名链接。] 阿里云课堂第五期日程 下面让我们一起来提前认识一下各位演讲嘉宾以及他们要分享的内容。
时间
演讲主题
演讲嘉宾
13:30-14:00
签到
14:00-14:05
开场
14:05-14:50
开放结构化数据服务
仇应俊
14:50-15:00
短休
15:00-15:45
OCS(缓存服务)从分布式到云服务的进化
杨成虎(花名叶翔)
15:45-16:00
短休
16:00-16:50
OpenSpace分组讨论
17:00
合影活动结束
仇应俊:开放结构化数据服务
仇应俊
开发组长/高级工程师/技术专家
嘉宾介绍:阿里云飞天部门高级专家,毕业于浙江大学计算机和技术专业。2009年加入阿里云,之后一直从事结构化数据服务(OTS)的研发工作,目前负责OTS服务的技术规划和研发管理工作。加入阿里云之前,在微软亚洲研究院从事过手写识别,大规模分布式数据处理和软件代码分析等领域的研发工作。
在本期的阿里云课堂上,阿里云开发组长、高级工程师、技术专家仇应俊在这次课程中主要向大家介绍OTS服务的架构设计原理和关键设计上的一些权衡,同时介绍应用在使用OTS服务时特别要关注的事项,敬请期待。下面先为大家简单认识下阿里云的开放结构化数据服务:
OTS简介
开放结构化数据服务(OpenTableService,OTS)是构建在阿里云飞天分布式系统上的NoSQL数据库服务,提供海量结构化数据的存储和实时访问。OTS以实例和表的形式组织数据,通过数据分片和负载均衡技术,实现规模上的无缝扩展。OTS应用在阿里巴巴集团内多个重要的业务场景,每天处理几百亿次请求,数据量达PB级别,目前也已经正式商用对外售卖。
OTS的产生背景:
传统数据库后台的三个挑战:
面对着三个挑战,OTS的策略:
1. OTS处理大规模数据。 在OTS的服务里面,表被水平分割成很多数据分区,这些数据分区被自动送到数据节点进行处理,随着业务的发展,一个数据分区变大或者访问越来越多,成为一个热点的时候,系统自动把数据分区分成两个小的,然后再重新进行调度,把它分散到节点,或者新的机器上,达到整个动态能力的扩展。
2. OTS具有高可用的特点。在这样一个系统里面硬件故障是比较普遍一个现象。当一个机器上的处理数据的节点或处理分区的机器发生故障的时候,首先故障被自动侦测,然后机器把失效数据分区移到其他的节点上。为了达到一个高可用特点,除了故障的恢复外,在底层的软件,OTS具有热升级功能,从而确保这些动作对应用不会产生可用性的影响。
3. OTS从容应对表格的SCHEMA动态变化。每一行的属性列,都可以在程序运行过程当中动态增加和动态删除。 这样就做到了对属性列数据要求没有限制,而实际上是使用非常巨大的宽表模型实现。
4. 存储在OTS的数据本身是安全可靠的。首先数据会统一存储在底层分布式的文件系统,分布式文件系统会保证每个数据有多份的拷贝,当拷贝丢失或者损害的时候,系统会自动检测并恢复。其次,每个数据在OTS里面每个是隔离的,这样保证用户的数据是安全可靠的。全托管的服务对用户来讲非常简便,不需要运维。
阿里云的服务,OSS,OTS,RDS区别
在数据模型上,OSS无结构,OTS半结构化,可以动态调整,RDS是强结构。OSS无事务支持,OTS有,RDS具有关系型的事务支持。
杨成虎(花名:叶翔):OCS(缓存服务)从分布式到云服务的进化
杨成虎(花名:叶翔)
开发组长/高级工程师/技术专家
嘉宾介绍:擅长通过NoSQL存储系统、Cache系统去解决海量数据的互联网问题。09年加入阿里巴巴,先后开发了阿里的小文件系统、KV存储系统,负责阿里Tair系统的开发与架构设计,且支持Tair系统在阿里集团的大规模应用。13年至今主导研发了阿里云分布式缓存服务OCS,目前仍致力于Tair向OCS产品的升级转变。
在本期的阿里云课堂上,阿里云开发组长、高级工程师、技术专家杨成虎(花名:叶翔)将会结合自己的实践,为学员们倾情讲述OCS(缓存服务)从分布式到云服务的进化,分享自己的实战经验,敬请期待。
OCS简介
OCS(Open Cache Service)为分布式高速缓存服务,主要实现热点数据的快速响应; OCS支持Key/Value的数据结构,兼容memcachebinary protocol且支持SASL的客户端都可与服务端通信。
OCS 支持即开即用的方式快速部署;业务系统的时延和吞吐量受限于数据的更新和获取,常见的解决方案是在业务层和持久化层之间增加缓存层,从而降低持久化层的压力,提高系统整体的反应速度。
与自建memcached相同之处在于OCS兼容memcached协议,与用户环境兼容,可直接用于OCS服务。
不同之处在于硬件和数据部署在云端,有完善的基础设施、网络安全保障、系统维护服务。所有的这些服务,都不需要投入额外运维资源和成本,只需根据使用量进行付费即可。
与此同时,OCS实际上是以memcached协议封装的Tair,但本文不要求读者具有memcached和Tair的基础。
OCS基本架构
OCS是通过在Tair系统上封装memcached协议而成。以一次访问为例:首先云服务器发起memcached请求到OCS,其次负载均衡(LVS)到某台memcached的代理服务器(Proxy)上,再次Proxy把memcached请求转换为Tair请求,最后由Tair集群完成实际的高速存取功能。
而Tair又是什么呢?
Tair是淘宝自己开发的一个分布式key/value存储引擎。Tair分为持久化和非持久化两种使用方式。非持久化的Tair可以看成是一个分布式缓存。持久化的Tair将数据存放于磁盘中。为了解决磁盘损坏导致数据丢失,Tair可以配置数据的备份数目,Tair自动将一份数据的不同备份放到不同的主机上,当有主机发生异常,无法正常提供服务的时候,其于的备份会继续提供服务。
Tair的总体结构
一个Tair集群主要包括3个必选模块:configserver、dataserver和client,一个可选模块:invalidserver。通常情况下,一个集群中包含2台configserver及多台dataServer。两台configserver互为主备并通过维护和dataserver之间的心跳获知集群中存活可用的dataserver,构建数据在集群中的分布信息(对照表)。dataserver负责数据的存储,并按照configserver的指示完成数据的复制和迁移工作。client在启动的时候,从configserver获取数据分布信息,根据数据分布信息和相应的dataserver交互完成用户的请求。invalidserver主要负责对等集群的删除和隐藏操作,保证对等集群的数据一致。
从架构上看,configserver的角色类似于传统应用系统的中心节点,整个集群服务依赖于configserver的正常工作。但实际上相对来说,Tair的configserver是非常轻量级的,当正在工作的服务器宕机的时候另外一台会在秒级别时间内自动接管。而且,如果出现两台服务器同时宕机的最恶劣情况,只要应用服务器没有新的变化, Tair依然服务正常。而有了configserver这个中心节点,带来的好处就是应用在使用的时候只需要配置configserver的地址(现在可以直接配置Diamond key),而不需要知道内部节点的情况。
Tair的一致性和可靠性问题
分布式系统中的可靠性和一致性是无法同时保证的,因为我们必须允许网络错误的发生。Tair采用复制技术来提高可靠性,并且为了提高效率做了一些优化,事实上在没有错误发生的时候,Tair提供的是一种强一致性。但是在有dataserver发生故障的时候,客户有可能在一定时间窗口内读不到最新的数据。甚至发生最新数据丢失的情况。
迁移到OCS
OCS是一个KV分布式缓存服务,类似的缓存服务也有很多,它们的开发技术和经验基本是类似的。再加上OCS兼容memcached协议,这使得开发者能够找到大量的学习资料,更容易地使用OCS服务。
1. 如果业务系统原来已经使用memcached作为缓存,则迁移到OCS是一个比较简单的事情。因为OCS兼容memcached,所以代码不需要改变,只需要作必要的配置更改和测试即可;
2. 如果业务系统原来使用的是其它缓存,则设计保持不变,只需要做相关的代码修改和测试。
3. 如果业务系统原来没有使用缓存,计算采用OCS提高系统反应速度和降低数据库压力,因为OCS封装了分布式管理、高可用等功能,所以开发难度小于memcached。
那么客户端连接OCS是长连接还是短连接?
客户端连接OCS是长连接。若业务并发量大,为性能考虑,可以开启连接池功能。
示例代码
package com.aliyun.ocs.demo; import net.spy.memcached.AddrUtil; importnet.spy.memcached.ConnectionFactoryBuilder; importnet.spy.memcached.ConnectionFactoryBuilder.Protocol; import net.spy.memcached.MemcachedClient; import net.spy.memcached.auth.AuthDescriptor; importnet.spy.memcached.auth.PlainCallbackHandler; importnet.spy.memcached.internal.OperationFuture; import java.io.IOException; importjava.util.concurrent.ExecutionException; public class Main { public static voidmain(final String[] args) { MemcachedClientmc = null; try{ //指定验证机制,推荐PLAIN, //部分客户端存在协议BUG,只能使用PLAIN协议(PlainCallbackHandler) AuthDescriptorad = new AuthDescriptor(new String[]{“PLAIN”}, new PlainCallbackHandler(“ocstestuser”,”ocstestpaswd”)); // 用户名,密码 mc= new MemcachedClient(new ConnectionFactoryBuilder() .setProtocol(Protocol.BINARY)// 指定使用Binary协议,必须 .setAuthDescriptor(ad) .build(),AddrUtil.getAddresses(“m.ocs.aliyun.com:11211″));//访问地址 OperationFuture<Boolean>future = mc.set(“Hello”, 0, “OCS”); //异步接口,返回Future future.get();// future.get() 确保之前(mc.set())的操作已经结束 System.out.println(mc.get(“Hello”)); }catch (IOException e) { e.printStackTrace(); }catch (InterruptedException e) { e.printStackTrace(); }catch (ExecutionException e) { e.printStackTrace(); }finally { if(mc != null) { mc.shutdown();// 关闭,释放资源 } } } }
如果使用Maven添加的依赖是:
<dependency> <groupId>com.google.code.simple-spring-memcached</groupId>
<artifactId>spymemcached</artifactId> <version>2.8.4</version>
</dependency>
$memcached = new Memcached; // 关闭压缩存储,increment和decrement不能针对已经压缩的数据操作 $memcached->setOption(Memcached::OPT_COMPRESSION,false); // 使用二进制协议 $memcached->setOption(Memcached::OPT_BINARY_PROTOCOL,true); // 连接服务器 $memcached->addServer(‘m.ocs.aliyun.com’,11211); // 设置用户名和密码 $memcached->setSaslAuthData(‘ocstestuser’,'ocstestpaswd’); $memcached->get(‘xxxxx’);
依赖:Memcached 2.1.0扩展 必须使用libmemcached 1.0.x的库,低于1.0的库不再能够成功编译。
using System; using System.Collections.Generic; using System.Text; using Enyim.Caching.Configuration; using System.Net; using Enyim.Caching.Memcached; using Enyim.Caching; namespace OcsApp { class Program { staticvoid Main(string[] args) { MemcachedClientConfigurationconfig = new MemcachedClientConfiguration(); IPAddressnewaddress = Dns.GetHostEntry(“m.ocs.aliyun.com”).AddressList[0]; IPEndPointipEndPoint = new IPEndPoint(newaddress, 11211); //配置文件 – ip config.Servers.Add(ipEndPoint); //配置文件 – 协议 config.Protocol= MemcachedProtocol.Binary; //配置文件-权限 config.Authentication.Type= typeof(PlainTextAuthenticator); config.Authentication.Parameters["zone"]= “”; config.Authentication.Parameters["userName"]= “10086″; config.Authentication.Parameters["password"]= “abc”; //实例化memcache客户端 using(MemcachedClient memcache = new MemcachedClient(config)) { boolsuccess = memcache.Store(StoreMode.Set, “my_net_key”,”abc”); Console.WriteLine(success); stringstr = Convert.ToString(memcache.Get(“my_net_key”)); Console.WriteLine(str); memcache.Dispose(); } Console.Read(); } } }
依赖:
第五期阿里云课堂:带你发现云计算之美将要拉开帷幕了,想了解更多关于阿里云的技术?有没有兴趣倾听阿里云技术大牛的技术实践经历?不要在犹豫了,赶快来报名参加 阿里云课堂第五期,主题为:阿里云-结构化存储与结构化数据服务的技术实践。
报名地址: https://huiyi。csdn。net/activity/product/goods_list?project_id=1588
免费订阅“ImapBox云计算(左)和ImapBox大数据(右)”微信公众号,实时掌握第一手云中消息,了解最新的大数据进展!
ImapBox发布虚拟化、Docker、OpenStack、CloudStack、数据中心等相关云计算资讯, 分享Hadoop、Spark、NoSQL/NewSQL、HBase、Impala、内存计算、流计算、机器学习和智能算法等相关大数据观点,提供云计算和大数据技术、平台、实践和产业信息等服务。
本文为ImapBox原创文章,未经允许不得转载,如需转载请联系market#csdn.net(#换成@)
本网页所有文字内容由 imapbox邮箱云存储,邮箱网盘, iurlBox网页地址收藏管理器 下载并得到。
ImapBox 邮箱网盘 工具地址: https://www.imapbox.com/download/ImapBox.5.5.1_Build20141205_CHS_Bit32.exe
PC6下载站地址:PC6下载站分流下载
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox 网页视频 工具地址: https://www.imapbox.com/download/ImovieBox4.7.0_Build20141115_CHS.exe
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算