Rumah pangkalan data tutorial mysql 淘宝曹伟分析低成本、高性能MySQL云数据架构_MySQL

淘宝曹伟分析低成本、高性能MySQL云数据架构_MySQL

Jun 01, 2016 pm 01:39 PM
kos artikel

bitsCN.com

曹伟是淘宝数据库研发组的成员,前不久他在内部分享了低成本、高性能MySQL云数据的架构分析和探索,包括架构的演变过程、系统中的角色和组件等。该文章被褚霸转发在“Erlang非业余研究”上。

在一开始,曹伟指出:

虽然近两年来NoSQL的发展很快,新产品层出不穷,但在业务中应用NoSQL对开发者来说要求比较高,而MySQL拥有成熟的中间件、运维工具,已经形成一个良性的生态圈等,因此从现阶段来看,MySQL占主导性,NoSQL为辅。

接下来,曹伟介绍了他们的工作成果:

我们(阿里集团核心系统数据库团队)……设计和实现了一套UMP(Unified MySQL Platform)系统,提供低成本和高性能的MySQL云数据服务。开发者从平台上申请MySQL实例资源,通过平台提供的单一入口来访问数据,UMP 系统内部维护和管理资源池,以对用户透明的形式提供主从热备、数据备份、迁移、容灾、读写分离、分库分表等一系列服务。平台通过在一台物理机上运行多个 MySQL实例的方式来降低成本,并且实现了资源隔离,按需分配和限制CPU、内存和IO资源,同时支持不影响提供数据服务的前提下根据用户业务的发展动 态的扩容和缩容。

曹伟分析了该系统的架构演变过程:

第一版基于mysql-proxy 0.8版修复若干bug,并对proxy插件中管理用户连接和数据库连接的状态机流程进行一些修改,同时编写Lua脚本实现去中心数据库获取用户认证信息和后台数据库地址,对用户进行验证,建立到后台数据库的连接和转发数据包等逻辑。

图:UMP系统第一版架构

他提到第一版的几个问题:

  1. mysql-proxy 0.8版对多线程的支持比较简单粗暴,导致几个恶劣后果:
    • 造成“惊群”现象,多个线程被唤醒但只有一个线程需要去任务;
    • 任务的CPU亲缘性比较差,在同一个状态机上触发的事件会在多个处理器上来回切换执行;
    • mysql-proxy中还使用了全局Lua锁,同时仅允许一个工作线程执行Lua脚本,因此mysql-proxy多线程模式下的性能远不能同CPU核数保持线性增长,甚至在16核上的性能还不如4核。
    • 以上原因导致单进程模式时,一台物理机上需要部署多个进程才能有效利用机器的处理能力,但给部署、监控和服务的升级带来麻烦。
  2. 其次,限于mysql-proxy的框架,功能上不容易扩展,实现用户的连接数限制、QPS限制、以及主从切换、读写分离、分库分表等一系列功能比较困难。
  3. 最后,mysql-proxy的社区近些年来并不活跃,而且C语言对开发者功底的要求比较高,很难要求团队所有成员协同开发出兼顾优雅和正确性的代码。

因此,他们决定用Erlang重写,原因在于: 

  • 和操作系统的进程/线程相比,Erlang进程同样是并发执行的单位,但特别的轻量级,它是在Erlang虚拟机内管理和调度的“绿进程”,即用户态进程。
  • Erlang/OTP很好的抽象了开发一个分布式的、高容错性的应用程序所需的要素,包括:网络编程框架、序列化和反序列化、容错、热部署。

在设计当前的UMP系统架构时,团队遵循了以下原则:

  • 系统对外保持单一入口,对内维护单一的资源池。
  • 保证服务的高可用性,消除单点故障。
  • 保证系统是弹性可伸缩的,可以动态的增加、删减计算与存储节点。
  • 保证分配给用户的资源也是弹性可伸缩的,资源之间相互隔离。

图:UMP系统现有架构

