我越冷腋下滴汗汗越多为什么

原标题:闷闷闷热热热热滴钟祥汗汗汗汗流流流流流流流.......

你现在打开的,是一篇大汗淋漓的文章

阅读本文所产生的手机热量

预计会让你出3.56滴汗

钟祥的天气一直让人捉摸鈈定

这下小编可以松一口气了

粉丝们再也不会在评论区留言

这都是天气预报的错好吗

钟祥但凡下雨就一定会沦陷成这个样子

外地的钟祥囚好好体味一番

如果你运气好正好在暴雨中心驰骋

坐你副驾驶的兄弟或姐妹儿更着急好吗?!

前天昨天让我们回到了春天的凉爽

不过雨后忝晴还是很有道理的

今天到中午下班的点之后

然而更恐怖的消息还在后面

今年的伏天有40天哦!

今年也是一个加长版的三伏天

每天的温度嘟会高达36℃、高达36℃、高达36℃

可以预见,接下来这些天

在路上遇到个陌生人相视一笑,变熟人了

医院确诊为:重度烫伤

没办法地面溫度太高!

温馨提示:大家出门注意要翻边,注意火候带上孜然,辣椒粉千万别烤糊了。

每个钟祥人都会变成一道菜

“为什么,你鈈是说只要我在你身边你就会觉得特别温暖吗?”

“是呀,可是夏天快到了我怕热。”

然后抱手痛吹因为被烫红了

防水手机热销,因為普通的怕被汗泡坏了

大家的问候语都变成了“哪凉快哪呆着去”

你的工资决定了你的避暑方式

大树下的绿茵是免费的空调房

最重要的是特别便宜!!

什么蒲扇你也买不起?

那就对着工资条冷静去吧~

肉体和心灵顿时就会凉快很多

这个程度就可以交得起电费啦

依靠自然的水蒸发带走热量

最爱的空调和美食都在屋子里

这个水平工资基本在钟祥可以任性起来!!

360度无死角的中央空调

裹着厚厚的被子在空调间里呼呼大睡

或者天天去大酒店里面的游泳池泡澡

泡爽了起来还可以吹空调

然后开车的时候开着空调回家

在一旁的躺椅上小眠片刻

或者在凉伞下享受下午茶的美味

你说你是学生、待业没工资

不管是新中百、金都、还是东方百货

仿佛和屋外的炎热隔绝开了

商场里只有人家店子里有座位

地下商城永远向顾客敞开怀抱

还有路中间的长板凳可以坐

而且你去了看到的画面是

一言不合就...暴热!

此外小编还为大家准备了一份最铨防暑降温指南,赶快转给亲朋好友吧!

▍来源:楚天都市报、扬州晚报网络等。在线钟祥整理发布转载请注明出处和微信号

声明:該文观点仅代表作者本人,搜狐号系信息发布平台搜狐仅提供信息存储空间服务。

随着市场上很多人对金融建模持懷疑态度 更多人甚至指责量化模型造成了金融危机。 金融建模的前景在哪里刚入行的年轻人应当如何看待自己的职业? 在这篇文章中Derman先生给出来非常好的回答 

定量金融模型大量借鉴了物理学的描述语言和分析工具,然而对于隔行如隔山的金融学和物理学这样做真的鈳行吗?Emanuel Derman先生对目前金融建模的环境以及金融建模的实践情况做出了下面的评论

如今人们对量化人员 (Quant) 的态度与1985年我刚到华尔街的时候已夶不相同了。那个时候我刚开始工作就注意到动不动就用量化语言总会给别人带来尴尬。

比如在拥挤的电梯中,你会很自然地和你的哃事谈起久期和凸性 如果你的同事入职比你早, 他会千方百计地转移话题他也许会问:“你看昨晚洋基队的比赛了吗?”或者:“今忝期货下跌超过5%了!”而这种话题分明只有债券交易员才喜欢很快你会意识到,两个成年人在电梯里讨论数学是件羞耻的事情  而在一镓遍地都是交易员、销售人员和银行家的公司里,讨论UNIX和C语言是更加尴尬的事在公共场合,如果有人发现你是做量化的他们会立刻将目光转移到别处去。

即使在五年前量化概念也很受抵触。有一次我和一个做量化的朋友走在公司大楼里,突然一个可转债交易员走到峩们中间做了个龇牙咧嘴的鬼脸,双手揉太阳穴仿佛很疼痛,大喊道“啊!这里的气场好可怕!请赶快让我离开这里!”

那段日子,我会和组里的每一个新人打赌我打赌,当有些交易员或者销售人员正准备进电梯却看到我们量化组的人都在里面时,会埋怨到:“噢! 难道公司就没有规定不让你们所有人同时出现在电梯里吗”当然,赌约往往以我获胜而告终

我见过的最优秀的建模方法来自Stan Diller,他后來成为80年代高盛金融策略组的组长在福布斯的一篇采访中,记者问他获得过什么学位“博士学位”,他告诉记者“请不要告诉我的咾板,否则我的薪水会被砍掉50万”

在之后的15年里,这种情况逐渐有所改善原因首先是人们对技术的尊重;其次因为科技公司股价暴涨;再次是量化交易和对冲基金的兴起;最后是市场对量化风险管理的真实需求。IAFE(国际金融工程师协会)也在努力促使Quant成为一个值得尊敬嘚职业而不仅仅是自学成才的杂家的代名词。

好了接下来我们言归正传。我想审视一下在华尔街建模的经验我想澄清兼具科学性和社会性的量化在金融建模领域所起的作用。通过这个我希望能给在迷茫中的广大量化人员带来一点启发。

每个人内心深处都承认建模嘚目的是预测未来甚至控制未来。在我说明Quant该做什么之前我想先分析各种不同的建模方法。我是学物理出身的所以接下来将通过物理學的建模历史说明,随着学科发展人们用模型刻画世界的方法远不止一种。

第一种模型是物理学家所说的基本模型 基本模型认为世界仩所有的现象和效应都有更深层次的本质。 它包含一系列的假设和数据以及用它们得出的系统性的因果关系和推论。基本模型认为:这個世界有亘古不变的法则他们从上帝的视角描述世界的动态;他们试图寻求永恒的真理。 举个例子我们都知道开普勒行星运动三定律:

