文档章节

青云QingCloud 在不同场景化中的云计算应用

cathyli
 cathyli
发布于 2016/04/20 08:31
字数 5477
阅读 44
收藏 0

大家好,我是青云解决方案的陈柏文,感谢大家留到现在听我的演讲。前面是开发工程师,他们主要写code,我来自于解决方案部门,我的主要职责是生产解决方案以及解决方案搬运工。我的演讲主题比较轻松,主要谈谈很多云计算功能的应用。

首先,我们在云端架构应用时要考虑到很多数据包,如何快速把数据包上传到云端?每个人都有自己的解决办法。比如我在云端搭一个FTP或是使用传输工具传输,这可能很麻烦。在青云如何很方便的把大数据传到云端?这里介绍一种方式,通过我们的对象存储。正如Osier刚才所说,我们内部主机访问对象存储时走的是内网。 图中是我在对象存储里放的视频,之前我访问的时候是公开只读,现在设为私有。我想把它上传到云端,再从云端下载到主机。最方便的方式是把这个应用先上传到对象存储,对象存储是一个弹性扩展的架构。你的带宽有多大,我的对象存储可以接多大的请求。比如我的带宽20兆,传输速度到对象存储是20兆。你可以先把数据包上传到对象存储,再从内网主机通过对象存储拿数据的时候可以走内网。我在内网主机访问域名时,解析的是内网地址,并且内网地址请求速度非常快,是49.1MB(Byte),相当于乘以8之后,超过300兆。这是我们非常好的方式。 现在把数据上传到云端,如何预测我们的业务需要多大的带宽,一般情况下我们需要一个很有经验的工程师,他计算高峰并发时有1000个用户,假设我有200兆的文件,200兆乘以1000用户,转换算出带宽,这需要一个很专业的工程师做这个事。如何在青云上很方便的完成这个工作,而不需要一个很专业的工程师呢?我们的公网IP支持流量计费,你可以不需要知道你的带宽多大,到底是20兆、50兆或是100兆。你可以直接开100兆,我运行一段时间(一星期),运行后发现我的带宽平时峰值是30-50兆,这时候可以按带宽收费,不需要按流量收费,切换非常方便。我把它调成流量计费,其他友商需要包月或者包年,青云是按秒计费,它的好处是我的带宽可以不按我的峰值计费,按照我的常量计费。比如我每天的峰值时间可能只有4小时,这4小时我需要100兆,其他20小时都不是峰值,只需要10兆带宽。青云有自动伸缩功能,通过自动伸缩功能可以让公网IP带宽自动调节,不需要任何人为干预。 选好带宽后,需要架构应用,面临的问题是如何保证应用的可用性。大家知道负载均衡,名字听起来主要做流量转发,其实负载均衡还有一个更重要的功能叫健康检查。负载均衡可以探测后端应用是否可用,这种探测不仅仅探测端口是否可用,更重要的是可以模拟用户请求,探测后端应用是否可用。例如访问百度,打开百度首页,负载均衡可以模拟用户的请求,发一个七层的模拟用户请求的动作探测后端应用是否可用。当应用出现问题时,负载均衡可以及时隔离。 有了健康检查,下一步考虑的问题是如何更好的提高应用的访问速度,我们有很多方案。结合负载均衡,使我的集群足够大;输出有点缓慢,可以加上缓存,还可用有面向服务的架构。我可以给大家提供另一种选择——策略转发。当大家架构网站的时候,通常网站打开比较慢,不是因为带宽和后端业务的问题。主要因为浏览器,单独一个浏览器对于一个网站的并发连接是6-8个。比如京东首页有三、四百个文件,如果我们只有一个域名,比如 www.gd.com ,这个文件有三、四百个。我除以每秒6个并发连接,它肯定会非常慢。如何解决问题,最好的办法是做域名拆分。我把我的主页有300个资源,将它拆成50个域名,每个浏览器对于每个域名都会有6-8个并发,我一次请求可以把300个文件的资源都盖下来。我们做域名拆分时需要很多IP解决问题,在青云上不需要。青云的负载均衡支持一个功能叫策略转发。用比较专业的词叫host switch,比如很多域名,我把这些域名解析成同一个IP地址。如何区分这么多域名对应的IP地址,可以通过负载均衡识别,负载均衡可以支持七层流量转发,可以探测用户访问到底是哪个域名。虽然是不同的浏览器,但解析的是同一个域名。

