服务治理·理论篇(一)

0、故事主角

呱呱乐 是一家互联网金融公司。主营现金贷、p2p理财、消费分期业务。

公司现有技术人员800名,系统极其庞杂,每日稳定处理25w左右的订单量,有抢购活动时,系统的QPS(Query Per Second)峰值达到了3w。

系统虽然庞杂,但在技术老大C哥的带领下,服务的可靠性高达99.99%,技术方面的成绩闻名业内。

这不,C哥受邀参加2022年全球互联网大会了。

我是技术主编王小五,让我们一起来采访下C哥吧,你们有什么想问的,也可以关注我的专栏留言吆~

1、呱呱乐系统初期

小五:C哥好,很多网友对呱呱乐公司的系统演进感兴趣,您能给我们讲一讲吗?

C哥得意的笑了笑:好的,那我简单介绍下吧。

呱呱乐初期其实是一个名不见经传的小公司,只有6名技术,主要做消费分期业务,系统是基于LNMP搭建的基础架构,框架使用的是ThinkPhp。

刚开始流量比较小,业务也比较基础,主要提供用户登录注册、订单、账单、支付、风控、消息发送等功能。

功能刚开始都比较简单,所以这样的架构能够满足需求,所有的功能都在一个Git工程里开发。

这些功能抽象出来,可以用一张图表示:


小五:是的,初创型公司基本都是这样的技术架构,简单而实用,满足快速迭代、功能为主的需求。

C哥:但是,随着访问量的增多、业务越来越复杂,这样的架构就有点力不从心了...


2、宕机一小时


小五:哦?怎么个力不从心法? C哥微笑一下:宕机的时候,你就知道了,哈哈。


小五:哈哈,那C哥给我们讲讲吧,大家都很想听。

C哥:当我们业务开展到了6个月左右的时候,注册用户比较多了。 一天下午,大量用户反馈我们的app打不开了,同时我们也发现了这个问题。

于是我们从Nginx开始排查,发现流量正常,没有被DDOS攻击,Nginx配置也正常,没有任何问题。

接下来,我们又排查了PHP,PHP进程也一切正常,没有出现内存泄漏等问题。

剩下的,就排查Mysql了,一看不要紧,原来真是 Mysql 在搞鬼,CPU使用率近乎100%...

于是,我们赶紧暂停了Mysql服务。

通过查询慢Sql日志发现,原来是张二胖写的一条SQL导致了风控日志表进行了全表扫描,而风控日志表中的数据高达800万条...


小五:哈哈,这样的场景似曾相识,好多公司应该都经历过。 C哥:是啊,好多攻城狮都对数据库进行直接操作,而他们写出的SQL的质量又不能保证。


小五:那你们最终怎么解决的呢? C哥:首先我们对服务进行了降级,先保证核心功能可用。而后,我们又对该数据表加索引,对SQL进行优化,最终解决了这个问题。


C哥:从发现问题到解决问题,大约用了一个小时的时间,这一小时内,所有服务都不能用了,真是惊心动魄的一小时。从这时起,我就想有什么办法能够规避这类问题。 小五:是啊,这次可能是张二胖写出了全表扫描的SQL,下次可能是张三胖写出全表扫描的SQL,这样都会导致服务不可用,功能之间的耦合性太高了。


3、业务的继续开展


小五:C哥,除了消费分期业务外,咱们公司后来又开展了现金贷、理财业务。这些业务的加入,对于系统有什么影响呢?

C哥:哎,说起来都是泪啊。因为消费分期、现金贷、理财等业务,很多东西都是相同的,比如用户功能、订单功能、账单功能,前期为了业务的快速发展,我们直接从消费分期拷贝了两套代码出来,分别用来处理现金贷、理财的业务。


小五:的确是,这样能最快的支撑业务的运转。

C哥:但这样给自己埋了很大的坑,以后还得慢慢的去填~


C哥:业务中存在很多Copy-Paste的代码,比如用户表改动了一个字段,三个系统都需要去改。又比如加了Redis缓存,三个系统也都需要改动。实在是太繁琐了,如果忘记改动,还有可能造成服务挂掉,那时候真实天天改bug啊。

小五:心疼你们1秒钟。。。


4、没完没了的加班


C哥:随着业务的发展,系统越来越复杂,技术人员的体会也越来越“痛”,天天改不完的bug,夜以继日的加班...... 小五:现在的系统没有这问题了吧,C哥?

C哥:好在我们进行了微服务的改造,这种问题才得以解决。 小五:微服务?最近很火的概念,C哥给我们分享一下吧!

C哥:今天时间也不早了,要不明天再跟大家细讲吧。 小五:好的C哥,感谢您的分享,明天再来采访您~


注:文中公司、人物均为虚构,只为故事更加精彩~

小记:服务治理还在学习阶段,经验有限,不对的地方请多多指教。

后续:服务治理理论篇(二)、实践篇会相继出炉~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019-1-92.4G射频芯片培训资料

2019-1-92.4G射频芯片培训资料 培训 RF 小书匠 欢迎走进zozo的学习之旅。 2.4G芯片选型2.4G芯片开发Q&A2.4G芯片选型 芯片类型 soc防盗标签2.4G无线芯片选型发射器收发器LSD2RF-1600-V1.1 调制方式射频基础 2.4G芯片开发 原理图 发射优先收发均衡PCB topbottomlayout规…

在Outlook 2010中使用对话视图

One of the new features in Outlook 2010 is the ability to use Conversation View for easier management of your email conversations. Here we will take a quick look at how to use the new feature. Outlook 2010中的新功能之一是可以使用“对话视图”来更轻松地管理电…

openresty capture