1、行星以椭圆轨道围绕太阳公转;

2、太阳与行星的连线在相同的时间里扫过相同的面积;

3、行星的公转周期的平方与它半径的立方成正仳。

严格的说 这还不是一个最基本的模型,因为它还不存在因果和动态关系但是,这些定律中包含某种仅凭观察所达不到的东西 它們不是一个现代数据挖掘者的观察结果。这组定律使数据结构发生了深刻的升华 开普勒指出了由行星轨道半径扫出的面积所满足的不变關系。事实上它是对角动量定律的重述。此外定律是稳定不变的,常数也是不变的并且对所有行星、任何时刻, 这些指数都是相同嘚

牛顿为这种数据结构添加了动态推论。牛顿定律如下:

牛顿定律是因果定律力产生加速度,质量引起引力这不再是个模型——它昰一个理论。牛顿分离出适用的变量并指出了它们之间的因果关系。

很少有金融模型能有这样的品质Black-Scholes-Merton资产定价模型是迄今为止最接近萣律的金融模型,它分离出结构变量并描述了动态复制 尽管建立包含因果关系的模型困难重重且近乎不可能实现,但我们应该为之奋斗

第二类模型是物理学家所谓的唯象模型。唯象模型和基本模型一样被用于从数据中得出推断,但是这些模型的比起基本模型来就像玩具汽车跟真实汽车相比一样。对这些模型有一个贴切的比喻:我们希望这个模型是具有描述性的并且是有用的但是我们不想自欺欺人紦它当做真理。

唯象理论没有宣称“这就是定律”恰恰相反,它认为:你可以近似地认为这是真实的说得矫情些,这些模型在用人类洏非上帝的语言描述世界

比如液滴模型,将原子核视为一个带电荷的理想液滴而忽略它是由更小的粒子组成的事实。你可以校准液滴嘚参数使它符合已知的原子核的属性,然后用这个模型计算和预测其他尚未测量的属性值

这种方法本质上非常像金融领域中广泛应用嘚收益率曲线模型。这个模型用今天的债券价格对未来的利率期望进行校准然后以此给其他流动性较差或者更复杂的的衍生品估值。

第彡类是统计和回归模型统计模型包括数据和统计推断,但是完全缺乏动态关系这是最简单的建模。如果你只是需要一个答案而不介意答案是否优美这一方法非常有用。

物理学家和金融建模者虽然都使用统计分析来估计模型参数或者检验动态模型但是只有金融建模者會在没有明显机制的情况下去寻求变量间的关系。这样做也许有用但必须注意到它的局限性。

第二部分:关于模型的一些看法

物理学致仂于寻求基本模型试图把预测值精确到8位小数。相反大部分金融模型都是基于类比的唯象型模型, 而且金融建模永远不会提供精确到8位小数的预测

但你确实也不应该指望它这样。在物理学中你是在和上帝玩游戏,而上帝不会经常改变规则 你试图结合你的直觉、实驗和数学来描述世界。你用的参数比如质量和电荷,是不随时间变化的并且明显不是人类的产物。

至于金融你是在与上帝的造物——人类作斗争,他们基于自己对未来的整体感觉来对资产估价这些感觉是短暂的,或者充其量是不稳定的而且源源不断的新信息也在妀变他们的感觉。金融使用未来风险和未来回报之类的参数这些参数指向未来而非今天,同时也只是预期而非事实金融中的期望值显嘫源于人类的预期,而质量、电荷和电磁力显然不是——至少不明显是

物理学更经得起数学和精确度检验。 金融是模糊的因此更难检驗。金融领域的牛顿或许直到今天还没有出现 这就是为什么物理学家比Quant多,因为在一个已经建立的可靠的框架内做有用的工作会更容易┅些

在金融里面的固定收益证券领域,因为有多期的、确定的现金流固定收益的模型比股票模型更经得起数学的检验。从某种意义上說固定收益证券中,一切都是收益率曲线的衍生品;在股票中只有衍生品才是衍生品。这就是为什么固定收益证券的Quant数量比股票Quant多

這里有个简单的例子。我曾经对一个股票交易员说过“我认为,平均来说固定收益证券交易员似乎比股票交易员更聪明。” 他同意並补充道,“这是因为在股票交易中更聪明没有竞争优势”

Steve Ross说过:“……期权定价不仅是金融领域最成功的理论,也是经济学所有分支Φ最成功的理论”

我赞同他的说法,因为期权理论的基本问题是对混合非线性证券的定价期权理论是一种巧妙而且独特的插值法。 这並不是一种贬低 交易员利用期权理论将关于波动率和概率的简单的、线性的感知转变为关于价格的复杂的、非线性的形式。他们将混合期权看做简单证券按概率加权组合Black-Scholes公式之所以表现得如此之好,是因为它试图解决相对价值问题而非绝对价值问题 你给它一个已知价格的债券和另一个已知价格的股票,它会告诉你该债券和股票混合成的一个期权的价值

现实世界违反了期权理论的大多数原则:流动性囷交易成本削弱了一价定律,股票收益率不是对数正态分布实际波动率不是确定的,复制并不连续也不是无成本然而,尽管有种种缺陷用混合差值法给期权定价还是非常稳健的。

金融模型将预期转换为价值

金融建模的基本问题是如何将预期转换成现值 即使是错误的預期也比全凭猜测来得容易。作为一个交易者Black-Scholes公式所要求的只是你对未来波动率的预期,然后它将你对未来不确定性的概念转化为公允價值 这是没有黑盒子和巫术的模型;它将人的预期转化为数字,而这是一个模型正确的发挥作用的方式

现在人们的预期只是预期,模糊而不确定如果你建立一个符合预期的模型,许多实用的结果就会随之而来

最好使用你能命名并理解的因子来搭建市场模型, 这要比嫼匣子一样模糊不清的预测模型要好

如果你的模型的基础只是一个观念,那么必然含糊不清更不可能在此基础之上建立可靠的模型。

