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

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

1.分布式系统相对集中式而言,是指多台计算机互相通过消息通信进行协作而对外提供服务;可解决大型机的伸缩性和单点等问题;

2.网络i/o有bio/nio,还有aio,aio是指线程拿到消息后并不自己处理或等处理结束之后再响应,而是将消息投递之后继续后面的处理,只将回调传递给被调用方,消息处理完成之后自动由被调用方完成回调,也就是异步io,java7支持aio;

3.分布式系统有几个难点:缺乏全局时钟(可以把时间序号获取交给单独集群来做);面对故障的独立性(要考虑其它模块可靠与不可靠的情况);单点故障处理(能拆分的拆分,能换集群的换集群,不能拆分到最细的做到备份以备自动恢复);事务的挑战(两阶段提交协议,最终一致性等);

4.单机应用演化过程:

1)单机负载告警后,数据库与应用服务器做分享;

2)应用服务器负载告警后应用服务器做集群,涉及负载均衡设备,涉及session问题可将session存cookie或session拷贝或统一session服务管理中心;

3)数据库压力变大,读写分离,涉及数据复制问题和应用对数据源的选择问题,读库前面也可再加缓存,数据实时要求不高还可采用搜索引擎作为读;

4)缓存除了可用来缓存数据,还可用来缓存页面,缓存一切对实时性要求不高的内容;

5)引入分布式存储(文件/kv)系统缓解数据库的存取;

6)读写分离后数据库仍有瓶颈,采用专库专用,数据库的垂直拆分;

7)数据库垂直拆分后再遇到数据库单机瓶颈,考虑水平拆分;此时引入数据存取中间件;

8)数据库问题解决后,新的挑战时采用应用拆分服务化方式;此时引入消息中间件的服务框架中间件;

5.Java中间件主要有三类:服务框架中间件,消息中间件和数据访问中间件;

6.votatile和synchronized的区别:volatile表示每次读写都直接读写主存,不会拷贝到线程存储中,也就是所有线程操作的都是同一份,这并不表示只有一个线程能同时操作;sychronized是表示加锁,保持数据的一致性;

7.Java的Atomics包中的类是一些支持原子性操作的类,它们的性能会有明显的提升是因为Java使用了硬件特性来支持;

8.CountDownLatch是等待线程调用latch.await,等待latch减少到0就能往下走了,而释放线程则使用latch.countDown来每次调用释放1;

9.CyclicBarrier是指所有调用barrier.await的线程都要等到其它线程都执行到这一条语句之后才往后执行,barrier还可以预设一个线程在满足条件后运行;

10.Exchanger是指两个线程都执行到这条语句时互换一个信号,然后各自继续执行;

11.Future是指获取这个结果的线程调用是异步的,代码可以先往下执行,等到要真正要使用这个返回值时如果仍未返回才会停下来,FutureTask是其实现类。

12.并发容器如果有合适场景尽量使用Java提供的,不要自己基于锁去实现;

13.动态代理,是指把类和接口,接口Handler等名称传递进去给Proxy.newProxyInstance方法来动态创建代理的方式,可在方法触发前后甚至触发时进行对应处理,这在服务调用框架之类的客户端或服务端,一些能用Bean可以让用户配置接口,从而生成代理,由代理来处理来自外部的调用,而在调用前后进行替换。

14.服务框架大致是这样实现的:

1)调用端:通过bean配置方式来配置远程服务,服务提供方地址一般通过一个配置中心来给出,动态代理在接口调用时通过服务框架的方法来获取远程对应服务提供方地址,接装请求参数等来进行序列化进行Socket直连(采用bio/nio等),得到响应结果后反序列化为对应的对象返回给上层调用方;超时等问题的处理可通过Future来实现,还可以实现多个调用之间的合并优化,即发起多个类似异步调用,在使用到它们结果时才会卡住;

2)服务方:通过bean配置方式来配置远程服务提供者,启动后注册到对应的配置中心,启动若干个线程(池,用来处理流控)来监听某一个端口的请求,当连接到来时调用具体实现类之前做一些返序列化工具,调用之后再进行一些序列化操作返回给远程调用者; 应用本身与框架的jar包冲突问题通过ClassLoader来解决;

3)服务注册中心:主要用来管理注册来上的调用者和服务提供方,同时可兼具路由管理,信息查看等功能;路由可细化到类或方法,还可通过分组来把同一机房的提供者标识出来;服务升级一般是采用版本号的方式来,即先将服务升级,新老并存,老的调用方全升级后再下线老服务;

