服務治理·理論篇(一)

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.pswp.cn/news/278489.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278489.shtml
英文地址,請注明出處:http://en.pswp.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 …