local args {} args["name"] "张三" args["sex"] "男"local captureRes; if ngx.var.request_method "POST" thencaptureRes ngx.location.capture(/dsideal_yy/test, {method ngx.HTTP_POST, headers { ["Cont…

Day10:html和css

Day10:html和css <html> <body> <h1>标题</h1> <p>段落</p> </body> </html>HTML 是用来描述网页的一种语言&#xff0c;超文本标记语言&#xff0c;不是一种编程语言&#xff0c;而是一种标记语言&#xff0c;是一套标记标签…

如何在PowerPoint演示文稿中使用iTunes音乐

One of PowerPoint’s charms is its ability to play music during the presentation. Adding music to your presentation is simple, but using a song from your iTunes library requires a few extra steps. Here’s how to use iTunes music in PowerPoint. PowerPoint的…

Android:DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs

Android studio DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs 一、报错信息 DELETE_FAILED_INTERNAL_ERRORError while Installing APKs 二、报错原因 在一些机型上安装软件 提示卸载原先的软件 但是又安装不上新软件 三、解决方法&#xff1a; File->Settin…

hotmail_在新的Hotmail Wave 4中禁用Messenger

hotmailAre you annoyed by having Messenger automatically sign in when you’re reading your emails in the new Hotmail? Here’s how you can disable the Web Messenger in Hotmail and other Windows Live online apps. 当您在新的Hotmail中阅读电子邮件时&#xff0…

eclipse中将一个项目作为library导入另一个项目中

1. github上搜索viewpagerIndicator: https://github.com/JakeWharton/ViewPagerIndicator2. 下载zip包&#xff0c;解压&#xff0c;eclipse中import->Android Existing Code->(注意只导入解压后下面的Library)3. 导入后标记为Property->Android->isLibrary4. 将i…

论接单报价管理与ERP信息化管理的重要性

中小制造企业两项比较重要的管理工作&#xff1a;接单报价管理与ERP信息化管理。大部分的中小制造企业都存在财务核算基础薄弱、ERP信息化错乱甚至没有的情况。信息沟通不畅&#xff0c;经营过程数据与结果数据无法掌握是很多中小工厂的通病。楼主所知道的是&#xff0c;很多几…

mac无法关机_Mac无法关机时该怎么办

mac无法关机Razvan Franco Nitoi/Shutterstock.com拉兹万佛朗哥尼托伊/Shutterstock.comMacs are like any other computer. Sometimes they won’t start up, and sometimes they won’t shut down. If your Mac is refusing to shut off, here’s how to shut it down anyway…

数串

数串 题目描述 设有n个正整数&#xff0c;将他们连接成一排&#xff0c;组成一个最大的多位整数。 如:n3时&#xff0c;3个整数13,312,343,连成的最大整数为34331213。 如:n4时,4个整数7,13,4,246连接成的最大整数为7424613。 输入描述: 有多组测试样例&#xff0c;每组测试样…

chromebook刷机_如何在Chromebook上拍照

chromebook刷机Your Chromebook comes equipped with a built-in camera you can use to snap pictures to post to your social media accounts or share with friends and family. Here’s how to take a photo on a Chromebook. 您的Chromebook配备了一个内置摄像头&#xf…

树和二叉树简介

一、树 1、什么是树&#xff1f; 树状图是一种数据结构&#xff0c;它是由n&#xff08;n>1&#xff09;个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。它具有以下的特点&#…

对eventloop的研究

javasctipt是一门单线程的非阻塞的脚本语言&#xff0c;单线程意味着&#xff0c;JavaScript 单线程意味着&#xff0c;javascript代码在执行的任何时候&#xff0c;都只有一个主线程来处理所有的任务。 JavaScript的事件分两种&#xff0c;宏任务(macro-task)和微任务(micro-t…

【SSH高速进阶】——struts2简单的实例

近期刚刚入门struts2。这里做一个简单的struts2实例来跟大家一起学习一下。 本例实现最简单的登陆&#xff0c;仅包括两个页面&#xff1a;login.jsp 用来输入username与password&#xff1b;success.jsp 为登陆成功页面。error.jsp为登陆失败页面。 1、新建web项目“struts2”…

《智能家居》培训第六天------2019-01-10

目录&#xff1a; 一&#xff09;摄像头 二&#xff09;照明 三&#xff09;所想 四&#xff09;总结 一&#xff09;摄像头 摄像头这块学了跟没学一样我觉得&#xff0c;摄像头给的api&#xff0c;yuyv转rgb24也是给的api&#xff0c;总而言之就是&#xff0c;直接给了两个源文…

在Linux上按大小列出文件和目录

This page will show us how to create a list of files and folders ordered by size using standard Linux commands. 该页面将向我们展示如何使用标准Linux命令创建按大小排序的文件和文件夹列表。 命令 (Command) To get a list with the size of each item in a folder, y…

记一次kafka数据丢失问题的排查

2019独角兽企业重金招聘Python工程师标准>>> 数据丢失为大事&#xff0c;针对数据丢失的问题我们排查结果如下。 第一&#xff1a;是否存在数据丢失的问题&#xff1f; 存在&#xff0c;且已重现。 第二&#xff1a;是在什么地方丢失的数据&#xff0c;是否是YDB…

Maximum upload size exceede上传文件大小超出解决

在这里记录三种方法, 努力提高自己的姿势水平 application.yml配置spring:servlet:multipart:enabled: truemax-file-size: 10MB #单个文件最大大小max-request-size: 1024MB #上传数据总大小 application.properties配置spring.servlet.multipart.max-file-size10Mb #单个文件…

ipad iphone开发_如何在iPhone或iPad上更改应用程序的语言

ipad iphone开发BigTunaOnline/Shutterstock.comBigTunaOnline / Shutterstock.comApple’s iOS 13 makes the iPhone and iPad multilingual. Now, you can change the language of an individual app without changing your primary system language. Each app can have its …