随着业务的增大,我们的业务转换成面向服务的架构。我们可以基于不同的模块、不同的压力扩展集群的大小。假设我有一个URL压力非常大,我们可以把这个URL单独拿出来。比如它原来和其他URL可能在一台主机上处理,我们把它单拿出来后,放在一个集群,这个集群只处理这个URL的请求,这个技术叫URL Switch。我可以识别不同的URL,转发到不同的后端服务器上。

下面解决如何提高业务的安全性的问题。比如我现在有200台主机,200台主机有不同的管理部门,有专门管网络、应用的等等,我们如何更好的管理集群的安全性问题,大家现在访问百度,原来百度是HTTP,现在我们访问百度会发现,虽然我输入 www.baidu.com ,它会自动重定向到HTTPS,这是一个加密的请求。我会在HTTP协议中封装SSL,我把它做加密。很多人可以在后端服务器上直接做,为什么有一种东西叫HTTPS卸载呢?如果我把加密放在后端服务器上直接做的话会带来一个问题,用户的请求到后端服务器,这段请求是加密的。如果请求数据包中有攻击的话,中间的WAF起不到任何作用,意思是七层防护设备起不到任何作用。如何解决这个问题,青云提供非常好的解决方案,我们有HTTPS卸载,我可以把加解密的请求用负载均衡来做,负载均衡和后端服务器跑明文流量,首先用户访问我们的页面是安全的,用户请求的数据可以通过WAF做防护控制,同时减轻后端服务器的压力。

用户的后端服务器可能是HTTP的,我们现在帮它做HTTPS的卸载后,他可能不想改动代码。我们如何很方便的,只要用户访问过来的请求是HTTP的,我把它重定为HTTPS,在用户无感知的情况下,青云有很好的解决方案。我们有HTTPS重定向,不需要用户在UI输入HTTPS的域名,只需要按照之前的习惯输入HTTP就可以了。 除此之外,还可以获取客户端地址。比如我们在做互联网金融或是与金融相关的业务,如果用到负载均衡,现在很多负载均衡方式直接做转换,我会隐藏客户端源地址,后端审计不知道这个到底来自于哪,我看到的都是负载均衡过来的。这会带来安全性问题,一旦一个用户有攻击,我们查不到源地址,根本无法追溯。青云提供非常好的功能,我可以把客户端源地址直接插在IP包或者HTTP包里,让后端应用可以从包装去打,起到安全作用。 如何提高业务的弹性?负载均衡可以自己扩充服务器大小,如何提高业务弹性。正常情况下有10台主机提供服务,突然高峰来了,可能需要100台,中午12点正在吃饭,业务正好来了,我得蹲在前面守着。我如何使这个动作自动化执行,青云有一个功能叫做自动伸缩,我的负载均衡可以探测客户端并发请求。比如客户端并发请求是100的时候,后端服务器1台就够了。1000的时候可能有10台,100000的时候可能要100台。这些动作可以设置成策略,只要并发请求达到触发条件后,整个集群会自动扩展。不仅可以自动扩展,还可以自动伸缩。比如业务高峰过去了,不需要人为把机器关掉,只需要通过自动伸缩就可以自动的把资源清除掉。前提是做到Web前端无状态,这才能使得整个集群的伸缩扩展。

