`

<大型网站系统与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中间件实践.rar

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

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

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

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

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

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

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

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

    《大型网站系统与Java中间件实践》的第一章主要介绍了分布式系统的基础知识,包括其组成、线程与进程的执行模式、网络通信基础知识以及如何将应用扩展到分布式环境,并探讨了分布式系统中的一些难点。 1.1 初识...

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

    在构建大型网站系统时,Java中间件扮演着至关重要的角色,它们是系统架构中的关键组件,为高效、可扩展和稳定的运行提供了基础。本实践主要探讨了如何利用Java中间件来构建高性能、高可用性的互联网服务。以下是相关...

    大型网站系统与Java中间件开发实践 - 曾宪杰.mobi 带目录、书签、超清文字版

    大型网站系统与Java中间件开发实践 - 曾宪杰.mobi 带目录、书签、超清文字版

    大型网站与java中间件实践.rar

    《大型网站与Java中间件实践》一书,由阿里巴巴资深工程师曾宪杰倾力撰写,深入探讨了大型网站从初期发展到复杂系统演进的历史,以及在这个过程中中间件的重要角色。书中详细阐述了如何利用各种中间件技术来解决大型...

    大型网站系统与Java中间件开发实践 完美书签 高清

    《大型网站系统与Java中间件开发实践》是一本深度探讨现代互联网系统构建的书籍,尤其针对使用Java技术栈的企业级应用。这本书详细介绍了如何通过合理的架构设计和高效的中间件技术来构建可扩展、高可用、高性能的...

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

    《大型网站系统与JAVA中间件实战》是一本深入探讨...通过阅读《大型网站系统与JAVA中间件实战》,读者将能够全面了解和掌握这些关键技术,从而在实际项目中游刃有余地应对各种挑战,构建出高效、稳定的大型网站系统。

    大型系统的JAva中间件实践-曾宪杰,淘宝

    标题《大型系统的Java中间件实践-曾宪杰,淘宝》和描述《InfoQ大会上淘宝的Java中间件ppt。非常有用的资料。对于理解分布式系统的架构非常有用。》表明本次分享的主题是关于淘宝在InfoQ大会上的一个关于Java中间件...

    大型网站与中间件实践

    从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁;接着讲述构建 Java 中间件的相关知识

    java中间件实践指南

    《Java中间件实践指南》是一本深度探讨Java技术在大型网站系统中应用的专业书籍。它主要面向那些希望深入了解和掌握Java中间件技术的开发者、架构师以及系统管理员。书中涵盖了一系列核心的Java中间件技术,旨在帮助...

    《JAVA中间件技术及其应用开发》课件

    《JAVA中间件技术及其应用开发》是一门深入探讨Java中间件技术及其实现方法的课程。这门课程的课件涵盖了从基础理论到实践应用的多个方面,旨在帮助学习者全面理解并掌握Java在企业级服务中的核心角色。以下是根据...

    《精通Java中间件编程》源代码.doc

    《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,《精通Java中间件编程》源代码.doc,...

    java中间件学习笔记

    Java中间件的学习是一个涵盖广泛的主题,它涉及到许多用于构建高效、可扩展的后端服务的技术。在本笔记中,我们将重点关注MongoDB的安装、配置以及使用,以及与SpringBoot的集成,同时也涉及到了Redis和Zookeeper的...

    JAVA中间件配置标准

    Java中间件是构建大型分布式应用程序的关键组成部分,它们提供服务、管理资源、处理并发以及实现其他高级功能。在Java开发环境中,正确配置中间件是确保系统性能、稳定性和可扩展性的基础。以下是一些关于"JAVA...

Global site tag (gtag.js) - Google Analytics