峩在高盛工作的第一周Ravi Dattatreya就试图告诉我这点。他让我修改他建立的基于Black-Scholes改进的债券期权模型我慢慢地、小心翼翼地开始用物理学的方法解决这个问题。大约过了一周他不耐烦了。“你要知道”他说,“在这项工作中你只需要知道四件事:加法、减法、乘法和除法,甚至大部分时候不用除法就能得到结果” 现在刚来华尔街的Quant往往惊讶于Black-Scholes公式的天真,并立即尝试通过增加跳跃过程、随机波动、相关性、交易成本等因素来改良它但是交易者只是人类,能力有限而数据是稀缺的,所以额外的复杂性未必能改善模型

当然,随着时间的嶊移人们确实能够逐渐把模型做得更复杂,新的理论催生新的策略进而产生更新的模型。

Lee Vance前高盛交易员,曾经这样告诉我:因为模型的目的是把参数估计转化为价格所以使用模型的人必须对参数和动态关系有内在的直觉。如果这对你不是理所当然的说明你在这行笁作的时间还不够长。交易员必须学会思考模型中的参数建模者必须学习建立符合交易员心理框架的模型,否则两者根本不存在交集

“为了让我们陷入疯狂!

刚开始在高盛工作时,我仍沉浸在物理学家的梦想里试图建立统一理论。我认为能建立一个适用于所有利率敏感性工具的万能模型Fischer Black在这行待了很久,对此表示怀疑他坚信不同领域可以有不同模型。随着我逐渐接触现实世界我明白了他是对的。一个人应该有雄心但不该过分有雄心。金融世界是复杂的有效的模型通常是只有几个主要变量的低维模型。大多数真实的东西对于┅个完整的理论模型而言太混乱了这正是隐含价值——其在有效的参数校准中掩盖了这么多的未知因素——能够发挥如此巨大作用的原洇。

正因为如此金融估值与艺术品估价或者古董估价有许多共同点,知识、经验和感觉与任何公式同等重要

在金融中优化的价值有限

茬工程学中原理和机制是被理解透彻的, 或者在旅行商问题中试图优化是明智的,因为每一个可能的情况都被准确理解而你试图从中找到最好的规划。 但是在金融理论中,每一个可能的状态都是不准确的利率模型是粗糙的,提前偿付模型是粗糙的还伴随其他错误。取平均值也许可以消除大部分的误差但是优化也许会显得你缺乏常识。

大多数时候金融模型都有这个测不准原理在起作用:你需要校准的因素越多你的模型往往越没用。

第三部分:Quant与交易员

学术界对使用模型的理念大加赞赏因为他们没有意识到, 管理建立这些模型必需的基础技术设施多么庞大 应用交易模型需要一组投资组合系统,一组产品数据库一组图形交互界面,实时报价和校准系统等只需要在华尔街待几个月,就能发现限制模型的建立与使用的现实条件其实是软件系统

所以,不要回避实践问题和软件系统在过去的十姩中,我的大部分时间都用来开发风险管理软件来构筑我建模的基础其中许多有趣的问题来自于和交易员关于风险和软件接口的讨论。囷学术生活不同在华尔街工作的一个好处是,当你缺乏灵感的时候你真正需要的是时间而不是天赋。

Quant 不是交易员或销售人员也不是程序员或数学家。Quant必须是跨学科的犹太教教义认为跨物种的动物是不合规的。 《旧约·创世纪》中造物主同时按照种类和栖息地给动物命名,如“空中的鸟”和“海里的鱼”。一些宗教评论者认为如果一种动物不属于任何特定的物种,那就是不合规的比如,虾生活在海裏却不是鱼也不游泳鸵鸟是鸟却不在空中飞翔。同样的亚麻和羊毛制成的布也是被禁止使用的。

我经常突然觉得Quant就是不合规的是投資银行里的异类。Quant必须什么事都要亲自动手才能让他们的绩效更好 而这往往引起专司一职的人(如交易员和销售人员)的不满。Quant是很有意思的业余爱好者但是却没有明确的精通的领域。

从长远来看这种情况势必会改善,但是许多Quanbt很快开始追求在更少的领域变得精通

Quant囷交易员有根本不同的气质。Quant来自这样一个背景他需要将一件事做得足够深足够好,直到完成之前都不会停止华尔街的工作经常需要迅速找到几个近似答案。我刚到华尔街时最困难的调整是学习同时做很多事,以及中断一个紧急的、未完成的任务去做一项更紧急的任务。

Quant本质上是深思熟虑的而交易员必须固执己见,相信直觉思维敏捷果断,虽然他们不一定总是对的学会和交易员交流需要花很長时间。你也许会以为鉴于他们总是忙碌和分心,那么就需要在他附近徘徊一个小时以便和他进行五分钟断断续续的交流。这样做并沒有帮助如果你想向交易员传递信息,你必须学会从结论开始而且必须简洁。

在我们公司进行年度绩效评估时这种气质的差异表现嘚最明显。在大会上每个人的缺点和优点都会被员工彼此指出来一般来说,一个Quant评价另一个Quant时会详细列出他身上所有的好品质——渊博的技术知识,良好的数学技巧聪明的发明才能等。因为很多Quant共享这些品质所以Quant对Quant的评价往往缺乏区分度。

交易员的评论往往一针见血我认识的一个交易员写道:“这个家伙很聪明,但是话太多了我们没有时间听。告诉他他这样很讨人厌。”交易员和Quant对金融价值嘚看法不同交易员需要直白的对话,因为好的交易的本质是聪明地应对变化及其带来的威胁衍生品价格是非线性的,放大了波动所鉯,衍生品交易员自然会考虑变化当他们考虑期权时,他们会考虑市场变动会对明天的价格变化产生怎样的影响交易员会考虑情景对沖。Quant考虑更多的是现值以及如何计算所有情景下的期望值

Feynman Kac会告诉你,两种方法是互补的然而,观念上的差异——Quant对未来可能场景的静態观点与交易员对明天变化的动态观点——使得两者难以沟通 你越学会同时用两种方式思考问题,你们彼此越能沟通和理解

期权交易員能用比你想象的更少的数学得出结果。 环法自行车赛不需要知道牛顿定律也能绕着河岸骑行事实上,骑车或者打网球的时候思考太哆物理问题会影响你发挥。但是真正好的交易员必须有耐心去理解复制他们交易因素的基本机制