还有一个功能叫固定数量,比如整个集群有10台主机提供服务,我们业务量不会有特别明显的波峰波谷,可能10台就够了。面临的问题是我的代码有Bug或者应用有问题,可能会造成其中2台服务器宕机了,剩下8台提供服务。这8台不足以支撑整个集群的请求量,我们有非常好的解决方案。我有一个固定数量,我把固定数量升成10,只要有2台宕机后,立马起2台,使这个集群的规模始终是10台,能达到承载我们业务量压力的集群大小。一是可以调的,二是可以叠加的。你可以对一个集群设成多个策略,你想要多大的集群,可以叠加多大的策略。 随着我们的业务量的增大,我们有一个主账号,负责我们的核心业务,我们还有很多周边业务,需要用子账号部署其他的业务。主账号和子账号之间有访问请求需要建立,如果大家是青云的用户,肯定知道青云有一个GRE功能。我这边介绍另一个功能,青云上可以子账号和主账号混合组网。大家知道VPC的概念,其中一个子网分给一个子账号,这个子账号可以把私有网络连接到VPC中,起到混合组网作用。主账号和子账号可以直接通过内网通讯,不需要通过路由器,直接点对点的通讯,效能非常高。

我们运维管理如何加强安全性。青云提供资源协作的功能,比如我有100台主机,我有网络组、运维组等,我的VPC、网络配置给网络组使用。其他的主机给运维组使用,同时他们不能互相干扰,网络组一旦有误操作会影响我的线上应用。如果我只是想把某些资源固定给某个子账号或者同级别的账号,可以通过资源协作的功能。资源协作来自共享,这是主账号,这是子账号,子账号只能看到主账号已经分配给他的资源,我们可以对资源做细粒度的管理,比如你只能管理、Read,或是可以Read、扩充大小,但不能删除,或是你有所有的权限,非常详细的管理都可以做到。 此外,我们还要保证主机访问的安全性。大家比较方便的使用习惯是把1台主机暴露到公网上,把22端口打开,通过SSH直接登陆。这非常不安全。有人说用户密码不安全,我可以通过密钥,密钥可能是足够安全的。虽然密钥足够安全,但它不足够方便。比如我有100台主机,你把100台主机都连到公网上,这是非常麻烦的,如何解决这个问题。可以通过VPN,青云支持Open VPN、PPTP,可以先拨号到管理路由器上,然后管理路由器通过内网地址访问主机,不需要把主机的端口暴露在公网上,同时可以通过SSH密钥登陆,这会足够安全。 除了安全性要考虑,下一个要考虑的是已经上线了,运行非常良好,我估计下一阶段要做宣传活动,我预期活动会有两、三倍的增加,我目前的架构能否足以支撑我的业务增长两、三倍之后的量呢?我们需要完整的测试环境。在青云上提供一种功能,非常方便构建完整的测试环境——拓扑。我们可以把现在已有的所有功能组件,包括主机、路由器、数据库等,直接把它组成拓扑模板,直接把它编排成拓扑模板。我可以基于拓扑模板创建一个和现在运行生产环境完全一样的测试环境,我们可以在测试环境上做压力测试,我们不仅可以方便构建环境,同时对现有的业务不会产生任何影响。

我们在云端架构了一个非常棒的架构,我们如何快速构建混合云。本来我自己的数据中心有一些设备,公有云主要用来消峰,传统的企业架构的IT一定是按照峰值规划的。比如我预测可能有1000万个并发量,IT资源量肯定要足以支撑这1000万并发的。如果我只按500万并发的资源买硬件或者资源量,肯定扛不住。我们如何解决这个问题,按峰值规划势必会带来一个问题,我的资源利用很低,大部分时间可能不超过5%,如何解决问题,可以通过构建混合云的方式达到成本的降低。