UMP系统中有如下角色:

  • controller服务器:向UMP集群提供各种管理服务,实现元数据存储、集群成员管理、MySQL实例管理、故障恢复、备份、迁移、扩容等功能。
  • proxy服务器:向用户提供访问MySQL数据库的服务,它完全实现了MySQL协议;除数据路由的基本功能外,Proxy服务器中还实现了资源限制、屏蔽MySQL实例故障、读写分离、分库分表、记录用户访问日志的功能。
  • agent服务器:部署在运行MySQL进程的机器上,用来管理每台物理机上MySQL实例,执行创建、删除、备份、迁移、主从切换等操作,收集和分析MySQL进程的统计信息、bin log、slow query log。
  • API/Web服务器:向用户提供了系统管理界面。它们是基于开源项目Mochiweb与Chicago Boss开发的Mochiweb提供http/https服务。
  • 日志分析服务器:存储和分析Proxy服务器传入的用户访问日志,并实现了实时索引供用户查询一段时间内的慢日志和统计报表。
  • 信息统计服务器:定期将采集到的用户的连接数、QPS数值,以及MySQL实例的进程状态用RRDtool进行统计,可以画图展示到Web界面上,也可以为今后实现弹性的资源分配和自动化的MySQL实例迁移提供依据。

依赖的开源组件有:

  • Mnesia:Mnesia是OTP提供的分布式数据库,支持事务,支持透明的数据分片,利用两阶段锁实现分布式事务,可以线性扩展到至少50个节点。Mnesia更倾向于牺牲可用性来换取强一致性,但它也提供了脏读、脏写操作,可以绕过事务管理去操作数据。
  • LVS:实现负载均衡,用户应用重连后会被LVS定向到其他的proxy上。
  • RabbitMQ:提供UMP系统中各节点间的通信(不包括SQL查询、日志等大数据流的传输,这些还是直接走TCP的)
  • ZooKeeper:主要发挥配置服务器、分布式锁,以及监控所有MySQL实例的作用

对于该系统的作用,曹伟总结到:

在多个组件的协同作业下,整个系统实现了对用户透明的容灾、读写分离、分库分表功能。系统内部还通过多个小规模用户共享同一个MySQL实例,中等 规模用户独占一个MySQL实例,多个MySQL实例共享同一个物理机的方式实现资源的虚拟化,降低整体成本。在资源隔离方面,通过Cgroup限制 MySQL进程资源,以及在proxy服务器端限制QPS相结合的方法,UMP系统实现了资源虚拟化的同时保障用户的服务质量。此外,UMP系统综合运用 SSL数据库连接、数据访问IP白名单、记录用户操作日志、SQL拦截等技术保护用户的数据安全。

对于该系统的应用,曹伟指出:

UMP系统的一些组件,例如proxy服务器和日志分析服务器,目前已经运用在天猫的聚石塔平台中,为电商和ISV提供安全的数据云服务。此 外,UMP系统还运用在淘宝的店铺装修平台中,为开发者提供数据服务。下一阶段,我们希望UMP系统可以为进一步降低集团内部数据存储的成本做出贡献。

bitsCN.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah saya boleh membuat wang dengan menerbitkan artikel di Toutiao hari ini? Bagaimana untuk mendapatkan lebih banyak pendapatan dengan menerbitkan artikel di Toutiao hari ini! Bagaimanakah saya boleh membuat wang dengan menerbitkan artikel di Toutiao hari ini? Bagaimana untuk mendapatkan lebih banyak pendapatan dengan menerbitkan artikel di Toutiao hari ini! Mar 15, 2024 pm 04:13 PM

1. Bagaimanakah anda boleh membuat wang dengan menerbitkan artikel di Toutiao hari ini? Bagaimana untuk mendapatkan lebih banyak pendapatan dengan menerbitkan artikel di Toutiao hari ini! 1. Aktifkan hak dan kepentingan asas: Artikel asal boleh memperoleh keuntungan melalui pengiklanan dan video mestilah asli dalam mod skrin mendatar untuk memperoleh keuntungan. 2. Aktifkan hak 100 peminat: jika bilangan peminat mencecah 100 peminat ke atas, anda boleh mendapat keuntungan daripada tajuk mikro, ciptaan Soal Jawab asal dan Soal Jawab. 3. Menegaskan karya asli: Karya asal termasuk artikel, tajuk mikro, soalan, dsb., dan dikehendaki melebihi 300 patah perkataan. Sila ambil perhatian bahawa jika karya yang diciplak secara haram diterbitkan sebagai karya asli, mata kredit akan ditolak, malah sebarang keuntungan akan ditolak. 4. Ketegakan: Apabila menulis artikel dalam bidang profesional, anda tidak boleh menulis artikel merentas bidang sesuka hati Anda tidak akan mendapat cadangan yang sesuai, anda tidak akan dapat mencapai profesionalisme dan ketepatan kerja, dan sukar untuk menarik peminat. dan pembaca. 5. Aktiviti: aktiviti tinggi,

