《架构师 2018 8月刊》笔记

迷你书地址:http://www.infoq.com/cn/minibooks/architect-201808

Kotlin 生态调查结果出炉:超过 6 成的开发者用过 Kotlin 了

Stream 从 Python 切换到 Go 的原因

Stream 是一套用于构建、伸缩、定制化新闻源和活动流的API。

Go最大的卖点在于它的性能,无论在运行还是编译时它都有突出的性能优势。它与Java或者C++的运算速度几乎相当。在实际使用中,我们发现它比Python大约快30倍。

用Go编写的Go编译器也非常快。Stream中最复杂的微服务就采用Go编写,它的编译时间仅仅需要6秒,Java和C++等工具链则慢得多,快则一分钟,慢则数小时。

Go在语言层面通过goroutine和channel支持了并发。

Go有一句重要的格言,即:不要通过共享内存来通信,相反,通过通信来共享内存 。

Go有助于开发微服务。谷歌的protobuf和gRPC是微服务间通信的基础,Go对它们提供了很好的支持。作为开发人员,我们只需在清单文件中定义一项服务,工具便会自动生成客户端和服务器端代码,并且保证代码的高性能以及很低的网络负载。此外,清单文件还可以被其他语言用来生成他们自己的客户端和服务器端代码。

需要注意的是,对于某些适合使用Python开发的模块,Stream仍然使用Python。例如,我们的仪表板、网站以及用于个性化订阅的机器学习都使用Python实现,因为Python提供的这些工具更好用。我们不会马上完全弃用Python,但是对于性能要求较高的代码,我们今后会使用Go来编写。

腾讯大规模分布式机器学习系统无量是如何进行技术选型的?

GitHub 的 MySQL 高可用性实践

我们的集群使用经典的主-副设置,其中集群的单个节点(主节点)能够接受写操作。其它集群节点(副节点)异步更新主节点的变更并服务我们的读流量。

为了支持写操作,我们显然需要有一个可用的写节点,即集群的主节点。但同样重要的是,我们需要能够识别,或者发现,那个节点。
遇到一个故障时,比如主节点崩溃的场景,我们必须确保存在一个新的主节点,并且能够快速通告其身份。
检测故障、运行故障恢复以及通告新主节点身份所花费的时间组成了总宕机时间。

orchestrator MySQL 集群管理工具

https://github.com/github/orchestrator
orchestrator is a MySQL high availability and replication management tool, allowing for:

  • Discovery
    orchestrator actively crawls through your topologies and maps them. It reads basic MySQL info such as replication status and configuration.
  • Refactoring
    orchestrator understands replication rules. It knows about binlog file:position, GTID, Pseudo GTID, Binlog Servers.
    Refactoring replication topologies can be a matter of drag & drop a replica under another master. Moving replicas around is safe: orchestrator will reject an illegal refactoring attempt.
  • Recovery
    orchestrator uses a holistic approach to detect master and intermediate master failures. Based on information gained from the topology itself, it recognizes a variety of failure scenarios.
    Recovery process utilizes orchestrator's understanding of the topology and of its ability to perform refactoring. It is based on state as opposed to configuration: orchestrator picks the best recovery method by investigating/evaluating the topology at the time of recovery itself.

远离基于 VIP 和 DNS 的服务发现

在我们之前的迭代中,我们使用:

  • orchestrator用于故障监听和故障恢复
  • VIP和DNS用于发现主节点

在那个迭代中,客户端通过使用一个名称,例如 mysql-writer-1.github.net 来发现写节点。这个名称解析为主节点获取的虚拟IP地址(Virtual IPaddress,VIP)。
因此,平常的时候,客户端会只解析这个名称,连接解析到的IP地址,然后找到正在另一端监听的主节点。
当发生一个主节点故障事件时,一个新的服务器(副本之一),必须被提升为主节点。
orchestrator将监测到一个故障,提升一个新的主节点,然后采取行动重新分配名称/VIP。客户端并不准确地知道主节点的身份:它们所知道的只是一个名称,而那个名称现在一定解析到了新的主节点。

GitHub 的高可用性方案:orchestrator、Consul 和 GLB

  • orchestrator用来运行故障监听和故障恢复。
  • Hashicorp公司的用于服务发现的Consul。
  • 作为客户端和写操作节点之间的代理层的GLB/HAProxy。
  • 用于网络路由的anycast。

一个普通的工作流:

  • 平常,App通过GLB/HAProxy连接到写操作节点。

  • App不会意识到主节点的身份。和以前一样,它们使用一个名称。例如,cluster1的主节点会是 mysql-writer-1.github.net。然而,在我们目前的设置中,这个名称会被解析到一个任播(anycast)IP。

  • 通过anycast方法,这个名称在任何地方都被解析为相同的IP,但是流量会根据客户端位置分别进行路由。特别地,我们的每个数据中心都在多个区域部署了GLB(我们的高可用负载均衡)。到 mysql-writer-1.github.net 的流量通常路由到本地数据中心的GLB集群。因此,所有的客户端都是由本地代理服务的。

  • 我们在HAProxy上运行GLB。我们的HAProxy有写操作池:每个MySQL集群一个池,而每个池有一个后端服务器作为这个集群的主节点。所有的GLB/HAProxy区域在所有的数据中心都拥有相同的写操作池,而它们都指向这些池中完全相同的后端服务器。因此,如果一个App想要向mysql-writer-1.github.net写入,这跟它与哪个GLB服务器连接无关。它将总是被路由到cluster1主节点。

  • 就App而言,服务发现在GLB终止,并且永远不需要重新发现。流量都是在GLB上路由到正确的目的地。

运满满的技术架构演进之路

  • 第一次迭代是“服务化拆分”。
  • 第二次迭代是“稳定性保障体系与业务服务中台”。

运满满使用 Xgboost 来预测车 - 货的基础相关性,实际是一个 CTR 和 CVR 混布模型,其中部署了在线实时系统,自研了一套基于 FTRL 算法的在线学习算法,将用户实时的行为数据结果和 Xgboost 的离线结果共同训练而得,点击预测的准确率超过 90%。

百度智能运维的技术演进之路

百度提出了指导智能运维的三个原则:

  • 书同文:一致运维“语言”;如运维应用、服务、机房、集群的定义;
  • 车同轨:一致运维“方法”;如扩缩容执行、流量切换执行;
  • 行同伦:一致运维“模式”;如故障诊断策略、弹性伸缩策略、流量调度策略。

针对不同的场景提供不同的异常检测算法解决人工配置困难和监控漏报&误报的问题。

  • 周期波动的数据,典型场景:广告收入、搜索流量等。算法:同比基准值检测
  • 关心突变的数据,典型场景:交易订单、流水等。算法:环比基准值检测
  • 关心是否超出了一定波动范围的数据,典型场景:pvlost。算法:基于概率的恒定阈值检测。

面向大规模 AI 在线推理的可靠性设计

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,920评论 2 89
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,647评论 18 139
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,843评论 0 5
  • 小时候生活在华北平原河北省南部的一个平凡的小村庄,村里除了县里乡里帮忙建的初中有三层楼之外再也找不到楼房了,更...
    木易杨_5e0d阅读 368评论 0 1
  • 和母亲的爱恨情仇 最近在整理关于产后抑郁方面的内容,回顾我接触到的来访者,有两类是非常容易出现产后抑郁的情况:一种...
    石勤快阅读 293评论 0 1