分布式系统架构

分布式系统架构

作者:张程

出版社:机械工业

出版年:2020年7月

ISBN:9787111655909

所属分类:网络科技

书刊介绍

《分布式系统架构》内容简介

资深分布式系统研发工程师、构架师多年工作经验总结,从原理、应用和实践3个维度展开从前端到后端,从网络传输到负载均衡,从事务到数据库,从高并发到高可用,8个维度全面讲解分布式系统的技术栈。
本书从技术原理、高并发、性能优化的角度出发,对分布式环境中因应用场景复杂多变产生的问题,从多种技术层面进行分析,并给出高性能的优化方案和高可用的架构方案。通过本书,读者在实际工作中可以整体提高分布式环境中应用的稳定性。
书中融入了对分布式领域中多种主流技术栈的介绍,能让读者全方位了解关于分布式系统架构的知识。
张程 资深研发工程师和架构师,在分布式系统架构领域有丰富的实战经验,擅长高并发、高可用系统的架构,以及分布式系统的性能调优。
曾就职于格瓦拉电影和优速科技,任职期间参与过多个大型银行系统、大型购票系统、物流订单系统的架构设计和研发工作。曾经还参与过分布式Job调度系统的设计和架构工作。
热衷于技术探索和研发,在CSDN分享了大量关于架构和研发的文章,获得一致好评。

作品目录

前言
为何写作本书
本书主要特点
本书阅读对象
如何阅读本书
勘误
致谢
第1章:分布式架构介绍
1.1、分布式架构发展过程
1.2、分布式架构设计理念和目标
1.3、分布式架构应用场景
1.4、分布式架构设计难点
1.5、分布式架构解决痛点
1.6、本章小结
第2章:分布式架构前后端交互
2.1、前后端交互发展过程
2.2、前后端交互方式
2.3、前后端交互难点
2.4、前后端交互优化
2.5、案例讲解
2.6、本章小结
第3章:分布式架构网络传输
3.1、网络传输协议
3.2、网络传输调用过程
3.3、网络传输优化
3.4、本章小结
第4章:分布式架构Nginx
4.1、Nginx工作原理
4.2、Nginx源码编译安装
4.3、Nginx配置
4.4、Nginx代理&负载均衡
4.5、Nginx缓存
4.6、Nginx限流
4.7、Nginx屏蔽
4.8、Nginx优化
4.9、Nginx高可用
4.10、本章小结
第5章:分布式架构Varnish
5.1、Varnish工作原理
5.2、Varnish源码编译安装
5.3、Varnish配置
5.4、Varnish核心指令
5.5、Varnish缓存
5.6、Varnish处理策略
5.7、Varnish健康检查
5.8、Varnish优化
5.9、Varnish高可用
5.10、本章小结
第6章:分布式架构Tomcat
6.1、Tomcat原理
6.2、Tomcat生命周期
6.3、Tomcat源码编译安装
6.4、Tomcat目录结构
6.5、Tomcat加载过程
6.6、Tomcat安全
6.7、Tomcat集群
6.8、JVM
6.9、Tomcat性能调优
6.10、本章小结
第7章:分布式架构高并发
7.1、高并发使用场景
7.2、高并发难点
7.3、高并发之缓存
7.4、高并发之消息队列
7.5、高并发优化
7.6、高并发经典案例
7.7、本章小结
第8章:分布式架构事务
8.1、分布式事务介绍
8.2、分布式事务概论
8.3、分布式事务应用场景
8.4、分布式事务难点
8.5、分布式事务解决方案
8.6、分布式事务案例讲解
8.7、本章小结
第9章:分布式架构MySQL
9.1、MySQL运行原理
9.2、MySQL编译启动
9.3、MySQL事务
9.4、MySQL存储引擎
9.5、MySQL之SQL操作
9.6、MySQL索引
9.7、MySQL备份
9.8、MySQL难点
9.9、MySQL性能优化
9.10、MySQL集群
9.11、本章小结
第10章:分布式架构高可用
10.1、高可用概述及难点
10.2、高可用涉及内容
10.3、高可用具体应用
10.4、高可用案例讲解
10.5、本章小结

热门书摘

Nginx url_hashurl_hash与ip_hash类似,但是其按照访问URL的hash结果来分配请求,使得每个URL定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景中,如代码清单4-11所示。代码清单4-11 Nginx url_hashupstream zachary.sh.cn { server 192.168.1.10:8081; server 192.168.1.11:8081; hash $request_uri; hash_method crc32; }6. Nginx least_connleast_conn把请求转发给连接数较少的后端服务器,如代码清单4-12所示。代码清单4-12 Nginx least_connupstream zachary.sh.cn { least_conn; #把请求转发给连接数较少的后端服务器 server 192.168.1.10:8081; server 192.168.1.11:8081; }Nginx least_conn的代理示意如图4-11所示。图片: 图4-11 Nginx/upstream ip_hash代理图4.5 Nginx缓存

使用Nginx代理缓存可以减少后端服务端压力,提升网站性能,减小并发延时。Nginx设置缓存的代码如代码清单4-13所示。代码清单4-13 Nginx设置缓存upstream zachary.sh.cn{ server 192.168.10.1:8081; server 192.168.10.2:8082; } proxy_cache_path /cache levels=1:2 keys_zone=cache:10m max_size=10g inactive=60m use_temp_path=off; server { listen 80; server_name zachary.sh.cn; index index.html; location / { proxy_pass http:// zachary.sh.cn; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_cache cache; proxy_cache_valid 200 304 6h; proxy_cache_valid any 6m; proxy_cache_key $uri$request_body; proxy_cache_methods GET POST; add_header Nginx-Cache "$upstream_cache_status"; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; } }在代码清单4-13中,proxy_cache_path /cache用于设置Nginx缓存资源的存放地址。各参数说明如下。1)levels:按照两层目录分层。2)key_zone:在共享内存中设置一块存储区域来存放缓存的key和metadata(类似使用次数),Nginx可以快速判断一个请求是否命中缓存,1MB可以存储8000个key,10MB可以存储80000个key。3)max_size:最大缓存空间,如果不指定,会使用所有硬盘空间,当达到配额后,会删除最少使用的缓存文件。4)inactive:未被访问文件在缓存中的保留时间。如果文件60分钟未被访问,则不论状态是否为expired,缓存控制程序都会删掉文件。inactive默认是10分钟。需要注意的是,inactive和expired配置项的含义是不同的,expired只是使缓存过期,但不会删除缓存文件,inactive是删除指定时间内未被访问的缓存文件。5)use_temp_path:如果为off,则Nginx会将缓存文件直接写入指定的缓存文件中,而不是使用temp_path存储。official建议为off,因为这可以避免文件在不同文件系统中被不必要拷贝。

相关推荐

微信二维码