Peta hala tuju menunjukkan arah aliran AI 'menggantikan' pekerjaan manusia Peta hala tuju menunjukkan arah aliran AI 'menggantikan' pekerjaan manusia Jan 04, 2024 pm 04:32 PM

Saya melihat gambar menarik semalam iaitu "peta aras AI menggantikan laluan manusia". Seperti yang ditunjukkan dalam gambar, permainan ini dibahagikan kepada enam tahap berbeza, dari E1 hingga E8+. Kita boleh perhatikan daripada angka bahawa kecerdasan buatan (AI) menggantikan aplikasi manusia dalam bidang yang berbeza. Laluan medan aplikasi kecerdasan buatan ditentukan oleh kadar toleransi kesalahannya. Ringkasnya, toleransi kesilapan di sini merujuk kepada kos percubaan dan kesilapan. AI secara beransur-ansur akan menggantikan industri dengan kadar toleransi ralat yang lebih tinggi hingga lebih rendah dan secara beransur-ansur "menggantikan" pekerjaan manusia. Dahulu kita sering beranggapan bahawa karya kreatif bergantung kepada pemikiran manusia dan tidak mudah diganti. Walau bagaimanapun, dengan perkembangan kecerdasan buatan, pandangan ini nampaknya tidak sepenuhnya betul. Pekerjaan kreatif selalunya tidak mempunyai jawapan tetap

AI Generatif dalam awan: Bina atau beli? AI Generatif dalam awan: Bina atau beli? Dec 19, 2023 pm 08:15 PM

Disusun oleh David Linsigao |. Produk yang dihasilkan oleh Yanzheng 51CTO Technology Stack (WeChat ID: blog51cto) Terdapat peraturan tidak bertulis dalam bidang teknologi: semua orang suka menggunakan teknologi orang lain. Tetapi untuk kebanyakan perniagaan, AI generatif nampaknya tidak sesuai dengan acuan itu dengan pantas AI Generatif memacu beberapa keputusan kritikal. Setiap organisasi menghadapi pilihan penting: sama ada untuk membina platform AI generatif tersuai secara dalaman atau membeli penyelesaian yang telah dibungkus daripada vendor AI (selalunya ditawarkan sebagai perkhidmatan awan yang mengutamakan volum dan peluang DIY). Ia pelik, tetapi sebabnya mungkin mengejutkan anda. Mereka mungkin membawa anda untuk memikirkan semula strategi genAI perusahaan anda 1. Lengkapkan penyesuaian dan kawalan Tulis semula kandungan seperti berikut: Bina

Algoritma pemampatan 100 bilion model pertama SparseGPT ada di sini, mengurangkan kos kuasa pengkomputeran sambil mengekalkan ketepatan yang tinggi Algoritma pemampatan 100 bilion model pertama SparseGPT ada di sini, mengurangkan kos kuasa pengkomputeran sambil mengekalkan ketepatan yang tinggi Apr 12, 2023 pm 01:01 PM

Sejak kemunculan GPT-3 pada tahun 2020, populariti ChatGPT sekali lagi membawa model bahasa berskala besar generatif keluarga GPT menjadi perhatian, dan mereka telah menunjukkan prestasi yang kukuh dalam pelbagai tugas. Walau bagaimanapun, skala besar model juga membawa peningkatan kos pengiraan dan peningkatan kesukaran penggunaan. Sebagai contoh, model GPT‑175B berjumlah sekurang-kurangnya 320GB storan dalam format separuh ketepatan (FP16) dan memerlukan sekurang-kurangnya lima GPU A100 dengan storan 80 GB untuk inferens. Pemampatan model pada masa ini merupakan kaedah yang biasa digunakan untuk mengurangkan kos pengiraan model besar, tetapi setakat ini, hampir semua yang sedia ada.