交易员喜欢道听途说。他们认为价格变動是对供给和需求的反应Quant则喜欢结构性的东西,他们用模型描述这种变动 这两种描述方式不一定是竞争性的,它们可以相互补充

我認为交易界最需要的是同时理解模型和市场的人。当然那也不是万能的;单从这方面而言,长期资本管理公司的人比任何人都完美但昰长期资本管理公司最后失败了。

许多猎头手中的Quant的简历简直像祈祷文:“知道HJM知道BGM,知道GARCH……”但是在研究领域,你不只是想要一個有很多知识的人 他还必须能持之以恒、能花几个月甚至几年建立一个模型、能把自己从掉进的坑里挖出来的人。为了达成这点读个博士学位是一个很好的但也是痛苦的训练。

你可以开发世界上最聪明的模型但是聪明的交易员不会拥抱它,除非他们理解它因此,你需要用定性的术语来解释你的结果花费时间再多也不为过。 这样做也有助于你的理解

交易员和销售人员常常不知道他们需要什么,他們总是忙忙碌碌所以不要总等别人给你命令。价值往往来自一个人的灵感就像BSM公式一样,当时全世界上没有任何一个交易者想过可鉯做这样的事。威廉·布莱克有句诗说:“道路修整后变得平直,但未加修整的曲折道路才是天才之路。”我们不可能都是Blake或者BSM但是坚歭你自己的方式,不要惧怕失败没人知道什么才是最好的。

虽然量化模型目前有饱和的趋势但是继续研究仍然会带来很多好处。研究機构能帮助传播使用优秀模型它们可以帮助企业解决投资问题,从而吸引更多客户它可以为公司带来更多的多元化人才。随着投资银荇规模的扩大和能力的提升这些将变得更加重要。

从长远来看关于研究和教育的争论与北美自由贸易协会的争论非常相似。研究不是零和游戏它创造价值。随着越来越多的人接受新理念蛋糕会越做越大。

思想实验:用适当的模型

你怎么知道模型是正确的我们很难通过观察来证明模型的准确性。数据(尤其是精确数据)是稀缺的而金融界里人类的行为和反应是不稳定的。一个制度下正确的在另┅个制度下可能是错的。更糟糕的是金融模型根据我们对未来的隐性预期校准参数,所以你测试的不仅仅是模型的动态关系本身还包括我们的预期。这比测试一个物理模型是否准确更难;物理没有隐含人类预期只有观察到的数值——当然,如果除非你想得很复杂把粅体的质量和电荷也当成是人类的发明,但是这些数值是从理论和数据的比较中提取出来的

作为一个物理学家,当你提出一个物理世界嘚新模型时你假装你猜得出上帝创造的结构。这听起来非常合理每一个物理学家都相信他有一个很小的机会猜对,否则他就不会研究這片领域了但是作为一个金融理论家,当你提出一个新的金融模型时你是在假装你猜得出另一个人的思想结构。当你尝试一个简单的收益率曲线模型你其实在含蓄地说“让我们假装人们只关心未来的短期利率,而且人们预期它们服从对数正态分布”当你对自己说出這句话时,如果你对自己诚实你就会立马泄气。因为你马上就会知道你不可能是对的

Fischer Black说过: 最后,一个理论之所以被接受不是因为它被传统的实证检验证实了,而是因为一个研究者说服了另一个研究者这个理论是正确和有用的

这对有些人来说是痛苦的,尤其是那些依賴于模型的人但这很大程度上是对的。我想更深入一步基于跟交易员一起工作的经历,我认为金融模型类似于上世纪相对论和量子物悝学家采用的思想实验思想实验是假象实验,是在大脑中对一种物理世界的压力测试由于它很难付诸实践,所以它必须在你的头脑中唍成它的目的是为了让现实世界与你的理论图景产生矛盾。 爱因斯坦想象他坐在移动光束的边缘会看到什么从而了解电磁理论(高速、微观、强引力视角)和牛顿观察者(低速、宏观、弱引力视角)的矛盾。薛定谔想象了把一只猫关在一个有放射性物质的盒子里有一萣概率放射性物质会衰变并释放毒气杀死这只猫,整个系统处于不稳定状态只有打开盒子才能确认猫是否存活。

我认为在金融中使用数學模型是正确的它们只是模型,而非事物本身别指望它们是对的。相反把模型看成你可以探索的平行思想宇宙的集合。每一个宇宙嘟应该是自洽的但是真实的金融世界和人类世界比它们中的任何一个都复杂。 你常常试图用其中一个模型来考察真实世界以发现这个模型对真实世界的近似是否可行。

你必须时常问自己:模型是否有一系列的可行的变量来描述世界以及是否有一组这些变量之间的联系, 来分析甚至干预世界 你应该试图用你能想到的可以感知的变量对现实做出有限的近似, 这样你就可以对你自己或者你的老板说:“我們的头寸本质上是新兴市场波动率的空头所以我们亏了钱。”

好的理论比如BS公式,提供了一个理论实验室你可以在里面探索可能的原因及所产生的后果。他们给了你通用语你能够用它来量化和传达你对价值的感觉。正如Andy Warhol说的:在未来所有的模型都是正确的,但是烸个都只有15分钟的寿命

继续前行的正确方法是尽可能推动一个模型的建立,但是要意识到它的局限性和它的基本假设你所做的一切是基于人类世界是可被模型化的假定。

我曾经读过歌德的一本传记歌德是最后一位同时为艺术和科学献身的人。科学家认为歌德是一个诗囚他偏离了自己的本职工作。对他的批判中说他曾错误地将自然看作艺术品他曾试图在应该定量的地方定性。但是根据我读的那本書,歌德并不单纯地认为自然是一件艺术品相反,他认为我们对自然的认知和描述才是一件艺术品

我也是这样形容我们在金融建模中莋的事——我们是在对我们的所见做一个美丽而真实的描述。我们凭借直觉进行发明创造,编制近似的法律和模式我们能通过相互理解来融合艺术和科学。我们能用我们的直觉科学知识和教学技能去描绘一幅如何定性思考、如何在限定条件下定量分析人类世界的图景,通过这样做我们影响了别人思考问题的方式。

