데이터 베이스 MySQL 튜토리얼 淘宝曹伟分析低成本、高性能MySQL云数据架构_MySQL

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

Jun 01, 2016 pm 01:39 PM
비용 기사

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
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

오늘 Toutiao에 기사를 게시하여 어떻게 돈을 벌 수 있나요? 오늘 Toutiao에 기사를 게시하여 더 많은 수입을 얻는 방법! 오늘 Toutiao에 기사를 게시하여 어떻게 돈을 벌 수 있나요? 오늘 Toutiao에 기사를 게시하여 더 많은 수입을 얻는 방법! Mar 15, 2024 pm 04:13 PM

1. 오늘 Toutiao에 기사를 게시하여 어떻게 돈을 벌 수 있습니까? 오늘 Toutiao에 기사를 게시하여 더 많은 수입을 얻는 방법! 1. 기본 권익 활성화: 기사의 원본은 광고를 통해 수익을 얻을 수 있으며, 동영상은 가로 화면 모드에서 원본이어야 수익을 얻을 수 있습니다. 2. 팬 100명 권리 활성화: 팬 수가 100명 이상에 도달하면 마이크로 헤드라인, 오리지널 Q&A 작성, Q&A 수익을 얻을 수 있습니다. 3. 독창적인 작품을 고집하라: 독창적인 작품에는 기사, 마이크로 헤드라인, 질문 등이 포함되며, 300단어 이상이어야 합니다. 불법 표절 저작물을 원작으로 출판할 경우 크레딧 점수가 차감되며, 수익금도 차감되므로 주의하시기 바랍니다. 4. 수직성: 전문 분야에서 기사를 작성할 때 분야를 넘나들며 마음대로 기사를 작성할 수 없으며 적절한 추천을 받을 수 없으며, 작품의 전문성과 정확성을 확보할 수 없으며 팬을 유치하기가 어렵습니다. 그리고 독자들. 5. 활동: 높은 활동,

로드맵은 AI가 인간 직업을 '대체'하는 추세를 보여줍니다. 로드맵은 AI가 인간 직업을 '대체'하는 추세를 보여줍니다. Jan 04, 2024 pm 04:32 PM

어제 '인간의 길을 대체하는 AI 레벨맵'이라는 흥미로운 사진을 봤습니다. 그림에서 볼 수 있듯이 게임은 E1부터 E8+까지 6가지 레벨로 구분됩니다. 우리는 인공지능(AI)이 다양한 분야에서 인간의 응용 프로그램을 대체하고 있음을 그림에서 볼 수 있습니다. 인공지능의 적용 분야 경로는 내결함성 비율에 따라 결정됩니다. 간단히 말해서, 여기서 오류 허용 오차는 시행착오의 비용을 의미합니다. AI는 점차적으로 오류 허용 비율이 높거나 낮은 산업을 대체하고 점차적으로 인간 직업을 "대체"할 것입니다. 과거에 우리는 창의적인 작업이 인간의 사고에 의존하고 쉽게 대체되지 않는다고 종종 생각했습니다. 그러나 인공지능의 발달로 인해 이러한 견해는 완전히 옳은 것 같지는 않다. 창의적인 직업에는 정해진 답이 없는 경우가 많습니다

최초의 1000억 모델 압축 알고리즘인 SparseGPT가 출시되어 높은 정확도를 유지하면서 컴퓨팅 전력 비용을 절감합니다. 최초의 1000억 모델 압축 알고리즘인 SparseGPT가 출시되어 높은 정확도를 유지하면서 컴퓨팅 전력 비용을 절감합니다. Apr 12, 2023 pm 01:01 PM

2020년 GPT-3이 등장한 이후 ChatGPT의 인기로 인해 GPT 제품군의 생성적 대규모 언어 모델이 다시 한 번 주목을 받았으며 다양한 작업에서 강력한 성능을 보여주었습니다. 그러나 모델의 규모가 크면 계산 비용도 증가하고 배포 난이도도 높아집니다. 예를 들어, GPT‑175B 모델은 반정밀도(FP16) 형식으로 총 저장 공간이 최소 320GB이므로 추론을 위해 80GB 저장 공간을 갖춘 A100 GPU가 5개 이상 필요합니다. 모델 압축은 현재 대형 모델의 계산 비용을 줄이기 위해 일반적으로 사용되는 방법이지만 현재까지 거의 모든 기존

클라우드의 생성적 AI: 구축 또는 구매? 클라우드의 생성적 AI: 구축 또는 구매? Dec 19, 2023 pm 08:15 PM