15.服务框架实战中的优化,即服务治理需要的内容:服务信息管理,服务质量管理评估,服务容量评估,服务依赖展示,服务分布展示,服务统计,服务报表,服务元数据等;服务管理还有服务的限流,上下线,降级,路由,服务授权管理等等;

16.服务框架与ESB异同,都是面向服务化,服务框架主要考虑同构系统不考虑异构,ESB会考虑不同厂商的实现;

17.数据库水平/垂直拆分的困难:

1)单机的事务机制被打破,要考虑分布式事务的控制;

2)一些单库操作需要到多个库中操作,表连接需要用应用方式来实现;

3)外键约束需要程序来保证而非数据库;

4)依靠单库的自增序列方式要改变;

18.分布式事务有两阶段提交协议,但对大型网站来说还是太复杂而且会有性能问题,比之更轻量的有Paxos协议,其核心原则是少数服务多数;一般能不引入分布式事务就不要引入,如果一定要引入也不追求强一致性而只要求最终一致性,即通过重试的方式把未完成的做完而不回滚;

19.大型网站一致性理论:CAP,即一致性,响应/可用性,部分出问题时仍能工作(Partition-Tolerance),这几个属性之间是互斥的,因此更多是放弃完全一致性,只追求最终一致性即可;

20.跨库查询且要排序是最难处理的问题,等于要将所有分库的数据查出来再运算,应该尽量避免这种情况,尤其是分页到后面数据量更在,如果数据量巨大的,可考虑使用搜索引擎;

21.数据访问中间件的设计一般是在jdbc/orm框架之下加一层用来处理路由,sql分析等;一般会有一堆的数据源需要处理,包括数据的划分规则(取模不易于扩展,考虑一致性哈希,有人退出时旁边的接管之,可以将一个物理结点虚出多个虚拟结点方式缓解任务过于集中的问题),而数据层需要进行如下转换:sql解析,规则处理,sql改写(在各库中表名可能不一样),数据源选择,sql执行,结果集返回合并处理这些步骤。

22.数据访问中间件可以在应用中以jar包方式引入,也可以考虑单独部署一个应用,业务应用只与这个应用打交道,而各种规则由这个应用来解析与执行。

23.读写分享等的数据同步,主要由otter来完成,基于数据库日志解析的,国际站可做到秒级延时,国内可做到ms级,阿里内部现在在做单元化,多地多活等方案,也需要这些同步技术。

24.平滑数据迁移其实是先全量迁移,然后再将这一过程中老库的变更记录在新库执行,这个递归过程会越来越短,当需要迁移的增量很少时,暂停对这部分数据的写操作,然后快速完成处理,切换路由到新库。

25.消息中间件可解耦应用之间的依赖,而且一般用业解决异步调用等实时性要求不高的问题,比如登录后发短信或是数据同步,记录日志这些。

26.消息投递与业务处理的一致性问题很长时候都需要保证,一些可让用户随意重复的除外,因此需要引入事务类似的方式,但分布式事务成本太高,所以一个相对折中的方案是:

1)发送消息给消息中间件;

2)消息中间件入库消息;

3)消息中间件返回结果;

4)业务操作;

5)发送业务操作结果给消息中间件;

6)更改存储中的消息状态;

这个方案只有第5第6步可能引发不一致性问题,但这种情况下消息都可以通过消息中间件的未处理消息状态来问消息发送源进行反查。

27.消息中间件一般有topic和queue两种,有不同的应用场景,有时候还需要级联的方式来处理。

28.消息发送端及发送过程的可靠性是通过本地存储+重试的方式来保证,对于失败的消息会保留下来并在消息中心恢复之后重新发送;而对于存储端则一般可采用数据库来存储消息,还可以采用双机内存的方式来加快速度,使存储只在内存中运转并两台机器之间相互备份,一旦一台挂掉则另一台落磁盘存储并接管消息。

29.消息处理端一般都需要保证消息处理操作的等幂性以防止消息投递出错有重复的消息产生;

大型网站系统与JAVA中间件实战 《大型网站系统与JAVA中间件实践》,高清扫描版,内容详尽 立即下载

相关推荐

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

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

基于Java的大型网站设计方案

第一章 分布式系统介绍 分布式系统的定义:组件分布在网络计算机上,组件间仅仅通过消息传递来通信并协调行动。 分布式系统的意义: 升级单机处理能力的性价比越来越低单机处理能力存在瓶颈处于稳定性和可用性的考虑 摩尔定律:当价格不变时,每隔18个月,集成电路上可容纳的晶体管数目会增加一倍,性能也将提升一倍。 线程与进程的执行模式 冯诺依曼结构:输入设备、输入设备、运算

waiting的专栏 4758

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

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

大型网站系统与Java中间件实践学习笔记

