- [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算法分布到多个节点上,适用于数据集比较大且需要进行聚类的情况。
最后
本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们
目录:
Java面试核心知识点
一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!
Java面试核心知识点
已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了
62158)]
Java面试核心知识点
已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了
[外链图片转存中…(img-sZmanfvM-1720031362158)]