大型网站系统与Java中间件实践 01 认识分布式
如果感觉文章中的图片不清楚可以查看下面链接:
原图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 消息中间件
异步和解耦
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
PowerDesigner 15学习笔记:十大模型及五大分类
原文: PowerDesigner 15学习笔记:十大模型及五大分类 个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师的模型,还有针对数据库管理人员的模型,这些不同的人使用着同一个工具在各自的领域为软件系统建模而形成一个整体;而且2)这些不同的人在建模的过程中可以互相引用,一处更新可触发所有引用模型更新(对变更的影响可进行分析[影响度分析]),对于大型的软件开发过程中的团队协作相当有利。Powerdesigner 目前因该是应用最多也最受欢迎的CASE工具。 即使对于普通的程序员,学习Powerdesigner工具的使用也有助于提升其对软件生命周期的理解水平,同时提供了看待软件产品的不同视角和纬度。因此学习Powerdesigner 的思想及使用有相当的益处。 本文仅为个人学习笔记。 1、 企业架构模型(Enterprise Architecture Model,EAM) 企业架构模型(EAM),可以帮助你分析和记录您的组织及其业务功能...
- 下一篇
云计算进阶之路——与ACE相约
什么是阿里云ACE 阿里云ACE是Alibaba Cloud Certified Expert|Cloud Architect(阿里云云计算架构师高级认证)的简称,是目前阿里云考试认证的最高级别。在2018年的深圳云栖大会峰会上,阿里云正式对外发布首个云计算架构师ACE级别认证,主要面向业界高端技术人才,通过此认证,可以证明您可以基于阿里云产品进行架构设计并帮助客户解决业务发展中的主要问题,已经具备了合理、有效的设计和部署具有高扩展性、高性能性、高可靠性和高安全性的企业级分布式应用与架构的综合技术能力。自2018年3月底正式上线,阿里云ACE吸引了许多业界内优秀的从事者参与。 ACE的进阶之路 由于从事云计算行业的缘故,在2018年初的时候,我就已经接触到阿里云ACE。那时候,阿里云ACE还处在灰测阶段,会找一些阿里云合作伙伴检验试题的难易度。感觉很幸运,带我入门云计算的老师,他一次就通过了ACE。这对我是很大的激励。彼时,我给自己的2018定下小目标:向优秀的人学习,专注于技术,努力一把,在2018取得ACE证书。目标是明确的,我开始规划自己的云计算进阶之路,分解每一个步骤。其实,云...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能