分布式系统的基础知识 各种锁 互斥锁:共享资源的使用是互斥的,即一个线程获得资源的使用权后就会将该资源加锁,使用完后会将其解锁,如果在使用过程中有其他线程想要获取该资源的锁,那么它就会被阻塞陷入睡眠状态,直到该资源被解锁才会被唤醒,如果被阻塞的资源不止一个,那么它们都会被唤醒,但是获得资源使用权的是第一个被唤醒的线程,其它线程又陷入沉睡. 读写锁:它拥有读状态加锁、写状态加锁、不加锁这三种状...

IccBoY_超越 530

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

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

常学常新:《Attention Is All You Need》万字解读!

常学常新:《Attention Is All You Need》万字解读!

hunteritself的博客 3644

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

一、分布式系统 分布式系统是一组分布在网络上通过消息传递进行协作的计算机组成系统。 分布式系统的意义: 升级单机处理能力的性价比越来越低 单机处理能力存在瓶颈 出于稳定性和可用性的考虑 摩尔定律:当价格不变时,每隔18个月,集成电路上可容纳的晶体管数目会增加一倍,性能也将提升一倍。 组成计算机的基本要素:输入设备、输出设备、运算器、控制器和存储器。 阿姆达尔定律:s(N)=1/((1...

7Nicedays 281

抖音直播参数逆向实战:手把手教你用Python获取ttwid和x-bogus(附完整代码)

本文深入解析抖音直播接口的反爬机制,重点剖析核心防护参数ttwid和x-bogus的生成原理与作用。通过Python实战,手把手教你逆向获取ttwid、webid等关键参数,并构建稳定的数据采集方案,为开发者提供企业级数据获取能力。

weixin_29196891的博客 1043

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

一、分布式系统介绍 1.1 、初识分布式系统 1.1.1、初识分布式系统定义 1.1.2、初识分布式系统意义 1.2、分布式系统基础知识 1.2.1、组成计算机的五要素 1.2.2、线程与进程的执行模式 1.2.3、网络通信基础知识 1.2.4、如何把应用单机扩展到分布式 1.2.5、分布式系统的难点 二、大型网站及其架构演进过程 2.1、什么是大型网站 2.2、大型网站的架...

Pazz 556

飞控芯片的隐形战场:传感器冗余与实时OS的可靠性革命

本文深入探讨飞控芯片在工业级无人机中的可靠性设计,聚焦传感器冗余架构与实时操作系统(RTOS)的容错机制。通过多IMU备份、自适应加权融合算法及NuttX、ChibiOS等RTOS的故障隔离技术,确保系统在极端环境下毫秒级自愈。文章还涵盖开源生态如PX4的跨平台移植及RISC-V架构的应用,为高可靠性飞控系统提供关键技术参考。

z5a6b的博客 877

保姆级教程:在RK3588开发板上用MPP库实现H.264硬编码(附完整代码)

本文详细介绍了在RK3588开发板上使用MPP库实现H.264硬编码的全流程,包括环境准备、MPP库编译、编码器初始化与配置、数据输入与编码流程以及高级性能优化技巧。通过实战案例和完整代码,帮助开发者充分利用RK3588的VPU硬件加速能力,提升视频编码效率和质量。

weixin_28716769的博客 414

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

福利置顶,pdf下载链接:http://pan.baidu.com/s/1boE2xBp 密码:iu6o 书籍还算不错,把分布式系统各种可能的问题都细致地分析一遍,并给出几种解决方法和最佳的方案,这一点值得肯定。分布式系统最怕的问题就是一致性问题,很多章节都是围绕这个问题去阐述的,给出各种环节/节点可能出现不一致的原因,并给出解决方法。

lonelymanontheway的博客 1013

STM32 SYSTICK定时器及延时函数详解

STM32 SYSTICK及延时函数详解 SysTick定时器 SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心

w1050321758的博客 2366

读书笔记:《大型网站系统与Java中间件实践》

文章目录大型网站演进数据库读问题写问题应用应对的挑战引入服务层框架:多机房问题序列化与反序列化问题异步调用线程池隔离服务请求合并数据访问层一致性的基础理论--CAP/BASE多机的Sequence问题消息中间件功能消息一致性避免对消息中间件的强依赖级联、嵌套topic/queue消息发送到中间件的可靠性保证(发送可靠)消息投递的可靠性保证(消费可靠)消息者重复消费避免投递线程被阻塞 大型网站演进 ...

thewindkee的博客 332

对族实例进行任意的矩阵变换,需要什么样的族?

问:一个小问题,想向您请教一下。 能不能实现一个这样的操作:创建了一个常规模型的FamilyInstance,然后知道旋转和平移的矩阵,能否根据变换矩阵更新FamilyInstance的位置,绕任意轴旋转任意角度。 请问什么样的实体才能在revit项目文件中任意旋转?貌似一般的实例只能在XY平面内旋转,并且LocationPoint中只有一个Rotation参数。答:您好,因为Revit里面的构件

我爱Revit —— BIM应用及BIM应用软件解决方案专栏 3626

软考「系统规划与管理师(第2版)」通关全攻略(2026年下半年)

它考的是一个IT管理者能不能用体系化的语言,把"我们为什么要建这个系统→怎么规划→怎么管好服务→怎么合规"讲圆。所以备考的核心策略也很明确——教材建框架 → 真题磨考点 → 案例练结构 → 论文备好真实项目素材 → 机考练打字。按计划走,不贪全、不盲刷、不死背,稳稳把三科都推过45分那条线。祝你通关 🎯。

软件行业技术文化交流。 3041

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

a) -->负载均衡(硬件、软件)/DNS -->名称服务 -->规则服务器 -->Master-Worker -->阿姆达尔定律 -->多线程交互模式 -->互不通信,没有交集,各自执行各自的任务和逻辑 -->基于共享容器(如队列)协同的多线程模式->生产者-消费者->队列 -->通过事件协同的多线程模式->如B线程需要等到某个状态或事件发生后才能继续工作,而这个状态改变或者事

小李专栏 4860

抖音中动态生成msToken的方法

抖音中动态生成msToken的方法

sh_moranliunian的博客 2483

《大型网站系统与Java中间件实践》之构建Java中间件读书笔记

初始中间件 中间件为软件应用提供了操作系统所提供之外的服务,可以吧中间件描述为“软件胶水”。中间件不仅是操作系统的一部分,不是数据库管理系统,也不是软件应用的一部分,而是能够让软件开发者方便地处理通信、输入和输出,能够专注在它们自己应用的部分。 《大型网站系统与Java中间件实践》主要介绍的是下面三个领域的中间件: 远程过程调用和对象访问中间件:主要解决分布式环境下应用的互相

qq_37385181的博客 462

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

  分布式系统介绍 大型网站的框架演进过程 大型网站访问量和数据量缺一不可 大型网站最核心的就是计算和存储 应用服务器从一台变为两台,,需要解决两个问题 用户对服务器如何选择(负载均衡) Session问题 session问题如何解决 Session sticky 需要负载均衡器对每次会话的标志进行请求转发,让同样的session每次都送到同一个服务器上 会产生一些问题:...

qq_39843374的博客 994

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

大型系统的java中间件实践_《大型网站系统与JAVA中间件实践》读书笔记-消息中间件...

消息中间件1.消息中间件的价值1.1透过示例看消息中间件对应用的解耦1.1.1.通过服务调用让其他系统感知事件发生的方式假设我们要做一个用户登录系统,其中需要支持的一个功能是,用户登录成功 后发送一条短信到用户的手机,算是一个用户安全的选项,如图6-2所示。然后,我们需要把用户登录的信息(时间、IP、用户名等数据)传给我们的安全 系统,安全系统会进行安全策略相关的处理和判断。此时的结构会变成图6...

weixin_39956110的博客 199

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

《大型网站系统与JAVA中间件实践》读书笔记-大型网站架构演进

大型网站架构演进 大型网站是一种很常见的分布式系统,除了海量数据和高并发的访问量,本身业务和系统也复杂。 大型网站的架构演进 我们现在常用的大型网站都是从小网站一步一步发展起来的,这个过程中会 有一些通用的问题要解决,而这些也是我们构建中间件系统的基础,那么我们就 从最简单的网站结构开始,看看随着网站从小到大的变化,网站架构发生了哪些 变化。 a.用Java技术和单机来构建的网站 ...

weixin_30251829的博客 568

《大型网站系统与JAVA中间件实践》读书笔记

《大型网站系统与JAVA中间件实践》读书笔记

jamsonwoo的专栏 882

《大型网站系统与JAVA中间件实践》读书笔记-消息中间件

消息中间件 1.消息中间件的价值 1.1透过示例看消息中间件对应用的解耦 1.1.1.通过服务调用让其他系统感知事件发生的方式 假设我们要做一个用户登录系统,其中需要支持的一个功能是,用户登录成功 后发送一条短信到用户的手机,算是一个用户安全的选项,如图6-2所示。 然后,我们需要把用户登录的信息(时间、IP、用户名等数据)传给我们的安全 系统,安全系统会进行安全策略相关...

weixin_30737433的博客 207
上一篇: spdy vs http + ocean
ioscodelover
博客等级 码龄12年 3粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值