高并发系统设计40问
唐扬
美图公司技术专家
立即订阅
9308 人已学习
课程目录
已更新 42 讲 / 共 45 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么你要学习高并发系统设计?
免费
基础篇 (6讲)
01 | 高并发系统:它的通用设计方法是什么?
02 | 架构分层:我们为什么一定要这么做?
免费
03 | 系统设计目标(一):如何提升系统性能?
04 | 系统设计目标(二):系统怎样做到高可用?
05 | 系统设计目标(三):如何让系统易于扩展?
06 | 面试现场第一期:当问到组件实现原理时,面试官是在刁难你吗?
演进篇 · 数据库篇 (5讲)
07 | 池化技术:如何减少频繁创建数据库连接的性能损耗?
08 | 数据库优化方案(一):查询请求增加时,如何做主从分离?
09 | 数据库优化方案(二):写入数据量增加时,如何实现分库分表?
10 | 发号器:如何保证分库分表后ID的全局唯一性?
11 | NoSQL:在高并发场景下,数据库和NoSQL如何做到互补?
演进篇 · 缓存篇 (6讲)
12 | 缓存:数据库成为瓶颈后,动态数据的查询要如何加速?
13 | 缓存的使用姿势(一):如何选择缓存的读写策略?
14 | 缓存的使用姿势(二):缓存如何做到高可用?
15 | 缓存的使用姿势(三):缓存穿透了怎么办?
16 | CDN:静态资源如何加速?
加餐 | 数据的迁移应该如何做?
演进篇 · 消息队列篇 (6讲)
17 | 消息队列:秒杀时如何处理每秒上万次的下单请求?
18 | 消息投递:如何保证消息仅仅被消费一次?
19 | 消息队列:如何降低消息队列系统中消息的延迟?
20 | 面试现场第二期:当问到项目经历时,面试官究竟想要了解什么?
用户故事 | 从“心”出发,我还有无数个可能
期中测试 | 10道高并发系统设计题目自测
演进篇 · 分布式服务篇 (9讲)
21 | 系统架构:每秒1万次请求的系统要做服务化拆分吗?
22 | 微服务架构:微服务化后系统架构要如何改造?
23 | RPC框架:10万QPS下如何实现毫秒级的服务调用?
24 | 注册中心:分布式系统如何寻址?
25 | 分布式Trace:横跨几十个分布式组件的慢请求要如何排查?
26 | 负载均衡:怎样提升系统的横向扩展能力?
27 | API网关:系统的门面要如何做呢?
28 | 多机房部署:跨地域的分布式系统如何做?
29 | Service Mesh:如何屏蔽服务化系统的服务治理细节?
演进篇 · 维护篇 (7讲)
30 | 给系统加上眼睛:服务端监控要怎么做?
31 | 应用性能管理:用户的使用体验应该如何监控?
32 | 压力测试:怎样设计全链路压力测试平台?
33 | 配置管理:成千上万的配置项要如何管理?
34 | 降级熔断:如何屏蔽非核心系统故障的影响?
35 | 流量控制:高并发系统中我们如何操纵流量?
36 | 面试现场第三期:你要如何准备一场技术面试呢?
实战篇 (2讲)
37 | 计数系统设计(一):面对海量数据的计数器要如何做?
38 | 计数系统设计(二):50万QPS下如何设计未读数系统?
高并发系统设计40问
登录|注册

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

唐扬 2019-11-29
你好,我是唐扬。
在分布式服务篇的前几节课程中,我带你了解了在微服务化过程中,要使用哪些中间件解决服务之间通信和服务治理的问题,其中就包括:
用 RPC 框架解决服务通信的问题;
用注册中心解决服务注册和发现的问题;
使用分布式 Trace 中间件,排查跨服务调用慢请求;
使用负载均衡服务器,解决服务扩展性的问题;
在 API 网关中植入服务熔断、降级和流控等服务治理的策略。
经历了这几环之后,你的垂直电商系统基本上已经完成了微服务化拆分的改造。不过目前来看,你的系统使用的语言还是以 Java 为主,之前提到的服务治理的策略,和服务之间通信协议也是使用 Java 语言来实现的。
那么这会存在一个问题:一旦你的团队中,有若干个小团队开始尝试使用 Go 或者 PHP 来开发新的微服务,那么在微服务化过程中,一定会受到挑战。