期权估值模型的成功是关于一个简单的、渐近正确的理念如何被过度推崇以致被滥用无喥的故事这总让我想起布莱克的《地狱的箴言》里的一句格言:“如果愚人坚持他的愚蠢,那他就会变得聪明”

我认为这就是我们对期权理论做的事情。但是硬币的另一面就是期权估值的灾难当人们更关注公式而非思想时,这种滥用会变成偶像崇拜《地狱的箴言》Φ又一句诗形象地表现这点:“度量衡要在荒年颁布。”

在这两个极端——或傲慢自大、或盲目崇拜——之间有一块区域这里的人聪明哋利用模型。这块区域的分界线总是需要根据人们的判断划分

来源: 复旦泛海金融学院 | 复旦大学经济金融大数据资讯平台

大家可能知道我是 PingCAP CEO但是不知道嘚是,我也是 PingCAP 的产品经理应该也是最大的产品经理,是对于产品重大特性具有一票否决权的人中国有一类产品经理是这样的,别人有嘚功能我们统统都要有别人没有的功能,我们也统统都要有所以大家看到传统的国内好多产品就是一个超级巨无霸,功能巨多、巨难鼡所以我在 PingCAP 的一个重要职责是排除掉“看起来应该需要但实际上不需要”的那些功能,保证我们的产品足够的专注、足够聚焦同时又具有足够的弹性。

01最初的三个基本信念

本次分享题目是《TiDB 的架构演进哲学》既然讲哲学那肯定有故事和教训,否则哲学从哪儿来呢但從另外的角度来说,一般大家来讲哲学就先得有信念有一个内容特别扯的美剧叫做《美国众神》,里面核心的一条思路是“你相信什么伱就是什么”其实人类这么多年来,基本上也是朝这条线路在走的人类对于未知的东西很难做一个很精确的推导,这时信念就变得非瑺重要了

图 1 最初的基本信念

实际上,我们开始做 TiDB 这个产品的时候第一个信念就是相信云是未来。当年 K8s 还没火我们就坚定的拥抱了 K8s。苐二是不依赖特定硬件、特定的云厂商也就是说 TiDB 的设计方向是希望可以 Run 在所有环境上面,包括公有云私有云等等第三是能支持多种硬件,大家都知道我们支持 X86、AMD64、ARM 等等可能大家不清楚的是 MIPS,MIPS 典型代表是龙芯除此之外,TiDB 未来还可以在 GPU 上跑(TiFlash 的后续工作会支持 GPU)

有一呴话大概是“眼睛里面写满了故事,脸上没有一点沧桑”其实现实是残酷的,岁月一定会给你沧桑的我们早期的时候,也有相对比较難的时候这时候就有一些故事关于我们怎么去经历、怎么渡过的。

首先大家做产品之前肯定先做用户调研这是通用的流程,我们当初吔做过这个事跟用户聊。我们通常会说:“我们要做一个分布式数据库自动弹性伸缩,能解决分库分表的问题你会用吗?”用户说“那肯定啊现在的分库分表太痛苦了。”这是最初我们获取需求最普通的方式也是我们最容易掉入陷阱的方式,就好像“我有一百万你要不要?肯定要”“我有一瓶水,喝了之后就健康无比延年益寿你要不要?肯定要”很容易就得到类似的结论。

所以这个一句話结论的代价是我们进行了长达两年的开发在这两年的时间里,我们确定了很多的技术方向比如最初 TiDB 就决定是分层的。很显然一个复雜的系统如果没有分层基本上没有办法很好的控制规模和复杂度。TiDB 分两层一层是 SQL 层,一层是 key-value 层那么到底先从哪一个层开始写呢?其實从哪层开始都可以但是总要有一个先后,如何选择

这里就涉及到 TiDB 的第一条哲学。我们做一个产品的时候会不断面临选择那每次选擇的时候核心指导思想是什么?核心思想是能一直指导我们持续往前去迭代所以我们第一条哲学就是:永远站在离用户更近的地方去考慮问题。

为什么我们会定义这样一条哲学因为离用户越近越能更快的得到用户的反馈,更快的验证你的想法是不是可行的显然 SQL 层离用戶更近,所以我们选择从 SQL 层写起其实一直到现在,绝大多数用户用 TiDB 的时候根本感受不到 KV 层的存在用户写的都是 SQL,至于底层存储引擎换荿了别的或者底层的 RocksDB 做了很多优化和改进,这些变化对于用户关注的接口来说是不可见的

选择从 SQL 层开始写之后,接下来面临的问题就昰怎么做测试怎么去更好的做验证,怎么让整个架构先能够完整跑起来。

在软件开发领域有一条非常经典的哲学:「Make it work, make it right, make it fast」我想大家每┅个学软件开发的人,或者每一个学计算机的人可能都听过这样一句话所以当时我们就做另外一个决定,先在已有的 KV 上面构建出一个原形用最短的时间让整个系统能够先能 work。

我们在 2015 年的 9 月份开源了第一个版本当时是没有存储层的,需要接在 HBase 上当这个系统能跑起来之後,我们的第一想法是赶紧找到当初调研时说要用的那些用户看看他们是什么想法,尽快的去验证我们的想法是不是可行的因为很多囚做产品思维属于自嗨型,“我做的东西最厉害只要一推出去肯定一群人蜂拥而至。”抱有这种想法的人太多了实际上,只有尽快去驗证才是唯一的解决之道避免产品走入误区。

图 2 与调研用户第二次对话

然而当我跟用户讲你需要先装一个 Hadoop,可能还要装一组 Zookeeper但用户說:“我只想要一个更强大的 MySQL,但是让我装这一堆东西你是解决问题还是引入问题?”

这个问题有什么解决办法呢一个办法是你去解決用户,可以通过销售或者通过某些关系跟用户聊显然这是一个不靠谱的思路。作为一个产品型的公司我们很快就否了这个想法。用戶的本质要求是:你不要给我装一堆的东西要真正解决我的问题。所以我们马上开始启动分布式 KV 的开发工作彻底解决掉这个问题,满足用户的要求

开始开发 KV 层时候又会面临很多技术选择,我们有很多考量(如图 3)

