大型网站系统与Java中间件实践 01 认识分布式
01 认识分布式
02 Java中间件
03 分布式框架
如果感觉文章中的图片不清楚可以查看下面链接:
原图VISIO:
https://note.youdao.com/share/?id=7a495e3fba485308f30d700a88ab5689&type=note#/
原图PDF地址:
https://note.youdao.com/share/?id=35600647bd0177daf74252ca9ce45b77&type=note#/
后续会把原图文件同步到Github上面上去。暂时谢分享在有道云上。
1:分布式系统介绍
1.1 什么事分布式系统
1.1.1 分布式系统的定义
是一组联网计算机上的组件,组件之间通过消息传递来通信并协调行动。
1.1.2 分布式系统的意义
单机的缺陷:
- 升级单机处理能力的性价比越来越低。
- 单机处理能力存在瓶颈。
- 单机不能满足稳定性和可用性的考虑。
1.2 分布式系统的基础知识
1.2.1 组成计算机的5要素
输入 + 输出 + CPU + 内存 + 外存
1.2.2 线程和进程
进程是CPU资源分配的最小单位。
线程是CPU资调度的最小单位。线程属于进程,一个进程内的多个线程共享进程的内存空间,而多个进程之间的内存空间是相互独立的。
- 互不通讯的多线程模式
- 基于共享容器协同的多线程模式
生产者和消费者模型。
- 基于事件协同的多线程模式
- 多进程模式
1.2.3 网络通信基础和知识
1.2.3.1 OSI与TCP/IP
1.2.3.2 网络IO实现方式
- BIO 阻塞式IO
- NIO 非阻塞式IO 基于事件驱动采用Reactor模式
- AIO 异步IO
1.2.4 如何把应用丛单机扩展到分布式
1.2.4.1 输入设备的变化
人机交互的输入设备 + 系统间调用者
1.2.4.2 输出设备的变化
人家交互输出设备 + 系统间响应者
1.2.4.3 控制器的变化
1.2.3.4 运算器的变化
1.2.3.5 存储的变化
1.2.5 分布式系统的难点
1.2.5.1 缺乏全局时钟
节点时钟不一致,分布式锁
1.2.5.2 面对故障独立性
多个节点故障,怎么定位
1.2.5.3 处理单点故障
集群,单点做备份,降低垫底故障的影响范围
1.2.5.4 事物的挑战
两阶段提交 最终一致 BASE CAP Paxos
2 大型网站及架构演进过程
2.1 大型网站的特点
高并发 + 海量数据
2.2 大型网站的架构演进
2.2.1 Java技术单机构建的网站
最基本的单体应用 应用服务器和数据库服务器部署在一台机器上
2.2.2 数据库与应用分离
将数据库服务器和应用服务器部署在不同的机器上
2.2.3 应用服务器集群
因为HTTP协议是无状态的,Session有关联用户和服务器的状态
需解决Session的问题
- Session Sticky
根据Session Id在负载均衡器做路由,同一个Session Id总是路由到同一台服务器。
缺点:
1:一台服务器宕机,那么机器的会话数据全部丢失。
2:会话表示是应用层的信息,那么负载均衡服务器需要在应用层进行数据解析,开销比较大。
3:负载均衡服务器变成了一个有状态的节点。
- Session 复制
增加会话同步机制,把会话数据同步到其他服务器上面。
缺点:
1:同步Session数据增加网络带宽的开销。
2:同步会导致每台服务器有集群的数据,导致Session数据的内容占用会很严重。
3:Session数据集中存储
将Session数据存储在存储服务器上。
缺点:
1:读写Session数据引入了网络操作,相对于读取本地数据来说,存在延时和不稳定 但是我们服务器通讯在内网,所以问题不大。
2:存储集群出现问题,就会影响我们的应用。
4:基于Cookie
把Session的数据存储在Cookie里面,
缺点:
1:Cookie长度限制。
2:安全性,依赖于客户端维持状态。
3:性能影响,带宽消耗:每次HTTP请求增加带宽消耗。
2.2.5 数据压力变大,读写分离
2.2.5.1 数据库读写分离
数据库主从同步,更新操作连接主库数据源,查询操作连接从库数据源
2.2.5.2 搜索引擎是一个读库
2.2.5.3 缓存
- 数据缓存
- 页面缓存
2.2.6 引入分布式存储系统
2.2.7 数据库瓶颈
2.2.7.1 专库专用,数据垂直拆分
将不同的业务数据拆分到不同的数据库中。
不能关联查询。
2.2.7.2 数据水平分表
主键一致性
2.2.8 应用面对新挑战
数据拆分,业务越来越大,项目很难修改
2.2.9 消息中间件
异步和解耦
大型网站系统与Java中间件实践 01 认识分布式相关推荐
- 大型网站系统与Java中间件实践
大型网站系统与Java中间件实践(贯通分布式高并发高数据高访问量网站架构与实现之权威著作,九大一线互联网公司CTO联合推荐) 曾宪杰 著 ISBN 978-7-121-22761-5 2014年4 ...
- 专访曾宪杰:大型网站系统与Java中间件实践
摘要:淘宝近10年来历次技术飞跃的参与者.贡献者和带领者曾宪杰做客了CSDN社区问答栏目,担任第四期的嘉宾,带您了解大型网站系统与Java中间件的实践.在活动开始之前,我们采访到了曾老师,一窥他的技术 ...
- 大型网站系统与Java中间件实践pdf
下载地址:网盘下载 基本介绍 编辑 内容简介 到底是本什么书,拥有这样一份作序推荐人列表:阿里集团章文嵩博士|新浪TimYang|去哪网吴永强|丁香园冯大辉|蘑菇街岳旭强|途牛汤峥嵘|豆瓣洪强宁|某电 ...
- 大型网站系统与Java中间件实践 第二章大型网站及其架构演进过程
2.1什么是大型网站 通过第 1 章我们了解了分布式系统的相关基础知识, 大型网站是一种很常见的分布式系统,而本书重点要介绍的中间件系统也是在大型网站的架构变化中出现并发展的,那么我们很有必要从大型网 ...
- 美评网java 作家系统页面_《大型网站系统与Java中间件》读书笔记(上)
前言 只有光头才能变强. 这本书买了一段时间了,之前在杭州没带过去,现在读完第三章,来做做笔记 这本书前三章都在科普和回顾中间件/分布式的基础,讲得非常通俗易懂.在之前已经我写过基础分布式相关文章,大 ...
- 大型网站架构之JAVA中间件
中间件就是在大型网站中,帮助各子模块间实现互相访问,消息共享或统一访问等功能的软件产品.常见的有: 远程服务框架中间件:主要解决各子模块之间互相访问的问题. 消息队列中间件:主要解决各子模之间消息 ...
- 大型网站系统架构实践(一)从简单到复杂
前言 写这篇文章的目的是想用来帮助自己思考和理清头绪,以及如何从一个简单的网站架构演进发展成一个大型网站架构,主要侧重在技术方面 简单的网站 由于我没有做过php,那么就以jsp为例,jsp做网站前端 ...
- 大型网站系统架构实践(五)深入探讨web应用高可用方案
从上篇文章到这篇文章,中间用了一段时间准备,主要是想把东西讲透,同时希望大家给与一些批评和建议,这样我才能有所进步,也希望喜欢我文章的朋友,给个赞,这样我才能更有激情,呵呵. 由于本篇要写的内容有点多 ...
- 大型网站系统架构实践(四)http层负载均衡之haproxy实践篇(一)
方案 上篇文章讲到了负载均衡的相关理论知识,这篇文章我打算讲讲实践方法以及实践中遇到的问题 方案:haproxy http层负载均衡 安装一个haproxy服务,两个web服务 haproxy:192 ...
最新文章
- iphone开发UITable内嵌不同风格Table
- BZOJ 4817: [Sdoi2017]树点涂色(LCT+树剖+线段树)
- LintCode Longest Increasing Continuous Subsequence
- 约瑟夫问题的循环链表实现
- IT职场人生系列之十四:经验积累
- 自定义圆环progressbar
- JavaUtil_00_资源帖
- Android开源项目:GifView——Android显示GIF动画
- 时间选择器 可以选择日期和时间
- IOS开发基础之网易新闻UICollectionView的使用第3天
- 详解 Visual C# 数据库编程
- C++学习之路 | PTA乙级—— 1027 打印沙漏 (20 分)(精简)
- 常见博客网站的robots.txt
- FFM原理及公式推导
- 2021年深度学习哪些方向比较新颖,处于上升期或者朝阳阶段,比较有研究潜力?
- 基于大数据可视化技术的毕业生就业分析服务项目 (软件创新设计期末报告)
- Android常用代码集
- 微信小程序 - 列表并列多排显示
- haswell架构_一个月拥有Intel Haswell原型
- 前端xlsx导入与导出
热门文章
- 013_html水平线
- 学生兴趣爱好管理系统 c语言,《学生兴趣爱好系统.doc
- linux 关闭开机 ftp,解决linux ftp匿名上传、下载开机自启问题
- oralce 数据库监听日志状态及目录:查看监听(使用grid用户登陆):
- idea工程本地依赖_IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题(已解决)...
- python特征选择relieff图像特征优选_ReliefF与QPSO结合的故障特征选择算法
- 存储器的分配与回收算法实现_垃圾内存回收算法
- anaconda怎么运行python程序_Heartrate:如追综心跳般实时动态可视化监测Python程序运行...
- python登录系统的实现方法_python实现用户登录系统
- python爬虫模块_python实现爬虫的模块总结