【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

百度技术沙龙第 12 期内容回顾:大型网站数据库架构设计和性能优化

  • 2011-03-21
  • 本文字数:3045 字

    阅读完需:约 10 分钟

在刚刚结束的第 12 期百度技术沙龙,我们邀请到了百度运维部高级 DBA 经理王龙和飞信互联网产品首席架构师孙朝晖,分别向大家分享了百度数据库架构演变与设计,以及 Mysql HandleSocket 在动态数据存储中的应用的技术话题。本文对这次百度技术沙龙内容做简单的回顾与总结。

百度数据库架构演变与设计点击进入相关音视频、文字资料下载页面

在演讲中,百度运维部的高级 DBA 经理王龙和大家分享了百度在数据库架构设计上的演变过程。百度的数据库架构体系总共分为三个阶段:

2005 年 -2008 年:分散式数据库结构 这一阶段是被动满足业务需求阶段,其特点是业务单一、单机单业务服务、无交叉关联、简单 Replication 机制、依赖硬件,数据的存储和管理均由单机实现。

2008 年 -2010 年:集中式数据库结构

这一阶段主要重点是放在了数据库管理和存储上。特点是集群易扩展,功能多;数据存储与应用分离;数据库结构各异,业务连接和使用方式各异。

2010 年至今:分布式数据库结构

其特点是不仅关注存储和管理,并且把应用也注重起来,提供透明应用和策略的数据库服务; 自动扩容、节点自动分裂与合并。

王龙的分享分为三个部分:

● 百度数据库架构综述:业务概念、业务接口、业务规则 ● 百度数据库三阶:分散式、集中式、分布式

● 百度数据库挑战

演讲的开始王龙简单介绍了三种不同数据库的概念:

分散式系统是指运行在同一台服务器上,为单一产品线或业务提供服务的数据库系统,不与其他系统有交互。 集中式系统是指运行在同一台服务器上,为多系统提供业务服务的数据库系统,不与其他系统有交互。多为架构调整和性能需求,主要运行在高性能和高稳定的服务器上。

分布式系统使数据库资源充分共享,包括数据和服务器资源,这种将部件或功能分布到不同计算机系统和不同位置的方法一般称为分布式计算。

本次分享重点介绍了百度在不同的发展阶段,采取不同的数据库架构方式和设计思路。最后王龙提到了简单介绍了目前在数据库架构、性能、传输、安全以及服务方面的挑战。

MySQL HandleSocket 技术在 SNS Feed 存储中的应用点击进入音视频、文字资料下载页面

孙朝晖主要为大家分享了他们在 SNS Feed 存储中使用 Mysql HandleSocket 技术的实践经验。

MySQL HandleSocket 技术大家可能很少了解,实践应用据我所知也没见有人用过,我们其实主要用它来处理 NoSQL 技术。其实我今天的主要话题也是 NoSQL 技术,只是我没有用大家熟悉的 HBase 等去实现,而用 MySQL 实现的。

分享内容主要是以下几个部分:

● SNS Feed 应用的主要挑战 ● NoSQL 在 Feed 存储中的应用状况

● MySQL HandleSocket 的技术架构

● MySQL HandleSocket 协议

● MySQL HandleSocket 在飞信开放平台中的应用

在演讲中,孙朝晖提到,SNS Feed 面对的主要问题就是数据量大,更新快。并介绍了 SNS Feed 面临的挑战:

● 数据写入操作密集,高频度,小数据量 ● 读操作访问压力大,读写比高

● 高活跃用户带来的数据快速失效问题(在微博类应用尤其突出)

● 用户体验要求快速被前端感知

● 数据分区存储成为必然选项

● 数据具有时效性,LRU 数据清洗成为必然工作

然后详细介绍了 SNS Feed 的数据架构和技术优势,并把 MySQL HandleSocket 和 MongoDB 做了比较。

OpenSpace

同样在沙龙最后一个环节,我们分成了六个话题小组,小组话题发起分别由我们的两位讲师、我们邀请的嘉宾,新浪 DBA 杨海朝和现场提出话题的三位参会者担任,并在讨论之后跟大家做了分享:

