輕松學習分布式|系列3|分布式數據庫。

我們繼續來講分布式,回到我們的創業游戲。

我們的業務規模上來了,客戶也越來越忠誠了。很多客戶都通過我們的訂票服務,來方便自己的行程。

那對這些老客戶,我們的宗旨是:要不斷超越客戶的期待。

所以,我們要建立我們的客戶數據庫。

我們要記錄下每個客戶的偏好的航空公司,偏愛的酒店。下次服務,才能直接更好地服務客戶。

怎么辦?

最簡單的辦法,每個客服小姐姐各自用自己的記事本,記錄下客戶的號碼,偏好等信息。

這些記事本就是我們的“客戶數據庫”。

這些數據都記錄在記事本上,會有一個問題,如里同一個客戶,每個客服小姐姐都記錄一次。是不是很費時費力,還重復記錄,浪費資源。

怎么辦?

還是跟之前一樣,拆分!垂直拆分。

再拆分一組,就叫:客戶信息記錄組。

如果客戶小姐姐要記錄客戶信息,就把信息寫在紙條上,然后直接扔給:客戶信息記錄組,讓這個小組自行處理:去除重復,更新信息。

當然,我們的客戶信息記錄組,可以用execl把客戶信息上記錄下來。這樣,也方便數據處理。

現在我們的業務架構是這樣的:

?

?有同學說,這個架構圖好像跟我們的IT軟件架構圖很像。

沒錯。其實,所有的IT軟件架構,遵從從業務架構設計的。

技術只是工具,業務才是核心。

回到我們的客戶信息記錄組。這個組也有多個小姐姐記錄,如果大家都各自用自己的excel,怎么保證大家的信息沒有重復,都是一致的呢?

這個時候,我們就要上數據庫系統了。什么是數據庫系統,簡單來說,就是記錄數據的倉庫。

好,我們買了一臺電腦,招了一個程序員,下載了個mysql,寫了一個簡單程序,給客戶信息記錄組的姐姐用。

剛開始,數據不大,問題不大。

當數據越來越多時,一臺數據庫明顯支持不下。怎么辦?

很簡單,多買幾臺數據庫。能用錢解決的問題,就不是問題。

那現在問題又來了,這些數據庫怎么保持數據一致性?

這個就是分布式數據庫要解決的問題。什么是分布式數據庫?

簡單來說,它就是用多臺數據庫組成一個“整體”,給外界提供數據庫服務的數據倉庫系統。

有同學會說了,你要很大很大的數據量才能用分布式數據庫。你一家小公司,用這個是不是浪費了?

有道理!一般情況下,小公司是用不上分布式。但我們做為有夢想的企業家,一定要提前規劃,站在未來看現在!我們才有機會成功!

馬云說過:夢想還是要有的,萬一實現了呢?

所以,叫那個程序員開始干活!

首先我們要分析一下業務。

客戶小姐姐大部分情況下,都 是查詢客戶信息的比較多,占了80%。新增,和更新信息的情況比較少,占了20%。

如果查詢和記錄都在一個數據庫,經常會造成沖突,造成“鎖表”。這會造成嚴重的性能問題,會造成對客戶體驗嚴重的損害!

很自然,我們可以想到,那是不是可以分開兩個庫,一個用來記錄,一個用來查詢。

這就是讀寫分離,讀寫分離是很重要的設計原則。可以極大地提高查詢的效率。如下:

?

盡管采取了讀寫分離的方式,但隨著數據庫的壓力繼續增加,數據庫的瓶頸越來越突出。怎么辦?

我們分別對讀寫庫的表進行水平拆分,也就是分表。

比如,可以按表中的唯一ID的hash值來分,如果hash值是偶數,就放在“偶數表”,如果hash值是奇數,就放在奇數表。

如下圖:

講到這里,我們基本上就建立了分布式數據庫系統。

明天繼續講分布式架構的演進。

?

轉載于:https://www.cnblogs.com/gyc567/p/11075381.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393082.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393082.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393082.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

量子運算 簡單通俗例子_什么是量子計算機? 用一個簡單的例子解釋。

量子運算 簡單通俗例子by YK Sugi由YK Sugi 什么是量子計算機? 用一個簡單的例子解釋。 (What is a quantum computer? Explained with a simple example.) Hi everyone!嗨,大家好! The other day, I visited D-Wave Systems in Vancouver…

linux增加端口失敗,端口沒被占用,怎么會bind失敗呢?

今天在一個服務器上部署一個webserver的時候,提示我bind端口失敗,我習慣性的用netstat看了下,沒有被占用啊!把問題分享出來后,給力的同事們搜索到了ip_local_port_range這個東西這個東西對應的是/proc/sys/net/ipv4/ip…

leetcode面試題 17.15. 最長單詞

給定一組單詞words,編寫一個程序,找出其中的最長單詞,且該單詞由這組單詞中的其他單詞組合而成。若有多個長度相同的結果,返回其中字典序最小的一項,若沒有符合要求的單詞則返回空字符串。 示例: 輸入&am…

Restful API 設計

1. 簡介 目前 "互聯網軟件"從用客戶端/服務端模式,建立在分布式體系上,通過互聯網通訊,具有高延時、高開發等特點。但是軟件開發和網絡是兩個不同的領域,交集很少。要使得兩個融合,就要考慮如何在互聯網環境…

sql行數少于10_如何用少于100行的代碼創建生成藝術