青云提供了非常好的方式构建混合云,青云直接支持IPSec或GRE模式,你可以拉专线,但相对费用比较高。青云支持虚拟专线的方式。我们VPN不仅支持模式,它适合什么场景,比如我有很多分支机构,我想把主站点放在云端,我不想分支机构通过公网,而是通过加密隧道访问进来,同时分支机构IP地址可能会变动,虽然会变动,但可以直接连到我的主站点。同时我们的负载均衡支持后端式写IP,而不是负载均衡只能把流量转发到云内主机,还可以转发到自己数据中心的主机上,只要隧道打通后,IP地址可达,我的数据怎么转发都可以。 如何管理海量资源。现在有500个主机,里面有各种各样的业务,如果我们点开首页一看有500台主机,这些主机都干嘛,非常麻烦的管理,青云提供非常好的方式。通过标签,我可以基于业务设置不同的标签,把不同的资源放在不同的标签里,点击标签后可以基于业务看到哪些资源,这些资源利用率、使用情况怎么样,都可以非常方便去看。 我们如何智能监控,比如现在要监控流量,正常情况下带宽峰值是50兆,如果将近100兆,这可能是业务量突增,我要实时感知和获取。比如我们业务量都是白天比较大,晚上两、三点业务量突然变成200兆,我们不太在意。我们需要时间的维度触发的报警,而不是只要有报警就立马给我。青云提供了一个非常详细的设置,我可以设置我们的报警生效时间,我可以设置中午生效或者晚上生效。 最后一个问题:如何省钱。我们在云上构建很多业务系统,青云所有的资源都是秒级计费,比如业务高峰时期需要100台主机,业务过了高峰时期或许只需要10台,我们可以通过定制把不需要的资源关机,关机后这些资源只有硬盘收费,CPU、内存不再收费。

大数据应用,比如Hadoop是专门做离线数据处理,我的业务模式是白天收集数据,晚上12点把数据导入Hadoop集群,算到早上6点。在这个时间段才需要Hadoop整个集群的利用,其他时间段是不需要的。这时候可以通过定时器定时开Hadoop,用完可以把Hadoop整个集群停掉。带来最大的好处是经济成本非常低。

以上是我对于各种场景的表述,大家有疑问可以沟通。

—————————————————————————————

提问:LB最大的并发数,并发数是硬件还是软件?

陈柏文:因为我的主题主要是场景,做LB没有系统介绍。我们LB集群的概念是单个点的并发是10万,如果集群两个结点是20万,十个结点是100万,一百个结点是1000万。LB支持集群,你看到的是单个LB结点。

提问:如果只用单个,它的并发数超过5000,还是可以超过5000? 陈柏文:这是理论值。其实没有限制,超过5000后,整个响应速度可能会因为LB而变慢。

提问:混合云只谈了LB部分,你的混合云如何支持存储部分。

陈柏文:混合云方面,从简单到复杂分为多层,一是只做数据转发层面,我在云端只负责做前端转发,后端所有数据还是放在自己数据中心或者我自己数据中心只负责前端转发;二是这种方式主要负责前端,同时可以在云端架构缓存层,一些热点数据或者访问比较频繁的数据直接到云端拿,比较冷的数据可以通过隧道方式去自己的数据中心拿;三是我可能在云端架构完全一样的环境,这势必会带来数据一致性等方面的问题,肯定会有其他的解决方案。

提问:现在支持吗?

陈柏文:支持。所谓同构和异构,最后传输是IP层,只要IP可达都是可以处理。

提问:现在有案例吗?

陈柏文:比如混合云,我们最大的案例是九鼎借贷宝。不知道对它有没有了解,刚上线第一天下载量超过300万,上线第一周是3000万,现在注册量过亿,在APP Store全球排名前20。它是混合云架构,它会把很多互联网相关的业务,包括抢红包等放在云端,自己核心跟钱相关的业务放在混合云中。这种混合云都是基于青云搭建的。

提问:谈到LB对HTTPS的卸载,卸载后服务器之间明文可以加WAF,在云的环境里如何加WAF。

陈柏文:比如Nginx有一些插件,AppCenter里面也会有,青云自己也会做WAF产品上线,相当于串联放在中间,所有数据经过它进行检测,再到后端服务器。

提问:LB定时开关,LB是客户还是公用的?

陈柏文:首先,青云所有资源是软件定义SDN,这是资源是你自己的,跟其他人没有任何关系。

提问:用户有虚拟负载均衡系统。

陈柏文:不仅可以有一个,可以由多个,这相当于一个个独立资源,相当于主机,VM可以有1台、10台、100台,LB也是一样。

