* [4.2.1 基于Redis的分布式存储实现](#421_Redis_110)
* [4.2.2 基于Cassandra的分布式存储实现](#422_Cassandra_130)
- [4.3 分布式锁实现](#43__153)
- * [4.3.2 基于Zookeeper的分布式锁实现](#432_Zookeeper_200)
+ [实际应用场景](#_255)
+ - [5.1 微博的负载均衡实践](#51__257)
- [5.3 支付宝的分布式锁实践](#53__267)
- [6.2 分布式存储工具](#62__275)
- [6.3 分布式计算框架](#63__280)
- [6.4 分布式锁工具](#64__285)
- [6 Kubernetes:一种容器编排技术,支持自动伸缩和横向扩展微服务。](#6_Kubernetes_291)
+ [总结:未来发展趋势与挑战](#_294)
+ - [Q4:什么是架构模式?](#Q4_307)
- [Q6:负载均衡算法有哪些?](#Q6_311)
- [Q8:分布式锁算法有哪些?](#Q8_316)
背景介绍
1.1 软件架构的定义
软件架构(Softons)、以及这些元素和关系的外部可视化(external properties)。它是软件系统整体构想和设计的模型,是一个系统的高层次设计,也是系统的蓝图。
1.2 软件架构的意义
良好的软件架构可以带来以下好处:
- 可维护性:好的软件架构架构可以使得软件系统的模块更容易被重用在其他项目中;
- 可靠性:好的软件架构可以使得软件系统更少发生故障和错误;
- 可伸缩性:好的软件架构可以使得软件系统可以处理更多的负载。
1.3 软件架构的演变
软件架构的演变历经构演变为二层架构,即将业务逻辑和数据存储分离到两台物理机器上;
- 三层架构:随着Web的发展,软件架构演变为三层架构,即将表示层、业务逻辑层和数据存储层分离到三台物理机器上;
- SOA架构:随着服务化的需求,软件架构演变为SOA架构通过标准的协议进行通信和交互;
- 微服务架构:近年来,随着云计算和容器技术的普及,软件架构演变为微服务架构,即将软件系统分解为大量小型服务,每个服务独立运行,通过轻量级的RPC或HTTP协议进行通信和交互。
核心概念与联系
##iew-Controller架构,是三层架构的一种变种,将表示层分为视图层和控制层,实现了解耦和可重用;
- SOA架构:Service-Oriented Architecture架构,是一种面向服务的架构风格,将软件系统分解为多个独立的服务,通过标准的协议进行通信和交互;RPC或HTTP协议进行通信和交互。
2.2 架构模式
架构模式(Architectural Pattern)是指一种解决特定问题的方法,可以应用于不同的架构风格中。常见的架构模式包括:
- 前端渲染:即在客户端(浏览器)上渲染HTML页面,适用于简单的发和低延迟的系统;
- 消息队列:即使用消息队列模式实现异步处理,适用于需要高吞吐量和可靠传输的系统。
2.3 架构原则
架构原则(Architectural Principle)是指一条导航Software Architecture的道路的原则。常见的架构原则包括:模块之间的依赖关系,提高可维护性和可扩展性;
- high cohesion:高内聚,即每个模块只负责一个功能,提高可重用性和可靠性;
- separation of concerns:职责分离,即每个模块只负责一项职责,提高可维护性和可伸缩性;
3. 核心算法原理和具体操作步骤以及数学模型公式详细讲解
3.1 负载均衡算法
负载均衡算法(Load Balancing Algorithm)是指将请求分配到多个服务器上的算法。常见的负载均衡算法包括:
- 轮询算法:即每次请求按照顺序分配到下一个服加权轮询算法:即每次请求按照服务器的权重分配到对应的服务器上,适用于服务器性能存在差异且需要调整权重的情况;
- 随机算法:即每次请求随机选择一个服务器,适用于请求数量很大且服务器性能相当的情况。
3.2 分布式存储算法
个节点上,适用于节点数量变化较少的情况;
- Consistent Hashing with Virtual Nodes:即将数据按照哈希函数分布到多个虚拟节点上,再将虚拟节点映射到真正的节点上,适用于节点数量变化较多的情况;
- Rendezvous Hashing:即将数据按照-Means算法分布到多个节点上,适用于数据集比较大且需要进行聚类的情况。
3.3 分布式锁算法
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-uR8q085U-1712882280026)]