跨语言体系带来的挑战

其实,一个公司的不同团队,使用不同的开发语言是比较常见的。比如,微博的主要开发语言是 Java 和 PHP,近几年也有一些使用 Go 开发的系统。而使用不同的语言开发出来的微服务,在相互调用时会存在两方面的挑战:
一方面,服务之间的通信协议上,要对多语言友好,要想实现跨语言调用,关键点是选择合适的序列化方式。我给你举一个例子。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《高并发系统设计40问》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(11)

  • Corner
    老师,您好。请问您在文中说的"轻量级客户端"目前有哪些开源的SeverMesh框架有实现呢?

    作者回复: 据我了解微博和蚂蚁金服都采用了这种方案

    2019-11-29
    5
  • 往事随风,顺其自然
    istio 中需要使用Kubernetes 这个,必须这样?

    作者回复: 现在是的

    2019-11-29
    3
  • Jxin
    嘿嘿,补课补到最新更新了。
    1.k8s都没用明白,更别说服务网格了。
    2.服务网格出现时k8s的容器编排已经出现,istio的实现也依托于k8s基础平台。所以这是不好分割的东西。Sidecar是容器编排里面一种"组合"发布服务的模式,实现了多个容器(进程)对外作为一个容器的发布方式。这是落地服务网格这种数据传输与业务解耦的第一个条件。接下来基于容器的overlay网络也降低了多一层多一条的开销,亦是利于服务网格落地的。

    3.服务网格的相关技术,还可以看看微博的WeiboMesh 。毕竟极客有微课讲述,相对好理解。
    2019-12-03
    1
  • 电光火石
    老师,请问一下:
    1. 如果全栈都是java,那么service mesh就不是那么重要,是吗?
    2. 文中看到iptable的性能会比rpc框架的性能要查,我以为iptable是走第三层或者第四层协议,而且只是转发,性能会很高,而rpc框架走第四层协议,而且需要解析协议内容,性能会更差一些。不知道老师能否讲解一下我理解的错误
    谢谢了

    作者回复: 1. 也不是,service mesh还可以解决中间件升级难的问题
    2. 不是的,高并发下iptables对性能还是有影响的,尤其规则比较多的时候

    2019-12-07
  • longslee
    打卡。完全还没有涉及,哈哈。
    2019-12-07
  • Keith
    API网关和Service Mesh有什么区别与联系呢? (它们都可以植入了服务治理策略)

    作者回复: 标准答案是,API网关是南北向的,service mesh是东西向的

    2019-12-07
  • 阿土
    轻量级客户端一般怎么实现?有现成例子可参考么?另外,少量改造是改造些什么地方呢?

    作者回复: 可以看看sofa mesh的代码

    2019-12-04
  • 海罗沃德
    AWS最近推出了AWS app mesh服务,用来对抗Google云上的Istio,要启用app mesh需要把系统部署在EKS,不过过程还是比较傻瓜式的
    2019-12-01
  • 海罗沃德
    关于多语言的服务序列化,正好在李玥老师的课里听到了
    2019-12-01
  • Keith
    关于服务治理策略, "负载均衡、熔断降级、流量控制、打印分布式追踪日志等等,这些服务治理的策略都需要重新实现":
    1. 熔断降级、流量控制这些不是在API网关中实现吗? 这些需要每个RPC客户端单独实现?
    2. 服务治理策略是应用于外部客户端对系统的访问, 还是也包括内部RPC客户端之间的相互访问?

    作者回复: 1. 服务之间调用,治理策略是集成在客户端中的
    2. 包括RPC之间互相访问

    2019-11-30
  • 阿卡牛
    istio 和spring boot有联系和区别吗

    作者回复: 他们应该不是一个东西,istio是service mesh的实现,spring boot是开发框架

    2019-11-29
收起评论
11
返回
顶部