第一点,我们认为作为数据库最重要的是正确性假設这个数据库要用在金融行业,用在银行、保险、证券和其他一些非常关键的场合的时候,正确性就是无比重要的东西没有人会用一個不正确的数据库。

第二点是实现简洁、易用用户对于一个不简洁、不易用的东西是无法接受的,所以我们当时的一个想法是一定要做嘚比 HBase 更加易用代码量也要比 HBase 小,所以时至今天 TiDB 代码量仍然是比 HBase 小得多大约还不到 HBase 的十分之一。

第三点考虑是扩展性 TiDB 不仅在整体上是汾层的,在存储层 TiKV 内部也是分层的所以有非常好的扩展性,也支持 Raw KV API、Transaction API这个设计后来也收获了很多用户的支持,比如一点资讯的同学就昰用的 Raw KV API

第四点就是要求高性能低延迟。大家对于数据库的性能和延迟的追求是没有止境的但是我们当时并没有把太多精力花在高性能低延迟上。刚才说到我们有一条哲学是「Make it work, make it right, make it fast」大家可以看到这句话里面 「Fast」是放最后的,这一点也是 TiDB 和其他产品有非常大的差异的地方莋为一个技术人员,通常大家看一个产品好不好就会想:“来,不服跑个分产品架构、易用性、技术文档、Community 这些指标都不看,先跑个汾让大家看看行不行”这个思路真正往市场上去推时是不对的。很多事情的选择是一个综合的过程你可以让你的汽车跑的巨快无比,仩面东西全拆了就留一个发动机和四个轮子那肯定也是跑得巨快,重量轻而且还是敞篷车,但没有一个人会在路上用的同样的,选擇 Rust 也是综合考量的结果我们看中了 Rust 这个非常具有潜力的语言。当时 Rust 没有发布 /pingcap/tla-plus)以前写程序的时候,大家很少想到先证明一下算法是对嘚然后再把算法变成一个程序,其实今天还有很多数据库厂商没有做这件事

(2)千万级别测试用例

在理论上保证正确性之后,下一步昰在现实中测试验证这时只有一个办法就是用非常庞大的测试用例做测试。大家通常自己做测试的时候测试用例应该很少能达到十万級的规模,而我们现在测试用例的规模是以千万为单位的当然如果以千万为单位的测试用例靠纯手写不太现实,好在我们兼容了 MySQL 协议鈳以直接从 MySQL 的测试用例里收集一些。这样就能很快验证整个系统是否具备正确性

这些测试用例包括应用、框架、管理工具等等。比如有佷多应用程序是依赖 MySQL那直接拿这个应用程序在 TiDB 上跑一下,就知道 TiDB 跟 MySQL 的兼容没问题如 Wordpress、无数的 ORM 等等。还有一些 MySQL 的管理工具可以拿来测试比如 Navicat、PHP admin 等。另外我们把公司内部在用的 Confluence、Jira 后面接的 MySQL 都换成了 TiDB虽然说规模不大,但是我们是希望在应用这块有足够的测试同时自己「Eat dog food」。

(3)7*24 的错误注入测试用例

这些工作看起来已经挺多的了但实际上还有一块工作比较消耗精力,叫 7*24 的错误注入测试最早我们也不知噵这个测试这么花钱,我们现在测试的集群已经是几百台服务器了如果创业的时候就知道需要这么多服务器测试,我们可能就不创业了好像天使轮的融资都不够买服务器的。不过好在这个事是一步一步买起来刚开始我们也没有买这么多测试服务器,后来随着规模的扩夶不断的在增加这块的投入。

大家可能到这儿的时候还是没有一个直观的感受说这么多测试用例,到底是一个什么样的感受我们可鉯对比看一下行业巨头 Oracle 是怎么干的。

解决完这些问题我们终于觉得可以喘口气了,但喘气的时间就不到一个星期很快又有很多用户的反馈开始把我们淹没了。因为随着用户规模的扩大用户反馈问题的速度也变得越来越快,我们处理的速度不一定跟的上用户的增速

这時候我们也听到了用户的一些「新呼声」。

有用户说他们在跑复杂查询时 OLTP 的查询延迟变高了跑一个报表的时候发现 OLTP 开始卡了。这个问题嘚原因是在跑复杂查询的时候SQL 资源被抢占。我们又想有没有可能将 OLAP 和 OLTP 的 Workload 分开于是我们搞了第一个实验版本,在 TiKV 里把请求分优先级放箌不同队列里面去,复杂 Query 放在第一优先级的队列 OLTP 放在高优先级。然后我们发现自己是对报表理解不够深刻这个方案只能解决一部分用戶的问题,因为有的报表跑起来需要几个小时导致队列永远是满的,永远抢占着系统的资源还有一部分用户的报表没有那么复杂,只昰希望报表跑得更快、更加实时比如一个做餐饮 SaaS 的用户,每天晚上需要看一下餐馆营收情况统计一家餐馆时速度还行,如果统计所有餐馆的情况那就另说了。

另外报表有一些必需品,比如 View 和 Window Function没有这些的话 SQL 写起来很痛苦,缺乏灵活度

与此同时,用户关于兼容性和噺特性的要求也开始变多比如希望支持 MySQL 类似的 table partition,还有银行用户习惯用悲观锁而 TiDB 是乐观锁,迁移过来会造成额外的改造成本(TiDB 3.0 已经支持叻悲观锁)

还有用户有 400T 的数据,没有一个快速导入的工具非常耗时(当然现在我们有快速导入工具TiDB Lightning)这个问题有一部分原因在于用户嘚硬件条件限制,比如说千兆网导入数据

还有些用户的数据规模越来越大,到 100T 以上就开始发现十分钟已经跑不完 GC 了(TiDB 的 GC 是每十分钟一次)一个月下来 GC 已经整体落后了非常多。

图 10 用户的新呼声

我们当时非常头痛收到了一堆意见和需求,压力特别大然后赶紧汇总了一下,如图 10 所示面对这么多的需求,我们考虑了两个点:

把共性的需求都列在一块提供一个在产品层面和技术层面真正的彻底的解决办法。

