当前位置: 首页 > news >正文

从抖音关闭评论,看服务治理的重要性

4月10日,广电总局责令今日头条永久关停「内涵段子」等低俗视听产品。

该消息传出后,大量内涵段子用户涌入抖音,以统一头像和内涵段子风格的评论迅速占领抖音热门视频评论区。

而就在昨晚 23 点 40 左右,抖音关闭了评论的所有功能。虽然页面显示有几千条评论,但是当点开评论的时候却发现没有评论内容。

之后抖音发布官方声明,表示服务器维护停止直播和评论功能,等待升级完成之后再重新开放。而在 4 月 11 日,今日头条官方公众号发表了一篇致歉信。今日头条创始人张一鸣表示,接受处罚,所有责任在自己。接下来,要将正确的价值观融入技术和产品,并要整改社区秩序,优化社区氛围。

作为技术人员,我不禁在想:抖音的用户量如此之大,技术上如何能够如此快速地关闭所有评论功能?

我们可以猜想,以抖音这种数量级的用户,抖音后台早已实现了各个功能模块的服务化拆分,并且进行了服务治理。而从今日头条对外的技术分享来看,今日头条确实是这么做的。

我们使用 Go 语言研发了内部的微服务框架 kite,协议上完全兼容 Thrift。以五元组为基础单元,我们在 kite 框架上集成了服务注册和发现,分布式负载均衡,超时和熔断管理,服务降级,Method 级别的指标监控,分布式调用链追踪等功能。目前统一使用 kite 框架开发内部 Go 语言的服务,整体架构支持无限制水平扩展。

从上面的技术分享片段,我们可以知道今日头条内部使用了 Go 语言开发的 Kite 微服务框架,并且实现了服务监控、服务熔断、服务降级、服务指标监控等功能。

所以我们可以猜想:当 4 月 10 日,广电总局宣布勒令关闭内涵段子,大量段友涌入抖音评论区的时候,抖音评论接口调用数暴增,相应的服务监控报警,相关的技术人员收到信息进行紧急处理。此时技术人员便会排查评论接口调用暴增的原因,并且商量对应的对策。

到了 4 月 10 日 23 点 40 分左右,或许因为担心事态进一步发酵,所以抖音选择将评论接口进行服务熔断。所有请求评论列表的请求,全部返回空的评论数据。

其实所谓的「服务熔断」指的就是当某个指标达到一定程度时,服务接口自动熔断,对所有请求该接口的消费者都返回一个默认值。例如抖音一定时间内评论接口调用数达到100万次,自动返回空的评论数据。当然了,服务熔断也可以手动触发。

现在回头想一想,抖音之所以能快速地处理好这件事情,很大一部分是服务治理的功劳。试想一下,如果没有服务监控,那么技术人员就无法第一时间获取异常信息。那段友就会在抖音评论区一直刷屏,这时时态很可能得不到平息,反而会越演越烈,抖音很可能会成为下一个内涵段子,这对今日头条的打击将是巨大的。

正是因为服务治理对于突发情况的处理效果出众,所以当一个公司产品达到一定数量级之后,服务治理一定是绕不过的一个话题。

而服务治理不仅仅在处理突发事件效果出众,对于线上问题处理,服务监控也能发挥很大的作用。笔者之前的公司有一个完善的服务监控系统,它能统计各个接口的异常率,并且能针对每个异常请求显示出完整的分布式调用链,这对于开发人员排查线上问题非常有用。

服务监控、服务熔断其实只是服务治理很小的一部分,本文也只是简略地提了一下。希望这篇文章,能让更多的技术人了解到热点背后的技术,提炼出对于技术更深刻的理解。

文章首发于微信公众号「陈树义」,专注于 Java 技术分享的社区。点击链接扫描二维码,与500位小伙伴一起共同进步。微信公众号二维码 http://p3npq6ecr.bkt.clouddn.com/blog/chenshuyi_gongzhonghao_guide_full.jpg

相关文章:

  • diango-团队介绍
  • ModeBusRtu概述
  • Project中最常用的注意点
  • 云时代,ERP选型莫走入低价、免费误区
  • 以太坊智能合约开发第六篇:truffle开发框架
  • CSS居中完全指南——构建CSS居中决策树
  • 悲观的并发策略——synchronized互斥锁
  • 一步一步构建自己的管理系统之 ------登入注册
  • 64位linux安装wine等软件
  • javascript 日期函数
  • spring IOC AOP实现原理
  • Python数据挖掘与机器学习技术入门实战
  • 万达酒店及度假村首创微信智能开票辅助功能
  • 【vue】vue +element 搭建项目,vuex中的store使用
  • 面向对象进阶------模块 json pickle hashlib
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • Angular 4.x 动态创建组件
  • Angularjs之国际化
  • C学习-枚举(九)
  • egg(89)--egg之redis的发布和订阅
  • Koa2 之文件上传下载
  • Less 日常用法
  • maya建模与骨骼动画快速实现人工鱼
  • SOFAMosn配置模型
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 闭包--闭包之tab栏切换(四)
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 容器服务kubernetes弹性伸缩高级用法
  • 三分钟教你同步 Visual Studio Code 设置
  • 深入 Nginx 之配置篇
  • 试着探索高并发下的系统架构面貌
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 一道面试题引发的“血案”
  • 自制字幕遮挡器
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​secrets --- 生成管理密码的安全随机数​
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (BFS)hdoj2377-Bus Pass
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (八)c52学习之旅-中断实验
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)iOS字体
  • .Family_物联网
  • .Net 4.0并行库实用性演练
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .Net MVC4 上传大文件,并保存表单