Bagaimana untuk menambah artikel dalam HTML5? Bagaimana untuk menambah artikel dalam HTML5? Sep 12, 2023 am 11:37 AM

Dalam artikel ini, kita akan belajar cara menambah artikel dalam HTML5. Salah satu elemen pembahagian baharu dalam HTML5 ialah teg. Artikel diwakili dalam HTML menggunakan tag. Lebih khusus lagi, kandungan yang terkandung dalam elemen adalah berbeza daripada kandungan tapak yang lain (walaupun ia mungkin berkaitan). Mari kita pertimbangkan contoh berikut untuk memahami cara menambah artikel dalam HTML5 Contoh 1 Dalam contoh berikut, kami menggunakan gaya sebaris dalam elemen artikel. <!DOCTYPEhtml><html><body><articlestyle="width:300px;border:2pxsolidgray;padding:

Tafsiran artikel baharu Vitalik: Mengapa Rollup, yang ruang gumpalannya tidak digunakan dengan cekap, mengalami kesukaran pembangunan? Tafsiran artikel baharu Vitalik: Mengapa Rollup, yang ruang gumpalannya tidak digunakan dengan cekap, mengalami kesukaran pembangunan? Apr 01, 2024 pm 08:16 PM

Bagaimana untuk memahami pemikiran artikel baru @VitalikButerin tentang pengembangan Ethereum? Sesetengah orang mengatakan bahawa pesanan Vitalik untuk Blob Inscription adalah keterlaluan. Jadi bagaimana paket blob berfungsi? Mengapakah ruang gumpalan tidak digunakan dengan cekap selepas naik taraf di Cancun? Persampelan ketersediaan data DAS sebagai persediaan untuk sharding? Pada pendapat saya, prestasi Cancun boleh digunakan selepas naik taraf, dan Vitalik bimbang tentang perkembangan Rollup. kenapa? Seterusnya, izinkan saya bercakap tentang pemahaman saya: Seperti yang dijelaskan berkali-kali sebelum ini, Blob ialah pakej data sementara yang dipisahkan daripada data panggilan EVM dan boleh dipanggil terus oleh lapisan konsensus Manfaat langsung ialah EVM tidak perlu mengakses Blob apabila melaksanakan data urus niaga, dengan itu mengakibatkan pengiraan lapisan pelaksanaan yang lebih rendah

Kaedah terperinci untuk menghantar artikel dan rakaman pada masa yang sama melalui WeChat Kaedah terperinci untuk menghantar artikel dan rakaman pada masa yang sama melalui WeChat Mar 26, 2024 am 09:16 AM

1. Buka telefon anda, klik pada perisian WeChat, dan masukkan tetapan halaman utama WeChat. 2. Cari [Saya] di penjuru kanan sebelah bawah WeChat, bukanya dan masukkan halaman [Saya]. 3. Klik Koleksi dan kemudian buka halaman baharu.

Program C++ untuk mengira jumlah kos yang diperlukan untuk robot menyelesaikan perjalanan dalam grid Program C++ untuk mengira jumlah kos yang diperlukan untuk robot menyelesaikan perjalanan dalam grid Aug 25, 2023 pm 04:53 PM

Katakan kita mempunyai grid saiz hxw. Setiap sel dalam grid mengandungi integer positif. Kini terdapat robot mencari laluan yang diletakkan pada sel tertentu (p,q) (di mana p ialah nombor baris dan q ialah nombor lajur) dan ia boleh bergerak ke sel (i,j). Operasi bergerak mempunyai kos khusus bersamaan dengan |p-i|+|q-j|. Kini terdapat perjalanan q dengan sifat berikut. Setiap perjalanan mempunyai dua nilai (x, y) dan mempunyai nilai sepunya d. Robot diletakkan pada sel dengan nilai x dan kemudian bergerak ke sel lain dengan nilai x+d. Kemudian ia bergerak ke sel lain dengan nilai x+d+d. Proses ini akan berterusan sehingga robot mencapai sel dengan nilai lebih besar daripada atau sama dengan y. y-x ialah gandaan bagi d

See all articles