什么是微服务?分布式和集群又是什么?

什么是微服务?

微服务(Microservice Architecture)是架构设计方式的一种。
简单来说就是将传统的一站式应用,根据业务拆分成一个一个的服务,
每一个微服务提供单个业务功能的服务,一个服务做一件事情。
这个服务可以单独部署运行,拥有自己独立的数据库。
服务之间可以通过RPC来相互交互,
每个微服务都是由独立的小团队开发,测试,部署,上线,
负责它的整个生命周期。

它强调的是服务的大小,关注的是某一个点,
是具体解决某一个问题/提供落地对应服务的一个服务应用,
狭义的看,可以看做是IDEA中的一个个微服务工程,或者Moudel。

微服务架构又是什么?

  • 它提倡将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程内,服务之间互相协调,互相配置,为用户提供最终价值。
  • 服务之间采用轻量级的通信机制互相沟通,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境中,另外,应尽量避免统一的,集中式的服务管理机制。
  • 对具体的一个服务而言,应根据业务上下文,选择合适的语言,工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储;

就如果该系统是有很大用户量,其中某些功能会被频繁访问,或者某些功能计算量很大,建议将应用拆解为多个子系统,各自负责各自功能,这就是微服务架构。


什么是分布式?

不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题,提供可扩展性以及高可用性。

业务中使用分布式的场景主要有分布式存储以及分布式计算。
分布式存储中可以将数据分片到多个节点上,不仅可以提高性能(可扩展性),同时也可以使用多个节点对同一份数据进行备份。


集群

集群是指在几个服务器上部署相同的应用程序来分担客户端的请求。
它是同一个系统部署在不同的服务器上,集群主要的使用场景是为了分担请求的压力。
好比 多个人一起做同样的事。

但是,当压力进一步增大时,比如mysql无法面对大量的“写压力”,
mysql做成集群之后,主要的写压力还是在master的机器上,其他slave机器无法分担写压力,这时,就引出了“分布式”。同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题。

首先分布式一定是集群的模式,而集群确不一定是分布式。
分布式可以理解为将“单体应用的项目”分解为不同的模块,
成为不同的子系统(如:京东——将用户、支付、售后、物流、订单、仓储。。。等分解为子系统),
将每个子系统形成自己的集群,成为独立的服务器。
分布式的关键点在于,每个子系统之间需要进行通信,可以RPC等技术进行远程调度。

分布式中牵涉到负载均衡(请求的合理分配到每个独立的服务器)
和心跳机制(集群中的每个服务器需要在设定的时间内给服务注册中心进行报告自己的情况,
如果长时间不报告、无回应,注册中心将视该服务器宕机)等技术。

你可能感兴趣的:(微服务,分布式)