29__Ranges:无迭代器的迭代和更方便的组合

你好,我是吴咏炜。

今天,我们继续上一讲开始的话题,讨论 ranges(范围)。

Ranges 简介

像下面这样的代码:

#include
#include
#include

int main()
{
using namespace std;
int a[] = {1, 7, 3, 6,
5, 2, 4, 8};
copy(begin(a), end(a),
ostream_iterator(
std::cout, " “));
std::cout « std::endl;
sort(begin(a), end(a));
copy(begin(a), end(a),
ostream_iterator(
std::cout, " “));
std::cout « std::endl;
}

29__Service_Mesh:如何屏蔽服务化系统的服务治理细节?

你好,我是唐扬。

在分布式服务篇的前几节课程中,我带你了解了在微服务化过程中,要使用哪些中间件解决服务之间通信和服务治理的问题,其中就包括:

  1. 用 RPC 框架解决服务通信的问题;
  2. 用注册中心解决服务注册,和发现的问题;
  3. 使用分布式 Trace 中间件,排查跨服务调用慢请求;
  4. 使用负载均衡服务器,解决服务扩展性的问题;
  5. 在 API 网关中植入服务熔断、降级和流控等服务治理的策略。

经历了这几环之后,你的垂直电商系统基本上,已经完成了微服务化拆分的改造。不过,目前来看,你的系统使用的语言还是以 Java 为主,之前提到的服务治理的策略,和服务之间通信协议也是使用 Java 语言来实现的。

29__案例篇:Redis响应严重延迟,如何解决?

你好,我是倪朋飞。

上一节,我们一起分析了一个基于 MySQL 的商品搜索案例,先来回顾一下。

在访问商品搜索接口时,我们发现接口的响应特别慢。通过对系统 CPU、内存和磁盘 I/O 等资源使用情况的分析,我们发现这时出现了磁盘的 I/O 瓶颈,并且正是案例应用导致的。

29__产品图鉴:哪些分布式数据库值得看?

你好,我是王磊,你也可以叫我 Ivan。

今天是课程正文的最后一讲,时间过得好快呀。在基础篇和开发篇,课程安排追求的是庖丁解牛那样的风格,按照第 4 讲提到的数据库基本架构,来逐步拆解分布式数据库系统。在介绍每一个关键部件时,我会去关联主流产品的设计,分析背后的理论依据什么,工程优化的思路又是什么。

29__尝试升级(下):“链表”知识在测试框架中的应用

你好,我是胡光,欢迎回来。

上节课中,我们通过参考 gtest 的输出,完善了我们自己的测试框架的输出信息,也就是添加了测试用例的名称、运行结果以及运行时间。并且,我提到了在一般情况下,项目中的功能开发原则:功能迭代,数据先行。就是要开发新的功能之前,我们应该先考虑清楚实现这部分功能相关的数据,在系统中的存储与使用的情况,只有这样,才能更好地完成功能的实现与迭代优化。

29__从每月到每天,如何给版本发布提速?

还记得我们在持续交付设定的目标吗?我前面提到过,天猫的效能目标是“211”,也就是 2 周交付周期、1 周开发周期以及 1 小时发布时长。对于一些更加敏捷的产品,我们可能还会加快到每周一个版本。在如此快的节奏下,我们该如何保证产品的质量?还有哪些手段可以进一步为发布“提速保质”?

29__大表Join大表(二):什么是负隅顽抗的调优思路?

你好,我是吴磊。

在上一讲,我们说了应对“大表 Join 大表”的第一种调优思路是分而治之,也就是把一个庞大而又复杂的 Shuffle Join 转化为多个轻量的 Broadcast Joins。这一讲,我们接着来讲第二种调优思路:负隅顽抗。

29__堆的应用:如何快速获取到Top_10最热门的搜索关键词?

搜索引擎的热门搜索排行榜功能你用过吗?你知道这个功能是如何实现的吗?实际上,它的实现并不复杂。搜索引擎每天会接收大量的用户搜索请求,它会把这些用户输入的搜索关键词记录下来,然后再离线地统计分析,得到最热门的 Top 10 搜索关键词。

29__分布式高可靠之流量控制:大禹治水,在疏不在堵

你好!我是聂鹏程。今天,我来继续带你打卡分布式核心技术。

在上一篇文章中,我带你学习了分布式高可靠中的负载均衡。负载均衡的核心在于,将用户请求均匀分配到多个处理服务器处理,以解决单个服务器的单点瓶颈问题。但,如果用户请求数非常多的话,即便实现了负载均衡,服务器能力达到上限,还是无法处理所有的用户请求。