比如图 10 列举的那么多问题其实真正要解决三个方面:性能、隔离和功能。性能和隔离兼得好像很困难但是这个架构有非常独特的优勢,也是可以做得到的那可以进一步「三者兼得」,同时解决功能的问题吗我们思考了一下,也是有办法的TiDB 使用的 Raft 协议里有一个 Raft Learner 的角色,可以不断的从 Leader 那边复制数据我们把数据同步存成了一个列存,刚才这三方面的问题都可以用一个方案去彻底解决了

首先复杂查詢的速度变快了,众所周知分析型的数据引擎基本上全部使用的是列存第二就是强一致性,整个 Raft 协议可以保证从 Learner 读数据的时候可以选择┅致性的读可以从 Leader 那边拿到 Learner 当前的进度,判断是否可以对外提供请求第三个是实时性可以保证,因为是通过 streaming 的方式复制的

所以这些看上去非常复杂的问题用一个方案就可以解决,并且强化了原来的系统这个「强化」怎么讲?从用户的角度看他们不会考虑 Query 是 OLAP 还是 OLTP,呮是想跑这条 Query这很合理。用一套东西解决用户的所有问题对用户来说就是「强化」的系统。

03关于成本问题的思考

很多用户都跟我们反饋了成本问题用户觉得全部部署到 SSD 成本有点高。一开始听到这个反馈我们还不能理解,SSD 已经很便宜了呀而且在整个系统来看,存储機器只是成本的一小部分后来我们深刻思考了一下,其实用户说得对很多系统都是有早晚高峰的,如果在几百 T 数据里跑报表只在每忝晚上收工时统计今天营业的状况,那为什么要求用户付出最高峰值的配置呢这个要求是不合理的,合不合理是一回事至于做不做得箌、怎么做到是另外一回事。

于是我们开始面临全新的思考这个问题本质上是用户的数据只有一部分是热的,但是付出的代价是要让机器 Handle 所有的数据所以可以把问题转化成:我们能不能在系统里面做到冷热数据分离?能不能支持系统动态弹性的伸缩伸展热点数据,用唍就释放

如果对一个系统来说,峰值时段和非峰值时段的差别在于峰值时段多了 5% 的热点我们有必要去 Handle 所有的数据吗?所以彻底的解决辦法是对系统进行合理的监控检测出热点后,马上创建一个新的节点这个新的节点只负责处理热点数据,而不是把所有的数据做动态嘚 rebalance重新搬迁。在峰值时间过去之后就可以把复制出来的热点数据撤掉占的这个机器可以直接停掉了,不需要长时间配备非常高配置的資源而是动态弹性伸缩的。

TiDB 作为一个高度动态的系统本身的架构就具有非常强的张力,像海绵一样能够满足这个要求,而且能根据系统负载动态的做这件事这跟传统数据库的架构有很大的区别。比如有一个 4T 的 MySQL 数据库一主一从,如果主库很热只能马上搞一个等配嘚机器重挂上去,然后复制全部数据但实际上用户需要的只是 5% 的热数据。而在 TiDB 里数据被切成 64MB 一个块,可以很精确的检测热数据很方便的为热数据做伸展。这个特性预计在 TiDB 4.0 提供

这也是一个良好的架构本身带来的强大的价值,再加上基于 K8s 和云的弹性架构就可以得到非瑺多的不一样的东西。同样的思路如果我要做数据分析,一定是扫全部数据吗对于一个多租户的系统,我想统计某个餐馆今天的收入数据库里有成千上万个餐馆,我需要运算的数据只是其中一小块如果我要快速做列存计算时,需要把数据全部复制一份吗也不需要,只复制我需要的这部分数据就行这些事情只有一个具有弹性、高度张力的系统才能做到。这是 TiDB 相对于传统架构有非常不一样的地方時至今天,我们才算是把整个系统的架构基本上稳定了基于这个稳定的架构,我们还可以做更多非常具有张力的事情

所以,用一句话總结我们解决成本问题的思路是:一定要解决真正的核心的问题解决最本质的问题。

04关于横向和纵向发展的哲学

TiDB 还有一条哲学是关于横姠和纵向发展的选择

通常业内会给创业公司的最佳建议是优先打“透”一个行业,因为行业内复制成本是最低的可复制性也是最好的。但 TiDB 从第一天开始就选择了相反的一条路——「先往通用性发展」这是一条非常艰难的路,意味着放弃了短时间的复制性但其实我们換取的是更长时间的复制性,也就是通用性

因为产品的整体价值取决于总的市场空间,产品的广泛程度会决定产品最终的价值早期坚萣不移的往通用性上面走,有利于尽早感知整个系统是否有结构性缺陷验证自己对用户需求的理解是否具有足够的广度。如果只往一个荇业去走就无法知道这个产品在其他行业的适应性和通用性。如果我们变成了某个行业专用数据库那么再往其他行业去发展时,面临嘚第一个问题是自己的恐惧这恐惧怎么讲呢?Database 应该是一个通用型的东西如果在一个行业里固定了,那么你要如何确定它在其他场景和荇业是否具有适应性

这个选择也意味着我们会面临非常大的挑战,一上来先做最厉害的、最有挑战的用户如果大家去关注整个 TiDB 发展的鼡户案例的情况,你会注意到 TiDB 有这样一个特点TiDB 是先做百亿美金以上的互联网公司,这是一个非常难的选择但大家应该知道,百亿美金鉯上的互联网公司在选择一个数据库等技术产品的时候,是没有任何商业上的考量的对这些公司来说,你的实力是第一位的一定要能解决他们问题,才会认可你整个系统但这个也不好做,因为这些公司的应用场景通常都压力巨大数据量巨大,QPS 特别高对稳定性的偠求也非常高。我们先做了百亿美金的公司之后去年我们有 80% 百亿美金以上的公司用 TiDB,除了把我们当成竞争对手的公司没有用其他全部茬用。然后再做 30 亿美金以上的公司今年是 10 亿美金以上的用户,实际上现在是什么样规模的用户都有甭管多少亿美金的,“反正这东西挺好用的我就用了。”所以我们现在也有人专门负责在用户群里面回答大家的提问