sql行數少于10by Eric Davidson埃里克戴維森(Eric Davidson) 如何用少于100行的代碼創建生成藝術 (How to Create Generative Art In Less Than 100 Lines Of Code) Generative art, like any programming topic, can be intimidating if you’ve never tried it before. I’v…

安裝輸入發

直接在系統 ——系統管理 ——語言支持 選——中文從新啟動 sudo apt-get install scim-pinyin安裝JAVA環境支持 sudo apt-get install sun-java-jre()要是 apt -get 命令不能用 可能是你 的 源有問題 可以 更新一下 在系統 -系統管理 源設置 選這臺灣的 就可以 …

(第2篇)一篇文章教你輕松安裝hadoop

摘要: 這篇文章將會手把手教你安裝hadoop,只要你細心按照文章中的步驟操作,hadoop肯定能正確安裝,絕對不會讓你崩潰 博主福利 給大家贈送一套hadoop視頻課程 授課老師是百度 hadoop 核心架構師 內容包括hadoop入門、hadoop生態架構以及大型ha…

linux cpio到指定目錄,linux cpio命令存取歸檔包中的文件

功能描述使用cpio命令可以通過重定向的方式將文件進行打包備份及還原恢復,它可以解壓縮以“.cpio”或者“.tar”結尾的文件。命令語 法cpio [選項] [目標目錄]選項含義選項含義-o執行 copy-out 模式,建立備份檔。-i執行 copy-in 模式,還原備份…

leetcode劍指 Offer 20. 表示數值的字符串

請實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。例如,字符串"100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示數值,但"12e”、“1a3.14”、“1.2.3”、"…

python接口自動化2-發送post請求

前言 發送post的請求參考例子很簡單,實際遇到的情況卻是很復雜的,首先第一個post請求肯定是登錄了,但登錄是最難處理的。登錄問題解決了,后面都簡單了。 一、查看官方文檔 1.學習一個新的模塊,其實不用去百度什么的&am…

簡介瀏覽器內核與JavaScript引擎

本文介紹了常用瀏覽器內核與JavaScript引擎 一、瀏覽器內核 Rending Engine, 顧名思義,稱之為渲染網頁內容的,將網頁的代碼轉換為你看得見的頁面,因為是排版,所以排版,所以肯定會有排版錯誤等問題。為什么會有排版錯誤…

Linux查看tar實用程序,linux tar指令常用選項

linux的tar指令經常被用到,因為壓縮文件的時候通常需要打包文檔,而tar指令就是打包指令,同時gzip壓縮程序和bzip2壓縮程序都是支持tar指令的,所以tar指令在打包的同時還可以用gzip和bzip進行壓縮,這樣多文件可以打包的…

代碼字體mono_如何構建代碼存儲庫:Multi,Mono或Organic?

代碼字體monoby Chetan Sharma由Chetan Sharma 如何構建代碼存儲庫:Multi,Mono或Organic? (How to Structure Code Repositories: Multi, Mono, or Organic?) The newest debate in town is whether you should keep your services in a si…

leetcode1424. 對角線遍歷 II(排序)

給你一個列表 nums ,里面每一個元素都是一個整數列表。請你依照下面各圖的規則,按順序返回 nums 中對角線上的整數。 示例 1: 輸入:nums [[1,2,3],[4,5,6],[7,8,9]] 輸出:[1,4,2,7,5,3,8,6,9] 代碼 class Solution …

DaVinci各版本安裝指南

鏈接: https://pan.baidu.com/s/1g1kaXZxcw-etsJENiW2IUQ?pwd0531 ? #2024版 1.鼠標右擊【DaVinci_Resolve_Studio_18.5(64bit)】壓縮包(win11及以上系統需先點擊“顯示更多選項”)【解壓到 DaVinci_Resolve_Studio_18.5(64bit)】。 2.打開解壓后的文…

使用 Servlet 讀取表單數據

Technorati 標簽: servlet;java 一、概述 Servlet 有一個比較好的功能就是可以自動處理表單提交的數據。我們只需要調用HttpServletRequest#getParameter(String name),就可以獲得指定參數的值(String),注意此方法是大小寫敏感的。…

linux文檔權限

1、登錄 root 用戶:su - mac一開始進入創建的用戶是具有管理員權限的用戶,但是密碼卻不是進入 root 用戶的密碼,可以使用 sudo su - 免密進入 root 用戶。 2、退出 root 用戶:exit 3、列出檔案(包括隱藏的檔案&#xf…

小程序 仿麥當勞_手機上的麥當勞和星巴克:為什么現在首先使用移動應用程序...

小程序 仿麥當勞by James Hsu由徐H 手機上的麥當勞和星巴克:為什么現在首先使用移動應用程序 (McDonald’s and Starbucks on Your Phone: Why Mobile Apps Are Now First on the Menu) One Friday this July, I got excited about McDonalds. So excited that I s…

MyLinkedList

/*** 節點類* author JP* */ class Node {Object value;//節點元素值Node pre;//上一個節點Node next;//下一個節點public Node(Object value) {this.value value;} }/*** 鏈表類* author JP**/ public class MyLinkedList {Node cur;//目前指向的節點Node head;//頭結點Node …

linux開啟ping服務,Linux 云服務器禁止和開啟Ping

原標題:Linux 云服務器禁止和開啟Ping在使用Linux服務器的時候,一般系統默認是開啟ping的,比如我們可以ping測試網絡的延遲質量。當然也有部分服務商是可以通過安全組設置禁止ping的,我們可以設置安全組對應項目開啟或禁止ping&am…