David Linsigao 작성 | Yanzheng 51CTO Technology Stack에서 제작한 제품(WeChat ID: blog51cto) 기술 분야에는 암묵적인 규칙이 있습니다. 모든 사람은 다른 사람의 기술을 사용하는 것을 좋아합니다. 그러나 많은 기업에서 생성적 AI는 이러한 틀에 맞지 않는 것 같습니다. 모든 조직은 사내에서 맞춤형 생성 AI 플랫폼을 구축할지 아니면 AI 공급업체(종종 클라우드 서비스로 제공)에서 사전 패키지된 솔루션을 구매할지 여부와 같은 중요한 선택에 직면합니다. 이상하지만 그 이유가 여러분을 놀라게 할 수도 있습니다. 엔터프라이즈 genAI 전략을 다시 생각하게 만들 수도 있습니다. 1. 완벽한 사용자 정의 및 제어 콘텐츠를 다음과 같이 다시 작성하세요.

Vitalik의 새 기사 해석: Blob 공간이 효율적으로 사용되지 않는 Rollup이 개발 어려움에 빠지는 이유는 무엇입니까? Vitalik의 새 기사 해석: Blob 공간이 효율적으로 사용되지 않는 Rollup이 개발 어려움에 빠지는 이유는 무엇입니까? Apr 01, 2024 pm 08:16 PM

Ethereum의 확장에 대한 @VitalikButerin의 새 기사 생각을 어떻게 이해합니까? 어떤 사람들은 Vitalik의 Blob Inscription 주문이 터무니없다고 말합니다. 그렇다면 Blob 패킷은 어떻게 작동합니까? 칸쿤에서 업그레이드한 후 Blob 공간이 효율적으로 사용되지 않는 이유는 무엇입니까? 샤딩 준비를 위한 DAS 데이터 가용성 샘플링? 제 생각엔 칸쿤의 성능은 업그레이드 이후에 쓸만할 것 같은데, 비탈릭은 롤업의 발전을 고민하고 있습니다. 왜? 다음으로 내 이해에 대해 이야기하겠습니다. 이전에 여러 번 설명했듯이 Blob은 EVM 호출 데이터에서 분리되어 합의 계층에서 직접 호출할 수 있는 임시 데이터 패키지입니다. 직접적인 이점은 EVM이 Blob에 액세스할 필요가 없다는 것입니다. 트랜잭션을 실행할 때 실행 계층 계산이 낮아집니다.

위챗을 통해 기사와 녹음을 동시에 보내는 세부 방법 위챗을 통해 기사와 녹음을 동시에 보내는 세부 방법 Mar 26, 2024 am 09:16 AM

1. 휴대폰을 열고 WeChat 소프트웨어를 클릭한 후 WeChat 홈페이지 설정으로 들어갑니다. 2. 위챗 우측 하단의 [내]를 찾아 열어 [내] 페이지로 들어갑니다. 3. 컬렉션을 클릭한 후 새 페이지를 엽니다.

HTML5에 기사를 추가하는 방법은 무엇입니까? HTML5에 기사를 추가하는 방법은 무엇입니까? Sep 12, 2023 am 11:37 AM

이번 글에서는 HTML5에 글을 추가하는 방법에 대해 알아보겠습니다. HTML5의 새로운 분할 요소 중 하나는 태그입니다. 기사는 태그를 사용하여 HTML로 표시됩니다. 보다 구체적으로 말하면 요소 내에 포함된 콘텐츠는 사이트의 나머지 콘텐츠와 다릅니다(관련이 있을 수 있음에도 불구하고). HTML5에 기사를 추가하는 방법을 이해하기 위해 다음 예를 고려해 보겠습니다. 예 1 다음 예에서는 기사 요소에 인라인 스타일을 사용하고 있습니다. <!DOCTYPEhtml><html><body><articlestyle="width:300px;border:2pxsolidgray;padding:

로봇이 그리드에서 이동을 완료하는 데 필요한 총 비용을 계산하는 C++ 프로그램 로봇이 그리드에서 이동을 완료하는 데 필요한 총 비용을 계산하는 C++ 프로그램 Aug 25, 2023 pm 04:53 PM

hxw 크기의 그리드가 있다고 가정합니다. 그리드의 각 셀에는 양의 정수가 포함되어 있습니다. 이제 특정 셀(p, q)(p는 행 번호, q는 열 번호)에 길찾기 로봇이 배치되어 해당 셀(i, j)로 이동할 수 있습니다. 이동 작업의 특정 비용은 |p-i|+|q-j|와 같습니다. 이제 다음 속성을 가진 q개의 여행이 있습니다. 각 여행에는 두 가지 값(x, y)과 공통 값 d가 있습니다. 로봇은 x 값을 가진 셀에 배치된 다음 x+d 값을 가진 다른 셀로 이동합니다. 그런 다음 x+d+d 값을 가진 다른 셀로 이동합니다. 이 과정은 로봇이 y보다 크거나 같은 값을 갖는 셀에 도달할 때까지 계속됩니다. y-x는 d의 배수입니다

See all articles