上一页 1 2 3 4 5 6 ··· 9 下一页
摘要: 你好,我是李智慧。 在一个应用系统运行过程中,需要记录、传输很多数据,这些数据有的是非常敏感的,比如用户姓名、手机号码、密码、甚至信用卡号等等。这些数据如果直接存储在数据库,记录在日志中,或者在公网上传输的话,一旦发生数据泄露,不但可能会产生重大的经济损失,还可能会使公司陷入重大的公关与法律危机。公 阅读全文
posted @ 2023-05-04 15:01 程序杰杰 阅读(526) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 Web应用防火墙(Web Application Firewall, WAF)通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击、跨站请求伪造等攻击,保护Web服务安全稳定。 Web安全是所有互联网应用必须具备的功能,没有安全防护的应用犹如怀揣珠宝的儿童独自行走 阅读全文
posted @ 2023-05-04 15:01 程序杰杰 阅读(553) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 互联网应用是面向一般大众的应用系统,他们可能会随时需要使用应用,那么应用就必须要保持随时可用,即所谓的$small 7times24$小时可用。但是互联网应用又可能会遇到硬件故障、软件故障、黑客攻击等等各种不可用的场景。 业界通常用多少个9来说明互联网应用的可用性。比如说淘宝的可 阅读全文
posted @ 2023-05-04 15:00 程序杰杰 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 在互联网高可用架构设计中,限流是一种经典的高可用架构模式。因为某些原因,大量用户突然访问我们的系统时,或者有黑客恶意用DoS(Denial of Service,拒绝服务)方式攻击我们的系统时,这种未曾预期的高并发访问对系统产生的负载压力可能会导致系统崩溃。 解决这种问题的一个主 阅读全文
posted @ 2023-05-04 15:00 程序杰杰 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 百科知识应用网站是互联网应用中一个重要的类别。很多人上网是为了获取知识,而互联网上的信息良莠并存,相对说来,百科知识应用网站能为普通人提供较为可信的信息。因此,百科知识网站虽然功能单一、设计简单,但是依然撑起了互联网的一片天空:维基百科是全球访问量TOP10的网站,百度百科是百度 阅读全文
posted @ 2023-05-04 14:59 程序杰杰 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 我们在讨论高性能架构之前,需要先聊聊什么叫高性能,以及如何量化地测试系统的性能。在02讲中,我们讨论了一些和并发相关的指标。事实上,并发数正是系统性能的核心指标之一,因为高并发会引起系统资源短缺,来不及处理用户请求,就会导致系统性能下降。 除了系统并发数,一般说来,和系统性能相关 阅读全文
posted @ 2023-05-04 14:59 程序杰杰 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 反应式编程本质上是一种异步编程方案,在多线程(协程)、异步方法调用、异步I/O访问等技术基础之上,提供了一整套与异步调用相匹配的编程模型,从而实现程序调用非阻塞、即时响应等特性,即开发出一个反应式的系统,以应对编程领域越来越高的并发处理需求。 反应式系统应该具备如下的4个特质。 阅读全文
posted @ 2023-05-04 14:58 程序杰杰 阅读(90) 评论(0) 推荐(1) 编辑
摘要: 你好,我是李智慧。 在04讲中,我们讨论了大型分布式网络爬虫的架构设计,但是网络爬虫只是从互联网获取信息,海量的互联网信息如何呈现给用户,还需要使用搜索引擎完成。因此,我们准备开发一个针对全网内容的搜索引擎,产品名称为“Bingoo”。 Bingoo的主要技术挑战包括: 针对爬虫获取的海量数据,如何 阅读全文
posted @ 2023-05-04 14:58 程序杰杰 阅读(97) 评论(0) 推荐(1) 编辑
摘要: 你好,我是李智慧。 交友与婚恋是人们最基本的需求之一。随着互联网时代的不断发展,移动社交软件已经成为了人们生活中必不可少的一部分。然而,熟人社交并不能完全满足年轻人的社交与情感需求,于是陌生人交友平台悄然兴起。 我们决定开发一款基于地理位置服务(LBS)的应用,为用户匹配邻近的、互相感兴趣的好友,应 阅读全文
posted @ 2023-05-04 14:57 程序杰杰 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 秒杀是电子商务应用常见的一种营销手段:将少量商品(常常只有一件)以极低的价格,在特定的时间点出售。比如,周日晚上8点整,开售1部1元钱的手机。 因为商品价格诱人,而且数量有限,所以用户趋之若鹜,在秒杀活动开始前涌入系统, 等到秒杀活动开始的一瞬间,点下购买按钮(在此之前购买按钮为 阅读全文
posted @ 2023-05-04 14:56 程序杰杰 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 在这个模块的几个案例中,我们都需要处理海量的数据,需要用到海量的存储介质,其实海量数据本质上就是一种磁盘资源敏感的高并发场景。 我们说过,为了应对资源不足的问题,我们常采用水平伸缩,即分布式的方案。数据存储的分布式问题是所有分布式技术中最具挑战性的,因为相对于“无状态”(stat 阅读全文
posted @ 2023-05-04 14:56 程序杰杰 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 短视频(short video)通常时长在15分钟以内,主要是在移动智能终端上进行拍摄、美化编辑或加特效,并可以在网络社交平台上进行实时分享的一种新型视频形式。短视频具有时间短、信息承载量高等特点,更符合当下网民手机使用行为习惯,短视频的用户流量创造了巨大的商机。 我们准备开发一 阅读全文
posted @ 2023-05-04 14:55 程序杰杰 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 网盘,又称云盘,是提供文件托管和文件上传、下载服务的网站(File hosting service)。人们通过网盘保管自己拍摄的照片、视频,通过网盘和他人共享文件,已经成为了一种习惯。我们准备开发一个自己的网盘应用系统,应用名称为“DBox”。 十几年前曾经有个段子,技术人员对老 阅读全文
posted @ 2023-05-04 14:55 程序杰杰 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 在互联网早期,网络爬虫仅仅应用在搜索引擎中。随着大数据时代的到来,数据存储和计算越来越廉价和高效,越来越多的企业开始利用网络爬虫来获取外部数据。例如:获取政府公开数据以进行统计分析;获取公开资讯以进行舆情和热点追踪;获取竞争对手数据以进行产品和营销优化等等。 网络爬虫有时候也被称 阅读全文
posted @ 2023-05-04 14:54 程序杰杰 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 我们知道,“高并发”是现在系统架构设计的核心关键词。一个架构师如果设计、开发的系统不支持高并发,那简直不好意思跟同行讨论。但事实上,在架构设计领域,高并发的历史非常短暂,这一架构特性是随着互联网,特别是移动互联网的发展才逐渐变得重要起来的。 现在有很多大型互联网应用系统,其用户是 阅读全文
posted @ 2023-05-04 14:53 程序杰杰 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧。 我在开篇词中说过,我们课程中的一系列软件架构设计是用设计文档的形式呈现的。所以,在拆解一个个案例之前,我们先来了解一些关于软件设计文档的基础知识,这样你在学习后面的具体案例时,就能更加清楚地理解文档是基于什么方式来组织的了。 首先,请你设想这样一个场景:如果公司安排你做架构师,要 阅读全文
posted @ 2023-05-04 14:53 程序杰杰 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 你好,我是李智慧,目前担任同程旅行交通首席架构师。我曾在阿里巴巴和英特尔担任架构师,主要从事高并发系统架构和大数据相关产品的开发。我参与过alibaba.com和Apache Spark的架构设计与开发,也曾作为CTO领导团队经历了日订单从零到一百万的高并发技术挑战。 说来我也是你的老朋友了,因为我 阅读全文
posted @ 2023-05-04 14:52 程序杰杰 阅读(139) 评论(0) 推荐(0) 编辑
摘要: [李智慧架构课程极客时间链接](https://time.geekbang.org/column/intro/100105701) ![image](https://img2023.cnblogs.com/blog/1676033/202306/1676033-20230617143844754-1 阅读全文
posted @ 2023-05-04 14:52 程序杰杰 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 如果您在离职后对社保公积金有任何问题,请用个人邮箱发邮件至hr.fuli@meituan.com,我们收到邮件后会在两个工作日内给您反馈。 [玫瑰]离职后有任何问题可找离职助手 |🎧 人工服务时间:周一~周日 8:30-23:30(法定节假日除外) 欢迎优先与机器人进行对话~如需人工客服,请点击� 阅读全文
posted @ 2023-05-04 10:30 程序杰杰 阅读(19) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2023-04-23 14:38 程序杰杰 阅读(3) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2023-04-23 14:37 程序杰杰 阅读(5) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2023-04-23 11:04 程序杰杰 阅读(9) 评论(0) 推荐(0) 编辑
摘要: Kafka 引以为傲的特性:顺序写、零拷贝 顺序写保证高性能,写入速度快。其并不是直接刷到磁盘,而是先提交到内存缓冲区,不用太担心机器宕机数据丢失,因为有ISR成员,通过参数设置同时写入几个才代表生产者发送消息成功,只要这几个成员不同时宕机就不会有问题,为了容灾我们可以配置跨机房、跨地域! 零拷贝保 阅读全文
posted @ 2023-04-23 11:00 程序杰杰 阅读(24) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2023-04-20 19:53 程序杰杰 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 时光流逝,这是专栏的最后一篇文章。回顾整个过程,如果用一个词来描述,就是“没料到”: 我没料到文章这么难写,似乎每一篇文章都要用尽所学; 我没料到评论这么精彩,以致于我花在评论区的时间并不比正文少; 我没料到收获这么大,每一次被评论区的提问问到盲点,都会带着久违的兴奋去分析代码。 如果让我自己评价这 阅读全文
posted @ 2023-04-20 15:14 程序杰杰 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 在专栏上线后的11月21日,我来到极客时间做了一场直播,主题就是“我的MySQL心路历程”。今天,我特意将这个直播的回顾文章,放在了专栏下面,希望你可以从我这些年和MySQL打交道的经历中,找到对你有所帮助的点。 这里,我先和你说一下,在这个直播中,我主要分享的内容: 我和MySQL打交道的经历; 阅读全文
posted @ 2023-04-20 15:13 程序杰杰 阅读(71) 评论(0) 推荐(0) 编辑
摘要: MySQL里有很多自增的id,每个自增id都是定义了初始值,然后不停地往上加步长。虽然自然数是没有上限的,但是在计算机里,只要定义了表示这个数的字节长度,那它就有上限。比如,无符号整型(unsigned int)是4个字节,上限就是232-1。 既然自增id有上限,就有可能被用完。但是,自增id用完 阅读全文
posted @ 2023-04-20 15:12 程序杰杰 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 这是我们专栏的最后一篇答疑文章,今天我们来说说一些好问题。 在我看来,能够帮我们扩展一个逻辑的边界的问题,就是好问题。因为通过解决这样的问题,能够加深我们对这个逻辑的理解,或者帮我们关联到另外一个知识点,进而可以帮助我们建立起自己的知识网络。 在工作中会问好问题,是一个很重要的能力。 经过这段时间的 阅读全文
posted @ 2023-04-20 15:12 程序杰杰 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 我经常被问到这样一个问题:分区表有什么问题,为什么公司规范不让使用分区表呢?今天,我们就来聊聊分区表的使用行为,然后再一起回答这个问题。 分区表是什么? 为了说明分区表的组织形式,我先创建一个表t: CREATE TABLE `t` ( `ftime` datetime NOT NULL, `c` 阅读全文
posted @ 2023-04-20 15:11 程序杰杰 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 在MySQL里面,grant语句是用来给用户赋权的。不知道你有没有见过一些操作文档里面提到,grant之后要马上跟着执行一个flush privileges命令,才能使赋权语句生效。我最开始使用MySQL的时候,就是照着一个操作文档的说明按照这个顺序操作的。 那么,grant之后真的需要执行flus 阅读全文
posted @ 2023-04-20 15:11 程序杰杰 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 我在上一篇文章最后,给你留下的问题是怎么在两张表中拷贝数据。如果可以控制对源表的扫描行数和加锁范围很小的话,我们简单地使用insert … select 语句即可实现。 当然,为了避免对源表加读锁,更稳妥的方案是先将数据写到外部文本文件,然后再写回目标表。这时,有两种常用的方法。接下来的内容,我会和 阅读全文
posted @ 2023-04-20 15:10 程序杰杰 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章中,我提到MySQL对自增主键锁做了优化,尽量在申请到自增id以后,就释放自增锁。 因此,insert语句是一个很轻量的操作。不过,这个结论对于“普通的insert语句”才有效。也就是说,还有些insert语句是属于“特殊情况”的,在执行过程中需要给其他资源加锁,或者无法在申请到自增id 阅读全文
posted @ 2023-04-20 15:10 程序杰杰 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 在第4篇文章中,我们提到过自增主键,由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧凑。 之前我见过有的业务设计依赖于自增主键的连续性,也就是说,这个设计假设自增主键是连续的。但实际上,这样的假设是错的,因为自增主键不能保证连续递增。 今天这篇文章,我们就来说说这个问题, 阅读全文
posted @ 2023-04-20 15:09 程序杰杰 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 我在上一篇文章末尾留给你的问题是:两个group by 语句都用了order by null,为什么使用内存临时表得到的语句结果里,0这个值在最后一行;而使用磁盘临时表得到的结果里,0这个值在第一行? 今天我们就来看看,出现这个问题的原因吧。 内存表的数据组织结构 为了便于分析,我来把这个问题简化一 阅读全文
posted @ 2023-04-20 15:09 程序杰杰 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 今天是大年初二,在开始我们今天的学习之前,我要先和你道一声春节快乐! 在第16和第34篇文章中,我分别和你介绍了sort buffer、内存临时表和join buffer。这三个数据结构都是用来存放语句执行过程中的中间数据,以辅助SQL语句的执行的。其中,我们在排序的时候用到了sort buffer 阅读全文
posted @ 2023-04-20 15:09 程序杰杰 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 今天是大年三十,在开始我们今天的学习之前,我要先和你道一声春节快乐! 在上一篇文章中,我们在优化join查询的时候使用到了临时表。当时,我们是这么用的: create temporary table temp_t like t1; alter table temp_t add index(b); i 阅读全文
posted @ 2023-04-20 15:08 程序杰杰 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章中,我和你介绍了join语句的两种算法,分别是Index Nested-Loop Join(NLJ)和Block Nested-Loop Join(BNL)。 我们发现在使用NLJ算法的时候,其实效果还是不错的,比通过应用层拆分成多个语句然后再拼接查询结果更方便,而且性能也不会差。 但是 阅读全文
posted @ 2023-04-20 15:07 程序杰杰 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 在实际生产中,关于join语句使用的问题,一般会集中在以下两类: 我们DBA不让使用join,使用join有什么问题呢? 如果有两个大小不同的表做join,应该用哪个表做驱动表呢? 今天这篇文章,我就先跟你说说join语句到底是怎么执行的,然后再来回答这两个问题。 为了便于量化分析,我还是创建两个表 阅读全文
posted @ 2023-04-20 15:06 程序杰杰 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 我经常会被问到这样一个问题:我的主机内存只有100G,现在要对一个200G的大表做全表扫描,会不会把数据库主机的内存用光了? 这个问题确实值得担心,被系统OOM(out of memory)可不是闹着玩的。但是,反过来想想,逻辑备份的时候,可不就是做整库扫描吗?如果这样就会把内存吃光,逻辑备份不是早 阅读全文
posted @ 2023-04-20 15:05 程序杰杰 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 在MySQL中有两个kill命令:一个是kill query +线程id,表示终止这个线程中正在执行的语句;一个是kill connection +线程id,这里connection可缺省,表示断开这个线程的连接,当然如果这个线程有语句正在执行,也是要先停止正在执行的语句的。 不知道你在使用MySQ 阅读全文
posted @ 2023-04-20 15:05 程序杰杰 阅读(32) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 9 下一页