• 关于

    重在

    的搜索结果

回答

哦。看看。重在参与。
holdb 2019-12-02 00:10:36 0 浏览量 回答数 0

回答

Re5分钟免1单,完全属于暗箱操作啊 重在参与啊楼主
fyy2009 2019-12-02 02:25:16 0 浏览量 回答数 0

回答

Re竞赛中的点滴成长 加油,重在学习嘛~ 能够在这个过程中明白基础的重要性就挺好的了
find_my_way` 2019-12-02 03:21:50 0 浏览量 回答数 0

回答

Re针对24号的活动阿里也学会了作秀,我只能呵呵…… 呵呵!虽然没抢到重在参与。 不能吃不到葡萄说葡萄酸。 抽了125+20代金也很爽 这种事情看人品
天天向上888 2019-12-02 00:45:49 0 浏览量 回答数 0

问题

朋友给点的手气不错

本来想续费,但是看介绍不太给力。所以就小升级下,重在参与嘛。 结果。。。你懂的。早知道续费了。。 话说他去年抽了一个s3。手气还是这么旺。。。。羡慕嫉妒恨啊...
yugongtian 2019-12-01 21:35:41 5031 浏览量 回答数 9

回答

这本书适合有一定计算机基础、熟悉C语言的程序员,对于初学者有些难。表、栈、队列、树、图等基本数据结构作者并未花大力气描述,而是重在后面的对这些数据结构的应用上,每一个结论都给出了详尽的数学证明。所以数据结构的内容一定要熟练。
xwaby 2019-12-02 01:22:38 0 浏览量 回答数 0

问题

小伙伴们你们中奖了木有哇?

俺已经续费了.结果一不小心居然得了个500代金卷. 不错噢. 用了三年的阿里云了.感觉今年的活动最给力了有木有? 满500必送这个.重在参与,人人有份. 不错.你值得新购续费哇.哈哈...
durian 2019-12-01 21:22:42 8588 浏览量 回答数 30

回答

HI, 你可以看一下costsize.c。 hash join 用了一些经验公式,所以不一定是最准确的。 这里重在 Bitmap Index Scan on pk_dt_sm_mt_201501 (cost=0.00..5,357.58 rows=101,278 width=0)可能你要降低一下seq scan和random scan的成本因子。
德哥 2019-12-02 01:33:08 0 浏览量 回答数 0

回答

Re湖北管局速度就是快,备案也没有那么麻烦 感谢客服人员的帮助。 网站备案重在行动。还有网站名称要求也没有那么严格。 ------------------------- Re湖北管局速度就是快,备案也没有那么麻烦 我邮寄了。但是根据要求是不要的。
koleang 2019-12-01 23:16:41 0 浏览量 回答数 0

回答

Re【拉选票】码农兄弟们帮我一把 夫子然急了!有人作弊,一下投13票给一群马甲号,本来夫子然投票数前几位,不过我觉得你不用太在意,一次活动而已,重在参与。官方肯定也没那么二,肯定会看回帖内容筛查的。我记得有一期投票活动,有人一口气给自己投了20多票,谁能跟他比啊,哈哈。
bailimei 2019-12-02 01:41:09 0 浏览量 回答数 0

问题

数据迁移好吗?有什么负面作用吗

我现在用的是阿里云的标准A型,马上要到期了,我用不了这么大空间的,想换更小的用 可阿里云又无法降级,所以打算新买一款自定义配置的,然后再用数据迁移到新的。 请问下各位...
zhuangdengyun 2019-12-01 21:02:54 6612 浏览量 回答数 4

回答

数据挖掘和机器学习的区别和联系,周志华有一篇很好的论述《机器学习和 数据挖掘》可以帮助大家理解。 数据挖掘受到很多学科领域的影响,其中数据库、机器学习、统计学无疑影响 最大。简言之,对数据挖掘而言,数据库提供数据管理技术,机器学习和统计学 提供数据分析技术。 由于统计学往往醉心于理论的优美而忽视实际的效用,因此,统计学界提供的 很多技术通常都要在机器学习界进一步研究,变成有效的机器学习算法之后才能 再进入数据挖掘领域。从这个意义上说,统计学主要是通过机器学习来对数据挖 掘发挥影响,而机器学习和数据库则是数据挖掘的两大支撑技术。 从数据分析的角度来看,绝大多数数据挖掘技术都来自机器学习领域,但机器 学习研究往往并不把海量数据作为处理对象,因此,数据挖掘要对算法进行改造, 使得算法性能和空间占用达到实用的地步。同时,数据挖掘还有自身独特的内容, 即关联分析。 而模式识别和机器学习的关系是什么呢,传统的模式识别的方法一般分为两种: 统计方法和句法方法。句法分析一般是不可学习的,而统计分析则是发展了不少机 器学习的方法。也就是说,机器学习同样是给模式识别提供了数据分析技术。 至于,数据挖掘和模式识别,那么从其概念上来区分吧,数据挖掘重在发现知识, 模式识别重在认识事物。 机器学习的目的是建模隐藏的数据结构,然后做识别、预测、分类等。因此,机器 学习是方法,模式识别是目的。 总结一下吧。只要跟决策有关系的都能叫 AI(人工智能),所以说 PR(模式识别)、 DM(数据挖掘)、IR(信息检索) 属于 AI 的具 体应用应该没有问题。 研究的东西则 不太一样, ML(机器学习) 强调自我完善的过程。 Anyway,这些学科都是相通的。
珍宝珠 2019-12-02 03:22:18 0 浏览量 回答数 0

问题

【晒安全,赢大奖】去年收到ddos攻击,云盾的出现才解决这个问题

去年论坛被恶意攻击,经常死机,100%cpu。困扰了半个月左右,每天重启无数次,试验过服务器内存设置,封端口,还从程序方面想办法。 如 if(preg_r...
wallee 2019-12-01 21:42:16 5600 浏览量 回答数 0

问题

新手上路问题标题要长长长长长长长

本人新手,机器学习什么的完全没上道,抱着重在参与的精神前来参加贵比赛。 基于这两天的学习和分析,我想提出以下几个问题,希望有大神可以来解释: 1。本次赛题主要给出...
lianguasth 2019-12-01 21:46:26 4817 浏览量 回答数 2

问题

阿里云万网正式合并阿里称将强力投资云计算

1月6日上午消息,阿里巴巴集团宣布,其旗下的阿里云与万网将合并为新的阿里云公司,合并后“万网”品牌将继续保留,成为阿里云旗下域名服务品牌,阿里巴巴集团将持续大力投入云计算...
yanpitiao 2019-12-01 21:03:54 7416 浏览量 回答数 1

回答

这个说起来太麻烦了, 我找了一个, 你看看行不, 不可以的话, 私聊吧. 全排列用的是 置换算法, 算法这东西重在理解。具体代码并不那么重要。 全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为 例说明如何编写全排列的递归算法。 1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列和以5开头的4的全排列。 由于一个数的全排列就是其本身,从而得到以上结果。 2、再看后三个数3, 4, 5。它们的全排列为3 4 5、3 5 4、 4 3 5、 4 5 3、 5 3 4、 5 4 3 六组数。 即以3开头的和4,5的全排列的组合、以4开头的和3,5的全排列的组合和以5开头的和3,4的全排列的组合. 从而可以推断,设一组数p = {r1, r2, r3, ... ,rn}, 全排列为perm(p),pn = p - {rn}。 因此perm(p) = r1perm(p1), r2perm(p2), r3perm(p3), ... , rnperm(pn)。当n = 1时perm(p} = r1。 为了更容易理解,将整组数中的所有的数分别与第一个数交换,这样就总是在处理后n-1个数的全排列。 算法如下: #include <stdio.h> int n = 0; void swap(int *a, int *b) { int m; m = *a; *a = *b; *b = m; } void perm(int list[], int k, int m) { int i; if(k > m) { for(i = 0; i <= m; i++) printf("%d ", list[i]); printf("\n"); n++; } else { for(i = k; i <= m; i++) { swap(&list[k], &list[i]); perm(list, k + 1, m); swap(&list[k], &list[i]); } } } int main() { int list[] = {1, 2, 3, 4, 5}; perm(list, 0, 4); printf("total:%d\n", n); return 0; } 链接: http://zhidao.baidu.com/question/71586341.html?si=2
寒凝雪 2019-12-02 01:17:55 0 浏览量 回答数 0

问题

如何有效地进行客户关系管理?

首先,要认识到客户管理的重要性: 1、客户是连接企业和市场的桥梁,品牌要和消费者产生互动,就必须要通过这一通路,路长了会增加品牌的互动成本,成本却终会由消费...
赛思salesnow 2019-12-01 21:37:11 1494 浏览量 回答数 0

问题

OSS折腾记

简单的概述一下,OSS的确是个好东西,用它做过图床、微网盘(已下线)。不需要考虑你的存储系统上限,即不需要考虑需要多大的硬盘,OSS无限空间自动伸缩...
cevin 2019-12-01 21:36:49 7085 浏览量 回答数 2

问题

亲测一款国产永久免费网管软件的领悟与这种免费模式的分析

 亲测一款国产永久免费网管软件的领悟与这种免费模式的分析   经常泡论坛贴吧群聊发现很多人在找免费开源的网管软件和IT运维管理系统,其实这个原来由IBM、HP等老厂商主导产品,但是费用奇贵,如今他...
傻傻的说 2019-12-01 21:10:05 2231 浏览量 回答数 0

回答

Re万网阿里云服务器ECS电话技术支持人员太不专业 看贴回贴好习惯,楼主自己做 ------------------------- Re万网阿里云服务器ECS电话技术支持人员太不专业 引用第2楼weili于2014-12-06 23:48发表的  : 这个问题我先记录下,周一上班了我反馈跟进一下 [url=http://bbs.aliyun.com/job.php?action=topost&tid=187226&pid=591064][/url] 原来管理员在民间啊,感谢你的回复,解不解决一回事,这个话听着舒服,不过我们还是不等了,因为不知你们产品后方会不会加需要的镜象,今天我给做成2008系统+2005企业版数据库了,你们唯一可选的2003标准版真心用不了! ------------------------- Re万网阿里云服务器ECS电话技术支持人员太不专业 重在落实和准确的时间进度! 自从我们发了这个贴子,已经有多个你们的用户主动联系我问我如何解决,他们遇到了同样的问题,刚才有一个客户和我讲他在别的区买的更高配置的装这个版本的系统也是同样的问题,为了证明你们这个系统镜象问题他有在线下载微软系统在线重新安装修复系统,修复后的系统可以安装,也有反馈给你们售后,换掉有问题的镜象增加无问题的镜象这对你们应是一件好事吧,有这么难,迟迟不能解决,我们那台我查了下是2号买的,十来天了还是反馈中....... ------------------------- Re万网阿里云服务器ECS电话技术支持人员太不专业 楼上的两位讲的真心没看懂,所以不回复了!是不是及时客户才有 发言权,取决于解决问题的时间 刚看了一下后台回复: 您好,您的问题我们会今天9点后反馈给产品核实。其次,目前新的系统等,短时间内可能无法增加,建议您可以尝试使用windows 2008 企业版 。 我就不评论什么了! 然后九点后的回复,我就更不想评论了: 您好,关于2003企业版镜像没有和2008企业版镜像同时提供的原因主要考虑的是微软在明年7月份停止支持,届时可能会产生较多的安全性。 您的这个问题我们已经反馈给产品,充分考虑这类需求,需要一个评估周期,还请您谅解。 ------------------------- Re万网阿里云服务器ECS电话技术支持人员太不专业 本着发贴要负责的态度,对使用阿里云遇到同样问题的客户,又因所需环境无法用2008系统代替换的客户,在这里公布一下热心用户自行解的方法,以供大家参考! 因为我司的提问从2号提出到现在,反馈结果无明显进度和实质解决,所以对此前询问我司此问题处理进度的客户表示遗憾和抱歉,我们的提议目前看短时间内不会被采纳! 客户可以偿试自行反馈!,我司无时间在跟进此产品支持问题! 据网易报道:对于微软对2003的升级支持问题,官方公布的时间是2015年7月14日停止对Windows Server 2003的支持,其实Windows Server 2003的企业用户大部分也是Windows XP用户,他们在微软与今年4月8日停止对XP的支持之前也收到过微软发出的最后期限警告,所以微软宣布将停止支持Windows Server 2003的消息并未让这些企业感到惊讶,但是考虑到即便微软停止了对XP的支持,该操作系统目前的使用情况仍然比较稳定,所以貌似他们没有更新操作系统的必要。 所以阿里云为微软和客户安全上的顾虑完全没有必要,在服务期内提供应提供的服务就可以了,未来的事客户自己决定比较好!微软以后还会停止对2008的升级支持,不能因为这个就提前停止,服务是有延续性的,而不是提前终止. 以下是使用阿里云热心用户在同样未能得到售后解决技术问题后,自行解决的办法: 他碰到的情况是相同的,但他有两台,一个可以装,一个不可以装,系统版本全是阿里提供的标准版,区别就是阿里原来的老镜象可以,新提供的镜象有问题装不了,基本排除和配置有关,因为他用为此事买了一个月2G内存的用此新镜象也装不了,初步结论是现在这个镜象问题,他在微软官方下了这个版本系统先自行在线修复了阿里云提供的系统,然后在安数据库,成功解决,大家可以偿试一他的方法,如果还有疑问请直接向阿里反馈,本人在此表示力不从心,无时间跟进此事,因此事结识的朋友欢迎以后交流其他问题,共同学习进步! 另外我司也和万网方面态度一至,建议用户提高系统版本,对不支持的软件方要求提供升级服务,本方法仅建议无法更换系统的用户测试,因未亲自测试,所以不保证什么,也不承担责任,偿式前请做好备份工作,特此提醒. 北京亿网技术---张(球球:574715671) ------------------------- Re回楼主北京亿网的帖子 引用第10楼sunfei于2014-12-10 13:37发表的 回 楼主(北京亿网) 的帖子 : 看了楼主的帖子,感觉楼主是个很认真做事的人,希望这个问题能早日解决,虽然我不用win系统(只用linux) [url=http://bbs.aliyun.com/job.php?action=topost&tid=187226&pid=592557][/url] 嗯,用什么系统主要看我们的客户需要,认真是技术人员的职业病,解决问题有很多方法,但在技术眼里查明问题才是最重要的,虽然阿里未给解决,但问题已经查明是阿里提供的镜象有问题,系统镜象简化到影响到正常功能,要用微软此版本系统修复才能用,我要求提供的企业版和服务版也可解决,但未能提供,这对我们来说已经不重要,只是苦了那些没技术人员的客户,我这还经常有客户来问怎么解决.
北京亿网 2019-12-02 01:11:35 0 浏览量 回答数 0

回答

在开始谈我对架构本质的理解之前,先谈谈对今天技术沙龙主题的个人见解,千万级规模的网站感觉数量级是非常大的,对这个数量级我们战略上 要重 视 它 , 战术上又 要 藐 视 它。先举个例子感受一下千万级到底是什么数量级?现在很流行的优步(Uber),从媒体公布的信息看,它每天接单量平均在百万左右, 假如每天有10个小时的服务时间,平均QPS只有30左右。对于一个后台服务器,单机的平均QPS可以到达800-1000,单独看写的业务量很简单 。为什么我们又不能说轻视它?第一,我们看它的数据存储,每天一百万的话,一年数据量的规模是多少?其次,刚才说的订单量,每一个订单要推送给附近的司机、司机要并发抢单,后面业务场景的访问量往往是前者的上百倍,轻松就超过上亿级别了。 今天我想从架构的本质谈起之后,希望大家理解在做一些建构设计的时候,它的出发点以及它解决的问题是什么。 架构,刚开始的解释是我从知乎上看到的。什么是架构?有人讲, 说架构并不是一 个很 悬 乎的 东西 , 实际 上就是一个架子 , 放一些 业务 和算法,跟我们的生活中的晾衣架很像。更抽象一点,说架构其 实 是 对 我 们 重复性业务 的抽象和我 们 未来 业务 拓展的前瞻,强调过去的经验和你对整个行业的预见。 我们要想做一个架构的话需要哪些能力?我觉得最重要的是架构师一个最重要的能力就是你要有 战 略分解能力。这个怎么来看呢: 第一,你必须要有抽象的能力,抽象的能力最基本就是去重,去重在整个架构中体现在方方面面,从定义一个函数,到定义一个类,到提供的一个服务,以及模板,背后都是要去重提高可复用率。 第二, 分类能力。做软件需要做对象的解耦,要定义对象的属性和方法,做分布式系统的时候要做服务的拆分和模块化,要定义服务的接口和规范。 第三, 算法(性能),它的价值体现在提升系统的性能,所有性能的提升,最终都会落到CPU,内存,IO和网络这4大块上。 这一页PPT举了一些例子来更深入的理解常见技术背后的架构理念。 第一个例子,在分布式系统我们会做 MySQL分 库 分表,我们要从不同的库和表中读取数据,这样的抽象最直观就是使用模板,因为绝大多数SQL语义是相同的,除了路由到哪个库哪个表,如果不使用Proxy中间件,模板就是性价比最高的方法。 第二看一下加速网络的CDN,它是做速度方面的性能提升,刚才我们也提到从CPU、内存、IO、网络四个方面来考虑,CDN本质上一个是做网络智能调度优化,另一个是多级缓存优化。 第三个看一下服务化,刚才已经提到了,各个大网站转型过程中一定会做服务化,其实它就是做抽象和做服务的拆分。第四个看一下消息队列,本质上还是做分类,只不过不是两个边际清晰的类,而是把两个边际不清晰的子系统通过队列解构并且异步化。新浪微博整体架构是什么样的 接下我们看一下微博整体架构,到一定量级的系统整个架构都会变成三层,客户端包括WEB、安卓和IOS,这里就不说了。接着还都会有一个接口层, 有三个主要作用: 第一个作用,要做 安全隔离,因为前端节点都是直接和用户交互,需要防范各种恶意攻击; 第二个还充当着一个 流量控制的作用,大家知道,在2014年春节的时候,微信红包,每分钟8亿多次的请求,其实真正到它后台的请求量,只有十万左右的数量级(这里的数据可能不准),剩余的流量在接口层就被挡住了; 第三,我们看对 PC 端和移 动 端的需求不一样的,所以我们可以进行拆分。接口层之后是后台,可以看到微博后台有三大块: 一个是 平台服 务, 第二, 搜索, 第三, 大数据。到了后台的各种服务其实都是处理的数据。 像平台的业务部门,做的就是 数据存储和读 取,对搜索来说做的是 数据的 检 索,对大数据来说是做的数据的 挖掘。微博其实和淘宝是很类似 微博其实和淘宝是很类似的。一般来说,第一代架构,基本上能支撑到用户到 百万 级别,到第二代架构基本能支撑到 千万 级别都没什么问题,当业务规模到 亿级别时,需要第三代的架构。 从 LAMP 的架构到面向服 务 的架构,有几个地方是非常难的,首先不可能在第一代基础上通过简单的修修补补满足用户量快速增长的,同时线上业务又不能停, 这是我们常说的 在 飞 机上 换 引擎的 问题。前两天我有一个朋友问我,说他在内部推行服务化的时候,把一个模块服务化做完了,其他部门就是不接。我建议在做服务化的时候,首先更多是偏向业务的梳理,同时要找准一个很好的切入点,既有架构和服务化上的提升,业务方也要有收益,比如提升性能或者降低维护成本同时升级过程要平滑,建议开始从原子化服务切入,比如基础的用户服务, 基础的短消息服务,基础的推送服务。 第二,就是可 以做无状 态 服 务,后面会详细讲,还有数据量大了后需要做数据Sharding,后面会将。 第三代 架构 要解决的 问题,就是用户量和业务趋于稳步增加(相对爆发期的指数级增长),更多考虑技术框架的稳定性, 提升系统整体的性能,降低成本,还有对整个系统监控的完善和升级。 大型网站的系统架构是如何演变的 我们通过通过数据看一下它的挑战,PV是在10亿级别,QPS在百万,数据量在千亿级别。我们可用性,就是SLA要求4个9,接口响应最多不能超过150毫秒,线上所有的故障必须得在5分钟内解决完。如果说5分钟没处理呢?那会影响你年终的绩效考核。2015年微博DAU已经过亿。我们系统有上百个微服务,每周会有两次的常规上线和不限次数的紧急上线。我们的挑战都一样,就是数据量,bigger and bigger,用户体验是faster and faster,业务是more and more。互联网业务更多是产品体验驱动, 技 术 在 产 品 体验上最有效的贡献 , 就是你的性能 越来越好 。 每次降低加载一个页面的时间,都可以间接的降低这个页面上用户的流失率。微博的技术挑战和正交分解法解析架构 下面看一下 第三代的 架构 图 以及 我 们 怎么用正交分解法 阐 述。 我们可以看到我们从两个维度,横轴和纵轴可以看到。 一个 维 度 是 水平的 分层 拆分,第二从垂直的维度会做拆分。水平的维度从接口层、到服务层到数据存储层。垂直怎么拆分,会用业务架构、技术架构、监控平台、服务治理等等来处理。我相信到第二代的时候很多架构已经有了业务架构和技术架构的拆分。我们看一下, 接口层有feed、用户关系、通讯接口;服务层,SOA里有基层服务、原子服务和组合服务,在微博我们只有原子服务和组合服务。原子服务不依赖于任何其他服务,组合服务由几个原子服务和自己的业务逻辑构建而成 ,资源层负责海量数据的存储(后面例子会详细讲)。技 术框架解决 独立于 业务 的海量高并发场景下的技术难题,由众多的技术组件共同构建而成 。在接口层,微博使用JERSY框架,帮助你做参数的解析,参数的验证,序列化和反序列化;资源层,主要是缓存、DB相关的各类组件,比如Cache组件和对象库组件。监 控平台和服 务 治理 , 完成系统服务的像素级监控,对分布式系统做提前诊断、预警以及治理。包含了SLA规则的制定、服务监控、服务调用链监控、流量监控、错误异常监控、线上灰度发布上线系统、线上扩容缩容调度系统等。 下面我们讲一下常见的设计原则。 第一个,首先是系统架构三个利器: 一个, 我 们 RPC 服 务组 件 (这里不讲了), 第二个,我们 消息中 间 件 。消息中间件起的作用:可以把两个模块之间的交互异步化,其次可以把不均匀请求流量输出为匀速的输出流量,所以说消息中间件 异步化 解耦 和流量削峰的利器。 第三个是配置管理,它是 代码级灰度发布以及 保障系统降级的利器。 第二个 , 无状态 , 接口 层 最重要的就是无状 态。我们在电商网站购物,在这个过程中很多情况下是有状态的,比如我浏览了哪些商品,为什么大家又常说接口层是无状态的,其实我们把状态从接口层剥离到了数据层。像用户在电商网站购物,选了几件商品,到了哪一步,接口无状态后,状态要么放在缓存中,要么放在数据库中, 其 实 它并不是没有状 态 , 只是在 这 个 过 程中我 们 要把一些有状 态 的 东 西抽离出来 到了数据层。 第三个, 数据 层 比服 务层 更需要 设计,这是一条非常重要的经验。对于服务层来说,可以拿PHP写,明天你可以拿JAVA来写,但是如果你的数据结构开始设计不合理,将来数据结构的改变会花费你数倍的代价,老的数据格式向新的数据格式迁移会让你痛不欲生,既有工作量上的,又有数据迁移跨越的时间周期,有一些甚至需要半年以上。 第四,物理结构与逻辑结构的映射,上一张图看到两个维度切成十二个区间,每个区间代表一个技术领域,这个可以看做我们的逻辑结构。另外,不论后台还是应用层的开发团队,一般都会分几个垂直的业务组加上一个基础技术架构组,这就是从物理组织架构到逻辑的技术架构的完美的映射,精细化团队分工,有利于提高沟通协作的效率 。 第五, www .sanhao.com 的访问过程,我们这个架构图里没有涉及到的,举个例子,比如当你在浏览器输入www.sanhao网址的时候,这个请求在接口层之前发生了什么?首先会查看你本机DNS以及DNS服务,查找域名对应的IP地址,然后发送HTTP请求过去。这个请求首先会到前端的VIP地址(公网服务IP地址),VIP之后还要经过负载均衡器(Nginx服务器),之后才到你的应用接口层。在接口层之前发生了这么多事,可能有用户报一个问题的时候,你通过在接口层查日志根本发现不了问题,原因就是问题可能发生在到达接口层之前了。 第六,我们说分布式系统,它最终的瓶颈会落在哪里呢?前端时间有一个网友跟我讨论的时候,说他们的系统遇到了一个瓶颈, 查遍了CPU,内存,网络,存储,都没有问题。我说你再查一遍,因为最终你不论用上千台服务器还是上万台服务器,最终系统出瓶颈的一定会落在某一台机(可能是叶子节点也可能是核心的节点),一定落在CPU、内存、存储和网络上,最后查出来问题出在一台服务器的网卡带宽上。微博多级双机房缓存架构 接下来我们看一下微博的Feed多级缓存。我们做业务的时候,经常很少做业务分析,技术大会上的分享又都偏向技术架构。其实大家更多的日常工作是需要花费更多时间在业务优化上。这张图是统计微博的信息流前几页的访问比例,像前三页占了97%,在做缓存设计的时候,我们最多只存最近的M条数据。 这里强调的就是做系统设计 要基于用 户 的 场 景 , 越细致越好 。举了一个例子,大家都会用电商,电商在双十一会做全国范围内的活动,他们做设计的时候也会考虑场景的,一个就是购物车,我曾经跟相关开发讨论过,购物车是在双十一之前用户的访问量非常大,就是不停地往里加商品。在真正到双十一那天他不会往购物车加东西了,但是他会频繁的浏览购物车。针对这个场景,活动之前重点设计优化购物车的写场景, 活动开始后优化购物车的读场景。 你看到的微博是由哪些部分聚合而成的呢?最右边的是Feed,就是微博所有关注的人,他们的微博所组成的。微博我们会按照时间顺序把所有关注人的顺序做一个排序。随着业务的发展,除了跟时间序相关的微博还有非时间序的微博,就是会有广告的要求,增加一些广告,还有粉丝头条,就是拿钱买的,热门微博,都会插在其中。分发控制,就是说和一些推荐相关的,我推荐一些相关的好友的微博,我推荐一些你可能没有读过的微博,我推荐一些其他类型的微博。 当然对非时序的微博和分发控制微博,实际会起多个并行的程序来读取,最后同步做统一的聚合。这里稍微分享一下, 从SNS社交领域来看,国内现在做的比较好的三个信息流: 微博 是 基于弱关系的媒体信息流 ; 朋友圈是基于 强 关系的信息流 ; 另外一个做的比 较 好的就是今日 头 条 , 它并不是基于关系来构建信息流 , 而是基于 兴趣和相关性的个性化推荐 信息流 。 信息流的聚合,体现在很多很多的产品之中,除了SNS,电商里也有信息流的聚合的影子。比如搜索一个商品后出来的列表页,它的信息流基本由几部分组成:第一,打广告的;第二个,做一些推荐,热门的商品,其次,才是关键字相关的搜索结果。 信息流 开始的时候 很 简单 , 但是到后期会 发现 , 你的 这 个流 如何做控制分发 , 非常复杂, 微博在最近一两年一直在做 这样 的工作。刚才我们是从业务上分析,那么技术上怎么解决高并发,高性能的问题?微博访问量很大的时候,底层存储是用MySQL数据库,当然也会有其他的。对于查询请求量大的时候,大家知道一定有缓存,可以复用可重用的计算结果。可以看到,发一条微博,我有很多粉丝,他们都会来看我发的内容,所以 微博是最适合使用 缓 存 的系统,微博的读写比例基本在几十比一。微博使用了 双 层缓 存,上面是L1,每个L1上都是一组(包含4-6台机器),左边的框相当于一个机房,右边又是一个机房。在这个系统中L1缓存所起的作用是什么? 首先,L1 缓 存增加整个系 统 的 QPS, 其次 以低成本灵活扩容的方式 增加 系统 的 带宽 。想象一个极端场景,只有一篇博文,但是它的访问量无限增长,其实我们不需要影响L2缓存,因为它的内容存储的量小,但它就是访问量大。这种场景下,你就需要使用L1来扩容提升QPS和带宽瓶颈。另外一个场景,就是L2级缓存发生作用,比如我有一千万个用户,去访问的是一百万个用户的微博 ,这个时候,他不只是说你的吞吐量和访问带宽,就是你要缓存的博文的内容也很多了,这个时候你要考虑缓存的容量, 第二 级缓 存更多的是从容量上来 规划,保证请求以较小的比例 穿透到 后端的 数据 库 中 ,根据你的用户模型你可以估出来,到底有百分之多少的请求不能穿透到DB, 评估这个容量之后,才能更好的评估DB需要多少库,需要承担多大的访问的压力。另外,我们看双机房的话,左边一个,右边一个。 两个机房是互 为 主 备 , 或者互 为热备 。如果两个用户在不同地域,他们访问两个不同机房的时候,假设用户从IDC1过来,因为就近原理,他会访问L1,没有的话才会跑到Master,当在IDC1没找到的时候才会跑到IDC2来找。同时有用户从IDC2访问,也会有请求从L1和Master返回或者到IDC1去查找。 IDC1 和 IDC2 ,两个机房都有全量的用户数据,同时在线提供服务,但是缓存查询又遵循最近访问原理。还有哪些多级缓存的例子呢?CDN是典型的多级缓存。CDN在国内各个地区做了很多节点,比如在杭州市部署一个节点时,在机房里肯定不止一台机器,那么对于一个地区来说,只有几台服务器到源站回源,其他节点都到这几台服务器回源即可,这么看CDN至少也有两级。Local Cache+ 分布式 缓 存,这也是常见的一种策略。有一种场景,分布式缓存并不适用, 比如 单 点 资 源 的爆发性峰值流量,这个时候使用Local Cache + 分布式缓存,Local Cache 在 应用 服 务 器 上用很小的 内存资源 挡住少量的 极端峰值流量,长尾的流量仍然访问分布式缓存,这样的Hybrid缓存架构通过复用众多的应用服务器节点,降低了系统的整体成本。 我们来看一下 Feed 的存 储 架构,微博的博文主要存在MySQL中。首先来看内容表,这个比较简单,每条内容一个索引,每天建一张表,其次看索引表,一共建了两级索引。首先想象一下用户场景,大部分用户刷微博的时候,看的是他关注所有人的微博,然后按时间来排序。仔细分析发现在这个场景下, 跟一个用户的自己的相关性很小了。所以在一级索引的时候会先根据关注的用户,取他们的前条微博ID,然后聚合排序。我们在做哈希(分库分表)的时候,同时考虑了按照UID哈希和按照时间维度。很业务和时间相关性很高的,今天的热点新闻,明天就没热度了,数据的冷热非常明显,这种场景就需要按照时间维度做分表,首先冷热数据做了分离(可以对冷热数据采用不同的存储方案来降低成本),其次, 很容止控制我数据库表的爆炸。像微博如果只按照用户维度区分,那么这个用户所有数据都在一张表里,这张表就是无限增长的,时间长了查询会越来越慢。二级索引,是我们里面一个比较特殊的场景,就是我要快速找到这个人所要发布的某一时段的微博时,通过二级索引快速定位。 分布式服务追踪系统 分布式追踪服务系统,当系统到千万级以后的时候,越来越庞杂,所解决的问题更偏向稳定性,性能和监控。刚才说用户只要有一个请求过来,你可以依赖你的服务RPC1、RPC2,你会发现RPC2又依赖RPC3、RPC4。分布式服务的时候一个痛点,就是说一个请求从用户过来之后,在后台不同的机器之间不停的调用并返回。 当你发现一个问题的时候,这些日志落在不同的机器上,你也不知道问题到底出在哪儿,各个服务之间互相隔离,互相之间没有建立关联。所以导致排查问题基本没有任何手段,就是出了问题没法儿解决。 我们要解决的问题,我们刚才说日志互相隔离,我们就要把它建立联系。建立联系我们就有一个请求ID,然后结合RPC框架, 服务治理功能。假设请求从客户端过来,其中包含一个ID 101,到服务A时仍然带有ID 101,然后调用RPC1的时候也会标识这是101 ,所以需要 一个唯一的 请求 ID 标识 递归迭代的传递到每一个 相关 节点。第二个,你做的时候,你不能说每个地方都加,对业务系统来说需要一个框架来完成这个工作, 这 个框架要 对业务 系 统 是最低侵入原 则 , 用 JAVA 的 话 就可以用 AOP,要做到零侵入的原则,就是对所有相关的中间件打点,从接口层组件(HTTP Client、HTTP Server)至到服务层组件(RPC Client、RPC Server),还有数据访问中间件的,这样业务系统只需要少量的配置信息就可以实现全链路监控 。为什么要用日志?服务化以后,每个服务可以用不同的开发语言, 考虑多种开发语言的兼容性 , 内部定 义标 准化的日志 是唯一且有效的办法。最后,如何构建基于GPS导航的路况监控?我们刚才讲分布式服务追踪。分布式服务追踪能解决的问题, 如果 单一用 户发现问题 后 , 可以通 过请 求 ID 快速找到 发 生 问题 的 节 点在什么,但是并没有解决如何发现问题。我们看现实中比较容易理解的道路监控,每辆车有GPS定位,我想看北京哪儿拥堵的时候,怎么做? 第一个 , 你肯定要知道每个 车 在什么位置,它走到哪儿了。其实可以说每个车上只要有一个标识,加上每一次流动的信息,就可以看到每个车流的位置和方向。 其次如何做 监 控和 报 警,我们怎么能了解道路的流量状况和负载,并及时报警。我们要定义这条街道多宽多高,单位时间可以通行多少辆车,这就是道路的容量。有了道路容量,再有道路的实时流量,我们就可以基于实习路况做预警? 对应于 分布式系 统 的话如何构建? 第一 , 你要 定义 每个服 务节 点它的 SLA A 是多少 ?SLA可以从系统的CPU占用率、内存占用率、磁盘占用率、QPS请求数等来定义,相当于定义系统的容量。 第二个 , 统计 线 上 动态 的流量,你要知道服务的平均QPS、最低QPS和最大QPS,有了流量和容量,就可以对系统做全面的监控和报警。 刚才讲的是理论,实际情况肯定比这个复杂。微博在春节的时候做许多活动,必须保障系统稳定,理论上你只要定义容量和流量就可以。但实际远远不行,为什么?有技术的因素,有人为的因素,因为不同的开发定义的流量和容量指标有主观性,很难全局量化标准,所以真正流量来了以后,你预先评估的系统瓶颈往往不正确。实际中我们在春节前主要采取了三个措施:第一,最简单的就是有降 级 的 预 案,流量超过系统容量后,先把哪些功能砍掉,需要有明确的优先级 。第二个, 线上全链路压测,就是把现在的流量放大到我们平常流量的五倍甚至十倍(比如下线一半的服务器,缩容而不是扩容),看看系统瓶颈最先发生在哪里。我们之前有一些例子,推测系统数据库会先出现瓶颈,但是实测发现是前端的程序先遇到瓶颈。第三,搭建在线 Docker 集群 , 所有业务共享备用的 Docker集群资源,这样可以极大的避免每个业务都预留资源,但是实际上流量没有增长造成的浪费。 总结 接下来说的是如何不停的学习和提升,这里以Java语言为例,首先, 一定要 理解 JAVA;第二步,JAVA完了以后,一定要 理 解 JVM;其次,还要 理解 操作系统;再次还是要了解一下 Design Pattern,这将告诉你怎么把过去的经验抽象沉淀供将来借鉴;还要学习 TCP/IP、 分布式系 统、数据结构和算法。
hiekay 2019-12-02 01:39:25 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT