读书_高并发设计40问之五分布式服务

21,系统架构:每秒 1 万次请求的系统要做服务化拆分吗?

22,微服务架构:微服务化后,系统架构要如何改造?

23,RPC框架:10 万 QPS 下如何实现毫秒级的服务调用?

高并发 RPC 框架的要素,总结起来有三个要点:
选择高性能的 I/O 模型,这里我推荐使用同步多路 I/O 复用模型;
调试网络参数,这里面有一些经验值的推荐。比如将 tcp_nodelay 设置为 true,也有一些参数需要在运行中来调试,比如接受缓冲区和发送缓 冲区的大小,客户端连接请求缓冲队列的大小(back log)等等;
序列化协议依据具体业务来选择。如果对性能要求不高,可以选择 JSON,否则可以从 Thrift 和 Protobuf 中选择其一。

24,注册中心:分布式系统如何寻址?

服务状态管理如何来做
主动探测
心跳模式

25,分布式 Trace:横跨几十个分布式组件的慢请求要如何排查?

服务的追踪的需求主要有两点:
一点对代码要无侵入,你可以使用切面编程的方式来解决;
另一点是性能上要低损耗,我建议你采用静态代理和日志采样的方式,来尽量减少追踪日志对于系统性能的影响;
无论是单体系统还是服务化架构,无论是服务追踪还是业务问题排查,你都需要在日志中增加requestId,这样可以将你的日志串起来,给你呈现一个完整的问题场景。如果 requestId 可以在客户端上生成,在请求业务接口的时候传递给服务端,那么就可以把客户端的日志体系也整合进来,对于问题的排查帮助更大。

26,负载均衡:怎样提升系统的横向扩展能力?

网站负载均衡服务的部署,是以 LVS 承接入口流量,在应用服务器之前,部署 Nginx 做细化的流量分发,和故障节点检测。当然,如果你的网站的并发不高,也可以考虑不引入 LVS。
负载均衡的策略可以优先选择动态策略,保证请求发送到性能最优的节点上;如果没有合适的动态策略,那么可以选择轮询的策略,让请求平均分配到所有的服务节点上。
Nginx 可以引入 nginx_upstream_check_module,对后端服务做定期的存活检测,后端的服务节点在重启时,也要秉承着「先切流量后重启」的原则,尽量减少节点重启对于整体系统的影响。

27,API 网关:系统的门面要如何做呢?

API 网关分为入口网关和出口网关两类,入口网关作用很多,可以隔离客户端和微服务,从中提供协议转换、安全策略、认证、限流、熔断等功能。出口网关主要是为调用第三方服务提供统一的出口,在其中可以对调用外部的 API 做统一的认证、授权,审计以及访问控制;
API 网关的实现重点在于性能和扩展性,你可以使用多路 I/O 复用模型和线程池并发处理,来提升网关性能,使用责任链模式来提升网关的扩展性;
API 网关中的线程池,可以针对不同的接口或者服务做隔离和保护,这样可以提升网关的可用性;
API 网关可以替代原本系统中的 Web 层,将 Web 层中的协议转换、认证、限流等功能挪入到 API 网关中,将服务聚合的逻辑下沉到服务层。

架构设计和高并发系列
读书_大型网站技术架构01_李智慧
读书_大型网站技术架构02_李智慧
读书_大型网站技术架构03_李智慧
读书_高并发设计40问之一基础
读书_高并发设计40问之二数据库
读书_高并发设计40问之三缓存
读书_高并发设计40问之四消息队列
读书_高并发设计40问之五分布式服务
读书_w3c架构师01通用设计与方法论
读书_w3c架构师02典型架构实践
读书_w3c架构师03数据库与缓存
分布式事务
高并发之缓存
高并发之降级
高并发之限流
数据库_读写分离
消息队列_01消息队列入门
消息队列_02rabbitMQ入门
消息队列_03rabbitMQ安装和使用

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×