`

<大型网站系统与Java中间件实践>读书笔记

 
阅读更多

DB

 

垂直分拆:

1.ACID原则

2.join查询

3.外键约束

水平分拆:

1.ACID原则

2.join查询

3.外键约束

4.自增唯一ID

5.跨库查询

 

分布式:

XA

AP/RM/TM 

 

AP->tx->TM

AP->XA Native API->RM

TM<--XA-->RM

 

两阶段提交

 

 

paxos协议-->ZooKeeper

集群内数据一致性的算法:Quorum、vector clock

 

多机sequence

1.唯一性

2.连续性

 

UUID

ID生成器

1.一个生成

2.规则生成器在各个服务器

week:

1.性能

2.稳定性

3.存储问题

 

跨库Join

1.业务多次查询

2.数据冗余

3.借助外部系统(引擎)

 

跨库查询

1.按特点分库分表

2.合并-->排序,函数处理,求均值,非排序分页,排序分页

 

数据库访问层

1.api方式

2.JDBC方式

3.ORM/类ORM方式

 

SQL规则处理

1.固定哈希算法

2.一致性哈希算法

3.虚拟节点对一致性哈希算法的改进

4.映射表与规则自定义计算方式

 

数据源连接

1.DataSource

2.groupDataSource

3.AtomDataSource

 

数据库访问实现方式

1.jar

2.proxy

 

读写分离的挑战与应对

场景

1.数据结构相同,多从库对应一主库

2.主/备库分库方式不同的数据复制

3.引入数据变更平台(Extractors,Applier,Pipleline)

 

数据平滑迁移

1.增量日志

2.复制数据到新库,并有新数据更新进来

3.全量迁移结束后,增量日志的数据也进行迁移

4.数据比对,记录差异

5.停止源数据对要迁移走的数据的写操作,后进行增量日志的处理,新库数据是新的

6.更新路由规则,所以新数据的读或写就到了新库

 

 

消息中间件

 

消息发送的一致性

1.分布式事务。-->XA协议

2.入库回调

 

消息中间件与使用者的强依赖问题

1.提升中间件系统的可靠性

2.消息存储位置与方式

 

限制

1.需要确定要发送的消息内容

2.需要实现对业务的检查

 

消息模型

1.Queue

2.Topic

 

集群

1.先Topic

2.消息中转

3.再Queue

 

订阅消息的方式

1.持久订阅

2.非持久订阅

 

保证消息可靠性的做法

1.持久订阅

2.消息存储

 

消息发送端可靠性的保证

回调检查

 

消息存储的可靠性保证

1.基于文件的消息存储-->查询,文件的空洞

2.数据库存储

3.双机存储

 

消息系统的扩容

1.中间件的扩容

2.存储的扩容-->1.不保证消息顺序2.不支持主动获取消息

 

消息投递的可靠性

消息投递的可靠性

投递处理的优化

1.线程池投递,结果进内存,再进行批量操作。

2.单机多订阅者共享链接

3.消息只发送一次,然后传到单机的多订阅都是生成多个实例处理。

 

订阅者角度的消息重复

原因

一.消息发送端发送重复

1.消息中间件收到消息存储成功后,中间件出现问题,导致应用端没有收到消息发送成功的返回,而进行重试

2.消息中间件负载高响应慢,返回结果超时

3.返回出现网络问题

二.消息中间件发送重复

1.接收者接收成功,处理完毕后应用出问题,消息中间件没有收到处理结果

2.接收者接收成功,处理完毕后网络出问题,消息中间件没有收到处理结果

3.接收者接收成功,处理时间长超时,消息中间件没有收到处理结果

4.中间件发送成功后,中间件出问题,没收到回复

5.中间件收到结果,但消息存储出问题,没更新投递状态。

 

处理方式

1.分布式事务处理-->比较复杂,成本也高

2.消息接收端做幂等操作-->接收端应用带来限制与门槛

 

JMS的消息确认方式与消息重复的关系

1.AUTO_ACKNOWLEDGE-->客户端自动确认,但可能消息还没得及处理或尚未处理完成。

2.CLIENT_ACKNOWLEDGE-->客户端自己确认,需主动调用Message接口的ackownledge()方法确认。

3.DUPS_OK_ACKNOWLEDGE-->消息接收方处理完成后进行确认。

 

接收者会出现两种情

1.at least once(至少一次)

1.at most once(至多一次)

 

消息传递的其他属性

1.优先级

2.订阅者消息处理顺序和分级订阅

3.自定义属性

4.局部顺序

 

                            push                   pull

1.数据传输状态            保存在服务端         保存在消费端

2.传输失败,重试   服务端维护传输状态,需重试  不需要

3.数据传输实时性     非常实时              短轮询依赖pull间隔时间,长轮询与push一致

4.流控机制      服务端需要订阅者的消费能力做流控  消费者可以根据自身的消费能力决定是否去pull消息

 

 

 

 

 

 

 

 

  

 

分享到:
评论

相关推荐

    大型网站系统与Java中间件实践(书签版)

    希望读者通过《大型网站系统与Java中间件实践》可以了解大型网站架构变迁过程中的较为通用的问题和解法,并了解构建支撑大型网站的 Java 中间件的实践经验。对于有一定网站开发、设计经验,并想了解大型网站架构和...

    大型网站系统与JAVA中间件实践(超清版)

    《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...

    大型网站系统与Java中间件实践

    《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...

    大型网站系统与JAVA中间件实践

    《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...

    大型网站系统与java中间件实践

    《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...

    大型网站技术架构 核心原理与案例分析+李智慧-高清 和 大型网站系统与JAVA中间件实践

    《大型网站技术架构:核心原理与案例分析》与《大型网站系统与JAVA中间件实践》这两本书是深入探讨现代互联网企业级应用开发的关键资源。它们涵盖了构建和优化大规模网站所需的诸多核心技术,包括分布式系统、Java...

    《大型网站系统与JAVA中间件实践》 PDF

    《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...

    大型网站系统与JAVA中间件实践-高清-带目录

    《大型网站系统与Java中间件实践》围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构...

    大型网站系统与Java中间件实践.rar

    《大型网站系统与Java中间件实践》是一本深入探讨如何构建和优化大型互联网系统的书籍,主要聚焦于Java技术栈和中间件的实践应用。通过阅读这本书,我们可以了解到一系列关键的技术概念和最佳实践,这些对于任何想要...

    大型网站系统与JAVA中间件实践_切边适合Kindle_pdf扫描版清晰

    《大型网站系统与JAVA中间件实践》,pdf扫描版,非常清晰(几乎和文字版一样)。已经切边(去除四周的空白处),适合在kindle上阅读。竖屏可以,横屏更好(字号变大)。 书籍介绍: 《大型网站系统与Java中间件实践...

    大型网站系统与JAVA中间件实践-高清完整版

    大型网站系统与JAVA中间件实践-高清完整版,大型网站系统与JAVA中间件实践-高清完整版。

    大型网站系统与Java中间件实践读书笔记(二)

    【大型网站系统与Java中间件实践读书笔记(二)】 大型网站系统是指处理海量数据、应对高并发访问、以及应对复杂业务逻辑的网络应用。在这些系统中,Java中间件扮演着关键角色,帮助实现系统的扩展性和高效运行。...

    《大型网站系统与java中间件实践》读书笔记ppt分享

    《大型网站系统与java中间件实践》读书笔记ppt分享,纯自己用心编写,同时也给同事做了分享,不过当时很多自己讲的内容没有备注进去

    大型网站系统与Java中间件实践PDF

    《大型网站系统与Java中间件实践》是一本深入探讨如何构建和优化大型网站系统的专业书籍,特别适合高级工程师阅读。本书全面涵盖了Java中间件技术在构建高性能、高可用性、可扩展性的大型网站中的应用。Java中间件是...

    大型网站系统与java中间件实践 pdf下载 高清完整版

    ### 大型网站系统与Java中间件实践 #### 一、大型网站系统概述 大型网站系统是指能够处理海量用户...希望读者通过阅读《大型网站系统与Java中间件实践》这本PDF书籍,能够深入了解并掌握相关的核心技术和最佳实践。

    大型网站系统 与 JAVA 中间件实践 曾宪杰

    《大型网站系统与JAVA中间件实践》是曾宪杰撰写的一本深入探讨Java中间件在构建大规模网站系统中的应用的著作。这本书详细介绍了如何利用Java技术栈解决在开发和运维大型网站过程中遇到的各种挑战,旨在帮助读者理解...

Global site tag (gtag.js) - Google Analytics