● 沙龙讲师王龙:数据库一致性的保障

我们会从两个角度考虑,一个是正面保障它不出问题,第二个是出问题后如何去修复。在不出问题的时候,也要从硬件和软件两个角度去看。从硬件来说主要是像底层的存储类似的常用技术。但是也要考虑一个问题,因为无论如何都是要通过通信传输的,那通信如何保障?比如像采用光纤这种情况。从软件角度,主要考虑两种情况,从前端应用去保障和数据库本地保障。 如果是出问题以后,我们一是按照传统的方式是从日历里去做数据结构解析,或者做前端数据的分解或关联关系映射,另一种情况就是保证数据完整不流失的情况下去解析数据结构。

● 沙龙讲师孙朝晖:NoSQL 在 Feed 中应用争论点

主要是围绕在 SNS 弱一致性前提下如何提高数据库的性能,其实在放弃一些对用户体验影响非常小的点,虽然看似不合理,其实会在不影响用户体验的情况下把性能提升很多。 刚才有人问我说在推拉结合的前提下怎么去做分页,我认为不用去追求每次分页数量的精确性,把这一点放下去的话,性能起码能够提升 10 倍以上,其实还有很多这样的需求,比如分发前端并发连接的时候,让保持长连接和短连接的 Web 请求分布在不同的 Web 服务器上,这样,在仅能影响一部分用户的情况下,性能也会提升很多。

总之我们的话题总结出来,就是说 SNS 的应用,尤其 SNS Feed 的应用,不必要求像电子商务数据那样百分之百精确,有很多小的点,舍弃一点点用户体验,一点用户察觉不到的体验,能让系统成本降低很多,这里有很多可挖掘的空间。

● 沙龙嘉宾杨海朝:高并发 MySQL 的架构设计

主要是和大家分享了一下高并发架构设计的话题,讨论在实时性要求很高的场合中,MySQL 遇到高并发写入时如何通过架构去解决它的 slave 延时的问题。 传统的方式是通过对写进行分片,分散到多台物理机上,多台机器承担写操作。但这种方式对多个表之间有强 ACID 的场合不太适合,前期通过提高主库的硬件性能,master 不能进行拆分,slave 采用链条策略把不同的表拆分到不同组的机器上,这样每组集群中同步的数据量变小,在一定的时间内缓解了延时问题。但随着量的增加,需要采用 NOCAP 原则把数据写入内存,两份内存互相同步,内存中的数据再异步到持久化存储中,保证达到一个非常高的并发,同时不损失一致性和扩展性的问题。

● 参会者张成斌:消息队列的应用

我们讨论是一个消息队列解决方案的话题:假设客户端性能非常高,如何实现客户的请求通过服务器端调度,在客户端处理,然后呈现在 Web 界面上,对此我们讨论出了一个模型: 比如说我们的页面有加减乘除的处理,然后可能有 a、b、c、d……很多客户,他们把请求传到服务器端,服务器端会把消息包发送到各地的客户端处理后再返给服务器,传给页面。我们小组主要讨论了前面列出的客户相关的实时性、异常处理、路径、程序以及消息的保护等问题,并提出了几个方案,对于实时性,我们需要维护客户端心跳数据来优化调度,对于异常我们不做处理,客户得不到他要的数据可以多次刷新几次;最优路径还是通过这个心跳数据和客户端 CPU 资源评估得出综合分数,对于消息的保护我们会通过非对称密钥去保护我们对称密钥的交换,利用对称密钥保护消息的通讯。

● 参会者王炳山:云计算在脱机业务中的应用

我的话题是一个云计算的话题,可能在今天关注的人不多,虽然没有完全解决掉自己的问题,但是还是从讨论中得到一些收获,以后期望有机会能继续和大家分享这个话题。

● 最后一个小组讨论的话题是:SNS Game 千万量级用户 DB 架构设计

我主要是介绍了我们公司的一个情况:在用户量增长的情况下要经常不断的停机,这样做的成本比较高,相对来说也不太安全。目前业内做的比较好的也能做到平滑升级的,刚才有个朋友说数据库加个中间层可能会解决这个问题,我们公司现在在尝试 NoSQL 的方式。

参会者博客

