黑狐家游戏

分布式微服务架构:原理与实战,大白话讲分布式和微服务区别

欧气 1 0

本文目录导读:

  1. 分布式系统
  2. 微服务
  3. 分布式和微服务的区别

大白话讲分布式和微服务区别

分布式微服务架构:原理与实战,大白话讲分布式和微服务区别

图片来源于网络,如有侵权联系删除

分布式系统

1、概念

- 想象一下,你要做一个超级大的项目,就像盖一栋超级大的楼,如果一个人或者一个小团队来做,可能要花很长时间,而且可能会忙得晕头转向,分布式系统就像是把这个大项目拆分成好几个小项目,分给不同的小团队(或者说不同的计算机节点)去做,比如说,有专门做地基的团队(节点),有做楼体框架的团队(节点),还有做内部装修的团队(节点),这些小团队(节点)分布在不同的地方(不同的服务器或者计算设备),各自完成自己的那部分工作,然后把这些工作成果组合起来,就成了这个超级大的项目(完整的系统)。

- 从技术角度来说,分布式系统是由多个通过网络连接的计算机节点组成的系统,这些节点可以是服务器、PC机或者其他计算设备,它们协同工作,共同完成一个任务或者提供一组服务。

2、特点

资源共享

- 在分布式系统里,各个节点可以共享资源,就像住在公寓里,大家可以共享一些设施一样,有的节点可能有大量的存储空间,其他节点就可以通过网络来使用这部分存储空间,这样做的好处是可以充分利用各个节点的资源,避免资源的浪费,比如说,一个公司有很多台服务器,有些服务器的内存使用率不高,有些服务器的硬盘空间还有很多剩余,通过分布式系统的资源共享机制,就可以把那些使用率不高的内存和剩余的硬盘空间利用起来,提高整个公司的资源利用率。

可扩展性

- 这是分布式系统的一个很大的优势,如果你的业务发展了,需要处理更多的任务,就像原来的小饭店变成了大饭店,需要更多的人手和空间一样,在分布式系统里,你可以很容易地添加新的节点,原来有5台服务器组成的分布式系统来处理用户的订单,随着用户数量的增加,订单量太大处理不过来,那就再增加3台服务器,这些新的服务器加入到系统中后,就可以分担原来服务器的压力,让整个系统能够处理更多的订单。

可靠性

- 分布式系统就像一个有很多备份的文件,如果其中一个节点出了问题,比如说某个服务器死机了,就像文件的一部分损坏了,但是因为有其他节点在,整个系统还能正常工作,就像文件的其他备份还能让你看到完整的内容一样,因为数据和任务是分布在多个节点上的,所以单个节点的故障不会导致整个系统的崩溃,在一个分布式的存储系统中,如果一个存储节点损坏了,系统可以从其他存储节点获取数据,保证用户数据的可用性。

微服务

1、概念

分布式微服务架构:原理与实战,大白话讲分布式和微服务区别

图片来源于网络,如有侵权联系删除

- 微服务就像是把一个大的软件系统(比如一个大型的电商平台)拆分成很多个非常小的服务,这些小服务就像一个个小的功能模块,每个小服务都有自己独立的功能,而且可以独立开发、独立部署、独立运行,比如说,电商平台里有用户管理服务,专门负责用户的注册、登录、信息修改等功能;有商品管理服务,负责商品的添加、删除、修改、查询等功能;还有订单管理服务,负责订单的生成、处理、发货等功能,每个服务就像一个小的独立的软件,它们之间通过轻量级的通信机制(比如RESTful API)来交互信息。

2、特点

独立开发与部署

- 微服务的每个服务都可以由不同的团队来开发,就像不同的小作坊各自制作不同的小零件一样,一个大公司的电商业务,用户管理服务可以由一个小团队来开发,这个团队可以使用自己熟悉的技术栈,比如用Java开发,而商品管理服务可以由另一个小团队来开发,他们可能更喜欢用Python开发,每个服务都可以独立部署,当用户管理服务开发完成并且测试通过后,就可以直接部署到服务器上,不需要等待其他服务的开发进度,这就大大提高了开发的效率,也方便了系统的迭代升级。

技术多样性

