《可伸缩服务架构:框架与中间件》一书以高可用服务架构为核心主题,全面讲解了可伸缩和可扩展的设计要点。从应用层、数据库、缓存、消息队列、大数据查询系统、分布式定时任务调度系统到微服务等各个层面,详细解释了如何设计可伸缩、可扩展的框架。本书还提供了解决特定问题的方法论和实践总结,帮助读者在不同领域中应用所学知识。这本书对于希望建立高可用服务架构、提升系统效率和性能的开发人员和架构师来说,是一本不可多得的指南。阅读本书,读者将深入了解可伸缩服务架构的关键概念和技术,从而为自己的项目提供可靠的基础。
可伸缩服务架构:框架与中间件电子书封面
读者评价
主要看了dubbo章节,本以为会有些干活,但是大部分内容都是照搬官方文档,收获不大
发号器,封装kafka生产消费简单易用框架,分库分表,redis,定时器,一个章节一个知识点,简单的脑图罗列知识点,没有深入。发号器对我有用。
Dubbo那一章直接抄的官方文档。。你怎么不把官方文档全部扒下来啊。。这就有点恶心了!
版权归作者所有,任何形式转载请联系作者。
书的内容与书名《框架与中间件》完全不是一会事~完全不相符,凑字数的章节很多!~和作者上一本书差不多,有用的不多,和上一本书一脉相承啊!换个名子也许还是很不错的,买来看看,随便翻翻就成了,别太当回事!
内容介绍
《可伸缩服务架构:框架与中间件》以高可用服务架构为主题,侧重于讲解高可用架构设计的核心要点:可伸缩和可扩展,从应用层、数据库、缓存、消息队列、大数据查询系统、分布式定时任务调度系统、微服务等层面详细讲解如何设计可伸缩、可扩展的框架,并给出在各个领域解决特定问题的方法论和实践总结。随着《可伸缩服务架构:框架与中间件》的出版,我们还开源了4个行之有效的互联网可伸缩框架,包括数据库分库分表dbsplit、缓存分片redic、专业的发号器vesta和消息队列处理机框架kclient,每个框架都开箱即用,也可以作为学习互联网平台化框架搭建的素材,更可以作为开发开源项目的示例。
《可伸缩服务架构:框架与中间件》的上册《分布式服务架构:原理、设计与实战》详细介绍了如何解决线上高并发服务的一致性、高性能、高可用、敏捷等痛点,《可伸缩服务架构:框架与中间件》与上册结合后可覆盖保证线上高并发服务的各个主题:一致性、高性能、高可用、可伸缩、可扩展、敏捷性等,每个主题都是一个方法论。充分理解这些主题,可保障线上服务健壮运行,对实现服务稳定性的n个9有着不可估量的作用。
无论是对于互联网的或者传统的软件工程师、测试工程师、架构师,还是对于深耕于IT的其他管理人员,《可伸缩服务架构:框架与中间件》都有很强的借鉴性和参考价值,是值得每个技术人员阅读的架构级技术书。
目录
- 第1章 如何设计一款永不重复的高性能分布式发号器 1
- 第2章 可灵活扩展的消息队列框架的设计与实现 49
- 第3章 轻量级的数据库分库分表架构与框架 93
- 第4章 缓存的本质和缓存使用的优秀实践 201
- 第5章 大数据利器之Elasticsearch 268
- 第6章 全面揭秘分布式定时任务 321
- 第7章 RPC服务的发展历程和对比分析 377
- 第8章 Dubbo实战及源码分析 436
- 第9章 高性能网络中间件 512
书内容还可以吧,网上都会有的解决方案,还行吧,里面内容就是缓存,id生成器,消息对接,分库分表等,关于dubbo的介绍还是官网不错
入口层 入口层,通常指Nginx和Apache等层面的东西,负责应用(不管是Web应用还是移动应用)的服务入口。我们通常会将服务定位在一个IP,如果这个IP对应的服务器当机了,那么用户的访问肯定会中断。此时,可以用keepalived来实现入口层的高可用。例如,机器A 的IP是 1.2.3.4,机器 B 的 IP 是 1.2.3.5, 那么再申请一个 IP 1.2.3.6(称为⼼跳IP), 平时绑定在机器A上,如果A当机,IP会自动绑定在机器B上;如果B当机,IP会自动绑定在机器A上。对于这种形式,我们将DNS绑定到心跳IP上,即可实现入口层的高可用。 但这个方案有一点小问题。第一,它的切换可能会有一到两秒的中断,也就是说,如果不是要求到非常严格的毫秒级就不会有问题。第二,对入口的机器会有些浪费,因为买了两台机器的入口,可能就只有一台机器用上。对一些长连接的应用可能会导致服务中断,这时候就需要客户端做配合做一些重新创建连接的工作。简单来说,对于比较普通的业务来说,这个方案就能解决一部分问题。 这里要注意,keepalived在使用上会有一些限制。 两台机器必须在同一个网段,不是在同一个网段,没有办法实现互相抢IP。 内网服务也可以做心跳,但需要注意的是,以前为了安全我们会把内网服务绑定在内网IP上,避免出现安全问题。但为了使用keepalived,必须监听在所有IP上(如果监听在心跳IP上,那么机器没有持有该IP时,服务无法启动),简单的方案是启用 iptables, 避免内网服务被外网访问。 服务器利用率下降,这时可以考虑做混合部署来改善这一点。 比较常见的一个错误是,如果有两台机器,两个公网IP,DNS上把域名同时定位到两个IP,就觉得已经做了高可用了。这完全不是高可用,因为如果一台机器当机,那么就有一半左右的用户无法访问。 除了keepalive,lvs也能用来解决入口层的高可用问题。不过,与keepalived相比,lvs会更复杂一些,门槛也会高一些。
最近,阅读了Will Larson的文章Introduction to Architecting System for Scale,感觉很有价值。作者分享了他在Yahoo!与Digg收获的设计可伸缩系统的架构经验。在我过往的架构经验中,由于主要参与开发企业软件系统,这种面向企业内部的软件系统通常不会有太大的负载量,太多的并发量,因而对于系统的可伸缩性考虑较少。大体而言,只要在系统部署上考虑集群以及负载均衡即可。本文给了我很多启发,现把本文的主要内容摘译出来,并结合自己对此的理解。 Larson首先认为,一个理想的系统,对于容量(Capacity)的增长应该与添加的硬件数是线性的关系。换言之,如果系统只有一台服务器,在增加了另一台同样的机器后,容量应该翻倍。以此类推。这种线性的容量伸缩方式,通常被称之为水平伸缩“Horizontal Scalability”。