和往常一样,也有参会者在会后写博客谈到了自己在本期百度技术沙龙中的收获。如有热心参会者 CSDN 论坛中对第十二期百度技术沙龙做了介绍,上传了本期沙龙的一些照片和大家分享。颇受其他用户热议。大家可以点击进入大型网站数据库架构设计和性能优化查看。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2011-03-21 12:375702
用户头像

发布了 1397 篇内容, 共 619.8 次阅读, 收获喜欢 2452 次。

关注

评论

发布
暂无评论
发现更多内容

低代码与鸿蒙开发:重塑软件开发的未来

不在线第一只蜗牛

低代码 鸿蒙开发 鸿蒙系统

如何关闭Windows自动更新

霍格沃兹测试开发学社

聊聊CWE 4.14 与 ISA/IEC 62443中,如何保障工业软件的安全性

华为云开发者联盟

安全 开发 华为云 华为云开发者联盟 工业软件

Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%

SelectDB

数据库 大数据 查询性能 物化视图 #数据分析

业界首份 GitLab DevSecOps 线上成熟度评估邀您来测

极狐GitLab

LLVM编译报错解决:collect2: fatal error: ld terminated with signal 9 [Killed]

百度搜索:蓝易云

云计算 Linux 运维 云服务器 ECS

人工智能的本质是编程+数学吗?

算法的秘密

MySQL安装最全最简教程

霍格沃兹测试开发学社

10个AI人工智能PPT生成软件,轻松搞定PPT制作!

彭宏豪95

人工智能 在线白板 AIGC 效率软件 AI生成PPT

Easysearch 内核完善之 OOM 内存溢出优化案例一则

极限实验室

elasticsearch OOM 内存 easysearch

Mysql join加多条件与where的区别

百度搜索:蓝易云

MySQL 云计算 Linux 运维 云服务器

2024北京国际智能机器人展览会

AIOTE智博会

机器人展 智能机器人展

低代码与前端框架:现代软件开发的新黄金搭档

快乐非自愿限量之名

软件开发 低代码 前端框架

「2024」不再内卷,让AI低代码带你玩点新花样!

优秀

AI 低代码 AI低代码 AI 人工智能

✅inventory hint,解决热点数据如何高效更新

派大星

:MySQL 数据库 java 编程 热点数据

继续总结Python中那些简单好用的用法

快乐非自愿限量之名

Python windows 开发语言

ElasticSearch架构介绍及原理解析

霍格沃兹测试开发学社

Vue3 - 插槽 Slots

霍格沃兹测试开发学社

度小满轩辕:金融行业的大模型实战派

脑极体

AI

ChatGPT是什么意思?从产品简介、替代软件到应用场景等全方位解读!

彭宏豪95

人工智能 在线白板 AIGC ChatGPT 效率软件

两会热议高质量发展 华大北斗用芯领航

江湖老铁

100M 768 维向量数据,Zilliz Cloud 稳定支持 Shulex VOC 业务场景

Zilliz

AI Zilliz 向量数据库 zillizcloud

Java HashMap 和 HashSet 的高效使用技巧

小万哥

Java 程序人生 编程语言 软件工程 后端开发

四种领导风格的大白话理解

芃篙君

管理

re:Invent 产品体验与感受分享:Amazon ElastiCache Serverless 缓存的即时扩展

亚马逊云科技 (Amazon Web Services)

Serverless

解决Java中文显示乱码问题的原因与方案

霍格沃兹测试开发学社

Docker cp命令详解:在Docker容器和主机之间复制文件/文件夹

霍格沃兹测试开发学社

嘿!AI 编码新玩法上线!

阿里巴巴云原生

阿里云 AI 云原生

官宣!前联邦快递亚太区董事总经理 Robin 加入 Tapdata 担任首席运营官

tapdata

数据库

IO模型介绍(select、poll、epoll)

京东零售技术

Java 后端 io

如何修复MySQL中损坏的表

百度搜索:蓝易云

MySQL 云计算 Linux 运维 云服务器

百度技术沙龙第12期内容回顾:大型网站数据库架构设计和性能优化_数据库_InfoQ 中文站_InfoQ精选文章