提问:如果把它关闭了,LB的配置呢?

陈柏文:配置不会丢,它是关闭,而不是删除。如果删除了,肯定没有了。青云提供一个很好的功能是资源回收,我有回收站,删除后资源会保持两小时,两小时会找回来。

提问:LB是自己做的还是?

陈柏文:自己做的,我们LB有一个透明代理功能,首先需要数据请求经过LB,回报数据请求也在LB,但主机网关并不在LB上,如果要实现这个一定要通过SDN解决方式,LB是我们自己做的,我们LB和SDN实现流量的自定义控制。

提问:是一个服务链?

陈柏文:对。

© 著作权归作者所有

cathyli
粉丝 14
博文 58
码字总数 125594
作品 0
朝阳
高级程序员
私信 提问
【9大城市巡讲·重庆】青云QingCloud 实践课堂/第三季

关于实践课堂 QingCloud 实践课堂系列开始于2014年末,至今已经成功举办两季,是我们在全国范围内,为所有对技术有着极致追求的程序员和架构师们巡回举办的重要活动。迄今,已经走进了深圳、...

cathyli
2017/05/23
21
0
QingCloud 实践课堂——西安站2017年5月13日 13:30-17:00

关于实践课堂 QingCloud 实践课堂系列开始于2014年末,至今已经成功举办两季,是我们在全国范围内,为所有对技术有着极致追求的程序员和架构师们巡回举办的重要活动。迄今,已经走进了深圳、...

cathyli
2017/04/28
312
3
【9大城市巡讲·重庆】青云QingCloud 实践课堂/第三季

关于实践课堂 QingCloud 实践课堂系列开始于2014年末,至今已经成功举办两季,是我们在全国范围内,为所有对技术有着极致追求的程序员和架构师们巡回举办的重要活动。迄今,已经走进了深圳、...

cathyli
2017/05/23
41
0
QingCloud 实践课堂——西安站2017年5月13日 13:30-17:00

关于实践课堂 QingCloud 实践课堂系列开始于2014年末,至今已经成功举办两季,是我们在全国范围内,为所有对技术有着极致追求的程序员和架构师们巡回举办的重要活动。迄今,已经走进了深圳、...

cathyli
2017/04/28
17
3
【9大城市巡讲·上海】青云QingCloud 实践课堂——云计算

关于实践课堂 QingCloud 实践课堂系列开始于2014年末,至今已经成功举办两季,是我们在全国范围内,为所有对技术有着极致追求的程序员和架构师们巡回举办的重要活动。迄今,已经走进了深圳、...

cathyli
2017/05/23
20
0

没有更多内容

加载失败,请刷新页面

加载更多

解答二进制求和

思路:创建一个新的字符串,用于记录原两个字符串每位相加的结果。 1、因为是从左到右计算,所以要把字符串先进行反转,用reverse()方法。 2、字符串对齐,采用补零的方法。 3、计算的时候...

无名氏的程序员
18分钟前
4
0
JSONUtils

package com.demo.utils;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Tr......

任梁荣
19分钟前
5
1
在jest中配置typescript

测试是报错: Property 'assign' does not exist on type 'ObjectConstructor' NodeJS已经是最新版了,但道理不需要polyfill。 然后发现是typescript的lib没有"es2015.core",说明ts-jest没有......

linsk1998
20分钟前
3
0
Redis实现分布式文件夹锁

缘起 最近做一个项目,类似某度云盘,另外附加定制功能,本人负责云盘相关功能实现,这个项目跟云盘不同的是,以项目为分配权限的单位,同一个项目及子目录所有有权限的用户可以同时操作所有...

逸竹小站
29分钟前
3
0
Andorid SQLite数据库开发基础教程(2)

Andorid SQLite数据库开发基础教程(2) 数据库生成方式 数据库的生成有两种方式,一种是使用数据库管理工具生成的数据库,我们将此类数据库称为预设数据库,另一种是使用代码生成的数据库。...

大学霸
49分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部