高并发系统设计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问
登录|注册

33 | 配置管理:成千上万的配置项要如何管理?

唐扬 2019-12-09
你好,我是唐扬。
相信在实际工作中,提及性能优化你会想到代码优化,但是实际上有些性能优化可能只需要调整一些配置参数就可以搞定了。为什么这么说呢?我给你举几个例子:
你可以调整配置的超时时间让请求快速失败,防止系统的雪崩,提升系统的可用性;
你还可以调整 HTTP 客户端连接池的大小,来提升调用第三方 HTTP 服务的并行处理能力,从而提升系统的性能。
你可以认为配置是管理你系统的工具,在你的垂直电商系统中,一定会有非常多的配置项,比如数据库的地址、请求 HTTP 服务的域名、本地内存最大缓存数量等等。
那么,你要如何对这些配置项做管理呢?管理的过程中要注意哪些事情呢?

如何对配置进行管理

配置管理由来已久,在 Linux 系统中就提供了大量的配置项,你可以依据自身业务的实际情况,动态地对系统功能做调整。比如,你可以通过修改 dirty_writeback_centisecs 参数的数值,调整 Page Cache 中脏数据刷新到磁盘上的频率;你也可以通过修改 tcp_max_syn_backlog 参数的值,来调整未建立连接队列的长度。而你既可以通过修改配置文件并且重启服务器来让配置生效,也可以通过 sysctl 命令来动态地调整,让配置即时生效。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《高并发系统设计40问》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(10)

  • 台风骆骆
    学习本篇文章收获:
    1、配置中心的配置是需要分级的,如全局,机房,个性,可以减少存储,提高复用性。
    2、当前配置中心主要有拉和推两种,拉就是定时去轮循获取,这里为了减少带宽,一开始是拿着本地的md5去看下是否配置有变更,如果没有变更,就不用拉取,如果有变更,再去拉取新的配置项。推就是需要保持长连接了,服务端还要维护客户端那边关注的配置项,一旦有配置项变更,就通知客户端。
    3、配置中心是可用性高于性能的,配置中心客户端除了要维护内存配置项,还要维护一个文件的配置项,这个是异步同步的,一旦配置中心服务器挂了,可以降级读取本地文件的配置项内容。
    2019-12-09
    3
  • 👽
    个人总结:

    配置中心:就相当于云。将配置内容挂载到云上,所有服务器根据自己的情况取自己需要的配置。

    配置分级:类似于面向对象编程中子类和父类的。父类已有的方法可以满足要求时,可以直接用。如果自己有额外业务,那就复写父类的方法。

    配置变更通知:类似于设计模式的发布订阅模式。再有新配置内容发布的时候,要保证通知所有需要同步配置的客户端。

    配置中心性能指标: 因为配置中心并发量与请求响应时间的要求并不高。因为一个客户端可能很久才需要更新一次配置,所以可用性才是最主要的指标。

    作者回复: 赞

    2019-12-19
    1
  • longslee
    打卡。 zk 是 满足 CP,那么那几个基于 zk 的开源配置中心是怎么做到高可用的呢?
    呃,我们的配置,似乎是反过来的哈哈,由一个配置中心定期生成一个静态文件,客户端直接引入这个路径下的文件...

    作者回复: 一般就是在客户端会有一个灾备文件,有的还会在服务端做多级缓存。

    2019-12-17
    1
  • 被秒
    我个人更喜欢在环境变量的方式读配置,毕竟无宕机的rolling update的实现已经是标配了。毕竟引入一个重量级的配置中心的就引入了复杂度, 尤其是那些需要侵入的方式。
    2019-12-09
    1
  • Keith
    "轮询查询就是告诉配置中心,我与这个配置相关", 客户端订阅后, 配置中心不就存储了订阅者的信息?
    2019-12-20
  • Keith
    配置中心中配置的变更是通过什么方式? 可以只通过配置中心客户端吗? 如果可以, 那就不需要轮询了, 只需在配置变更后, 查到改配置相关的订阅者, 发送通知即可

    作者回复: 是的,问题是怎么查到相关的订阅者呢?轮询查询就是告诉配置中心,我与这个配置相关

    2019-12-14
    1
  • 吃饭饭
    git 的钩子触发变更也是不错的选择
    2019-12-09
  • 何磊
    使用配置中心遇到的几个问题
    1. 配置中心也是keyvalue的方式存储或者说返回,需要按照服务纬度拉取配置,所以本地还是要在配置文件中写明要拉取配置的服务名
    2. 我们实际操作中将配置中心跟注册中心整合了,本地配置记录服务名,注册中心不仅记录服务的node还记录相关配置。比如:db的账号密码。如果是只有配置也可以用这种方式,该方式对于agent维护成本降低

    作者回复: 👍

    2019-12-09
    1
  • 许凯
    变更通知时,如果使用长连接,但实际没有送达怎么办呢?要对应答做个标记,再做个定时检查标记吗

    作者回复: 一般会长连短连结合的方式,短连定期轮询,长连负责推送

    2019-12-09
  • 知行合一
    配置中心怎么才能实现6个9的系统呢?

    作者回复: 主要是做好容灾

    2019-12-09
收起评论
10
返回
顶部