- 水平拆分指的是单一的节点无法满足性能的需求 , 需要进行数量上的扩展 。每一个节点都具有相同的功能 , 每一个节点都负责一部分请求 , 节点们组成一个集群 , 对外进行提供服务 。
- 垂直拆分指的是按照功能进行拆分 , 秉着"专业的人干专业的事" , 把复杂的系统拆分成各个模块 。模块之间通过RPC进行通信 , 可以做到高内聚、低耦合 , 每个模块独立部署和维护 , 可以快速迭代响应市场需求 。
文章插图
分布式(Distributed)架构:分布式系统是由集中式系统逐渐演变而来 。所谓的集中式系统 , 就是把系统中所用的功能都集中到一起 , 从而向外提供服务的单体应用 。软件行业是没有银弹的 , 每一个被发明出来的新技术 , 都是一把双刃剑 , 都是在特定的领域解决了某些老问题 , 但是同时也会带来新的问题 。那么微服务这种分布式架构解决了什么老问题?同时它又带来了哪些新问题呢?
解决了老问题
微服务这种分布式架构主要解决了单体架构存在的一些问题 。
- 各个服务可以使用不同的语言开发 , 可以利用不同语言的优势开发不同模块 。
- 服务之间可以做到高内聚、低耦合 。每个服务可以独立维护、部署 , 可以快速响应市场需求 。
- 可以单独对某个有高并发、大流量的服务单独进行优化 , 不浪费资源 。
- 系统的监控难度加大 。
- 数据的一致性成为问题 。
- 系统的复杂度提高 , 系统的维护、设计成本增加 , 调试、纠错难度加大 。
为啥会有这个数据一致性问题呢?
单体架构按照文中的说法 , 是一种不太时髦的架构方式 , 都能轻松解决数据一致性问题 , 新发明的分布式架构却又成了一个棘手的问题 , 这个到底是技术的进步还是技术在退步呢?哈哈(我的一点点吐槽)!!接下来我来解释一下为啥分布式系统会有这样的问题 。分布式系统每个功能大都部署在不同的服务器上 , 部署在不同国家和地区的服务器中 , 部署在不同的网络中 , 部署在不同国家和地区的网络中 。这样一个需要大量的服务器共同协作 , 向外提供服务的系统 , 面临着诸多的挑战:
- 良莠不齐的服务器和系统能力
- 不可靠的网络
服务器的机房发生火灾、断电等事故 。支付宝出现过服务器的电缆被挖断的问题 。
- 普遍存在的单点故障
分布式系统就是这样一些处在不同区域、有着不同能力和拥有单一功能的服务组成 , 他们通力合作才能向外提供服务 , 那如何保证他们的状态、信息一致并且协调有序就成了一个难题 。
分布式系统就是要解决解决集中式的单体架构系统的各种缺陷 , 实现整个系统的 高性能 、高可用、可扩展,但是要实现这三个目标并不容易 , 将系统进行拆分的过程中会出现上文中说到的问题 , 为了解决这些问题 , 诞生了很多关于分布式的基本理论 , 比如CAP、BASE等等 。
推荐阅读
- 从零开始教你安装Oracle数据库
- excel怎么输入下拉选项-excel中设置下拉列表的输入-_1
- 不喜欢摄影?照片拍不出它的美
- 手机上的Linux:Termux
- ae复制粘贴快捷键是什么?ae的复制键_2
- 东汉邓太后的历史评价?汉朝的邓太后
- 初窥 Python 的 import 机制
- PLC的基本知识?plc的一些基础知识点
- 修复Windows 10更新错误的最佳方法
- 基于SpringBoot的微服务架构与K8S容器部署实践