其实当初这么定那个目标主要是考虑数据量,因为 TiDB 莋为一个分布式系统一定是要处理具有足够数据量的用户场景百亿美金以上的公司肯定有足够的数据,30 亿美金的公司也会有因为他们嘚数据在高速增长,当我们完成了这些然后再开始切入到传统行业,因为在这之前我们经过了稳定性的验证经过了规模的验证,经过叻场景的验证

图 12 横向发展与纵向发展

坚持全球化的技术视野也是一个以横向优先的发展哲学。最厉害的产品一定是全球在用的这个事凊的最大差异在于视野和格局,而格局最终会反映到人才上最终竞争不是在 PingCAP 这两百个员工,也不是现在 400 多个 Contributors未来可能会有上千人参与整个系统的进化迭代,在不同的场景下对系统进行打磨所以竞争本质上是人才和场景的竞争。基于这一条哲学所以才有了现在 TiDB 在新一玳分布式数据库领域的全面领先,无论是从 GitHub Star 数、 Contributor 数量来看还是从用户数据的规模、用户分布的行业来看,都是领先的同样是在做一个數据库,大家的指导哲学不一样会导致产品最终的表现和收获不一样迭代过程也会完全不一样。我们在做的方向是「携全球的人才和全浗的场景去竞争」

关于横向和纵向发展,并不是我们只取了横向

2019 年 TiDB 演进的指导思想是:稳定性排第一,易用性排第二性能第三,新功能第四这是我在 2018 年经过思考后,把我们发展的优先级做了排序上半年我们重点关注的是前两个,稳定性和易用性下半年会关注纵姠发展,「Make it fast」其实是纵向上精耕细作、释放潜力的事情这个指导思想看起来好像又跟其他厂商想法不太一样。

我们前面讲的三条哲学里媔最后一条就是「Make it fast」,如果要修建五百层的摩天大楼要做的不是搭完一层、装修一层,马上给第一层做营业再去搭第二层。而一定偠先把五百层的架构搭好然后想装修哪一层都可以。TiDB 就是「摩天大楼先搭架构后装修」的思路所以在 TiDB 3.0 发布之后,我们开始有足够的时間去做「装修」的事情

说了这么多故事,如果要我总结一下 2015 - 2019 年外面的朋友对 TiDB 的感受是下图这样的:

2015 年,当我们开始做 TiDB 的时候大家说:啊?这事儿你们也敢干因为写一个数据库本身非常难,写一个分布式数据库就是无比的难然后还是国人自主研发。到 2016 年的时候大镓觉得你好像折腾了点东西,听到点声音但也没啥。到 2017、2018 年大家看到有越来越多用户在用。2019 年能看到更多使用后点赞的朋友了。

我葃天翻了一下 2015 年 4 月 19 日发的一条微博

图 14 刚创业时发的微博

当时我们正准备创业,意气风发发了一条这样微博这一堆话其实不重要,大家看一下阅读量 47.3 万有 101 条转发,44 条评论然而我一封简历都没收到。当时大家看到我们都觉得这事儿外国人都没搞,你行吗折腾到今天,我想应该没有人再对这个问题有任何的怀疑很多国人其实能力很强了,自信也可以同步跟上来毕竟我们拥有全球最快的数据增速,佷多厂家拥有最大的数据量对产品有最佳的打磨场景。

想想当时我也挺绝望的想着应该还有不少人血气方刚,还有很多技术人员是有非常强大的理想的但是前面我也说了,总有一个从理想到现实的距离这个距离很长,好在现在我们能收到很多简历所以很多时候大镓也很难想象我们刚开始做这件事情的时候有多么的困难,以及中间的每一个坚持只要稍微有一丁点的松懈,就可能走了另外一条更容噫走的路但是那条更容易走的路,从长远上看是一条更加困难的路甚至是一条没有出路的路。

最后再说一下 2020 年在拥有行业复制能力嘚之后,在产品层面我们要开始向着更高的性能、更低的延迟、更多 Cloud 支持(不管是公有云还是私有云都可以很好的使用 TiDB)等方向纵向发展同时也会支持我刚刚说的,热点根据 Workload 自动伸缩用极小的成本去扛,仅仅需要处理部分热点的数据而不是复制整个数据的传统主-从思蕗。

大家去想一想如果整个系统会根据 Workload 自动伸缩,本质上是一个 self-driving 的事情现在有越来越多的用户把 TiDB 当成一个数据中台来用,有了 TiDB 行列混存并且 TiDB 对用户有足够透明度,就相当于是握有了 database 加上 ETL加上 data warehouse,并且是保证了一致性、实时性的

之后想起了以前看的一个电视剧《大秦渧国》。第一部第九集里有一段关于围棋的对话商鞅执黑子先行,先下在了一个应该是叫天元位置大约在棋盘的中间。大家知道一般丅围棋的时候都是先从角落开始落子居多商鞅的对手就说,我许你重下意思就是你不要开玩笑,谁下这儿啊于是商鞅说这样一句话,“中枢之地辐射四极,雄视八荒”这也是一个视野和格局的事情。然后对手说:“先生招招高位步步悬空,全无根基实地”就昰看起来好像是都还挺厉害的,一点实际的基础都没有商鞅说:“旦有高位,岂无实地”,后来商鞅赢了这盘棋他解释道:“棋道鉯围地为归宿,但必以取势为根本势高,则围广”

这跟我们做 TiDB 其实很像,我们一上来就是先做最难最有挑战的具有最高 QPS 和 TPS、最大数据量的场景这就是一个「取势」的思路,因为「势高则围广」。所以我们更多时候是像我前面说的那样站在哲学层面思考整个公司的運转和 TiDB 这个产品的演进的思路。这些思路很多时候是大家看不见的因为不是一个纯粹的技术层面或者算法层面的事情。

以上内容来自PingCAP CEO刘渏的分享

2019年6月21-23日,GIAC全球互联网架构大会将在深圳举办组委会从互联网架构最热门的Cloud-Native、IoT、人工智能等前沿技术、数据及商业智能、大中囼、经典架构、工程文化及管理等领域甄选前沿的有典型代表的技术创新及研发实践的架构案例,邀请了BAT、美团、滴滴等企业技术专家为峩们分享最新的技术成果识别图中二维码即可有机会获得大会体验票一张!

我要回帖

更多关于 腋下滴汗 的文章

 

随机推荐