- 由于每个微服务可以独立选择技术栈,所以在一个微服务架构的系统中可能会出现多种技术并存的情况,还是以电商平台为例,用户管理服务可能基于Java和Spring框架开发,因为它需要处理大量的用户数据和高并发的登录请求,Java在这方面有很好的性能和稳定性,而商品展示服务可能使用Node.js来开发,因为Node.js在处理网络请求和快速渲染页面方面有优势,这种技术多样性可以让每个服务根据自己的需求选择最合适的技术,而不是被整个系统的技术框架所限制。

灵活性与可维护性

- 微服务架构下的系统很灵活,如果某个服务出现了问题,比如订单管理服务出了故障,只需要定位和修复这个服务就可以了,不需要像传统的单体应用那样,要在整个大的代码库中去查找问题,如果要对某个服务进行功能升级或者优化,也只需要在这个服务内部进行修改,不会影响到其他服务,比如说,要给商品管理服务增加一个新的商品分类功能,开发人员只需要在商品管理服务的代码里进行修改,然后重新部署这个服务就可以了,其他服务如用户管理服务和订单管理服务仍然可以正常运行。

分布式和微服务的区别

1、粒度不同

- 分布式系统的拆分更多是从资源和任务的角度,它的粒度相对较粗,比如说,一个分布式系统可能把整个系统按照功能模块和资源需求拆分成几个大的部分,像把一个大型的企业管理系统拆分成财务模块、人力资源模块、销售模块等,每个模块可能包含很多相关的功能,并且分布在不同的节点上运行,而微服务的粒度更细,它把每个大的功能模块进一步拆分成非常小的服务,像在销售模块里,可能又拆分成订单管理服务、客户关系管理服务、销售数据分析服务等。

2、架构目标侧重不同

分布式微服务架构:原理与实战,大白话讲分布式和微服务区别

图片来源于网络,如有侵权联系删除

- 分布式系统更侧重于资源的利用、系统的可扩展性和可靠性,它的目标是通过将系统分布在多个节点上,充分利用各个节点的资源,提高系统整体的处理能力,并且保证系统在部分节点出现故障时仍然能够正常运行,在一个分布式的大数据处理系统中,主要考虑的是如何将大量的数据存储在不同的节点上,并且高效地进行数据处理,同时保证数据的安全性和可用性。

- 微服务则侧重于软件的开发效率、灵活性和可维护性,通过将一个大的软件系统拆分成很多小的服务,每个服务可以独立开发、部署和运行,方便不同的团队并行工作,提高开发速度,并且在系统运行过程中便于对某个服务进行修改和维护,而不会对整个系统造成太大的影响,比如在一个快速迭代的互联网应用中,微服务架构可以让开发团队快速地添加新的功能或者修复某个功能的漏洞。

3、通信方式

- 在分布式系统中,节点之间的通信方式可能比较多样化,包括远程过程调用(RPC)、消息队列等,而且这些通信方式更多是从系统底层的资源共享和任务协同的角度来设计的,在一个分布式的数据库系统中,不同的数据库节点之间可能通过RPC来进行数据的同步和查询操作。

- 微服务之间主要采用轻量级的通信方式,如RESTful API,这种通信方式简单、易于理解和实现,并且很适合微服务这种独立开发、独立部署的架构,用户管理服务要获取商品管理服务中的商品信息,就可以通过向商品管理服务发送一个RESTful API请求来获取数据。

4、数据管理

- 分布式系统在数据管理方面可能更注重数据的分布存储和一致性,因为数据分布在不同的节点上,如何保证数据的一致性是一个关键问题,比如在一个分布式文件系统中,要确保不同节点上存储的文件副本在内容上是一致的,这可能需要采用一些复杂的数据一致性算法,如Paxos或者Raft算法。

- 微服务架构下,每个微服务可以有自己独立的数据存储,用户管理服务可以使用关系型数据库(如MySQL)来存储用户信息,而订单管理服务可以使用非关系型数据库(如MongoDB)来存储订单信息,虽然每个微服务管理自己的数据,但在需要跨服务的数据交互时,也需要考虑数据的一致性和完整性问题,不过这种情况相对分布式系统来说,处理的范围和复杂度要小一些。

分布式系统和微服务虽然有一些区别,但它们也有很多联系,在现代的大型软件系统中,往往会同时采用分布式和微服务的思想,构建出既高效又灵活的系统架构。

标签: #分布式 #微服务 #原理 #实战

黑狐家游戏
  • 评论列表

留言评论