一.分布式系统(部署层面的)
分布式作用:处理高并发的请求和流量。
简单来说,分布式就是若干个独立计算机的集合;一个计算机承受不了越来越大的计算,就用多个计算机(服务器)来运行,提高吞吐;多个服务器在一起做相同的业务就是一个集群;
举例:分布式:首先分布式一定是集群的模式,而集群确不一定是分布式。分布式可以理解为将“单体应用的项目”分解为不同的模块,成为不同的子系统(如:京东——将用户、支付、售后、物流、订单、仓储。。。等分解为子系统),将每个子系统形成自己的集群,成为独立的服务器。分布式的关键点在于,每个子系统之间需要进行通信,则使用RPC进行远程调度。
RPC:远程调用,类似qq聊天里面的远程控制电脑。
分布式中牵涉到负载均衡(请求的合理分配到每个独立的服务器)和心跳机制(集群中的每个服务器需要在设定的时间内给服务注册中心进行报告自己的情况,如果长时间不报告、无回应,注册中心将视该服务器宕机)。
二.微服务架构(设计层面)
微服务的划分力度更细,一个微服务应该是单一职责的,一个微服务解决一个业务(注意是业务问题,不是一个接口);微服务要将自己的业务能力封装并对外提供服务(接口);
应用微服务化后的问题:
1.各服务之间的发现问题:每个服务之间的通信(一般采用轻量级的通信机制,通常用HTTP中的资源API),一个服务怎么去发现另一个服务;如果每一个服务内部都存其他服务的地址,可以做到通信。但太麻烦。所以就需要一个注册中心去管理,所有服务注册到注册中心里,同时每个服务也可以从注册中心获取可用的服务清单。
2.服务配置问题:一个服务因为要用到其他服务,所以要有其他服务的配置,假如服务越来越多 ,一个服务里面的配置也会很多。所以就有了一个配置中心,每个服务都可以从配置中心拿到其他服务。
3.外部调用问题:因为每个服务可能有多个节点(多个计算机运行),而且一个项目里又有那么多任务,服务的授权验证就要统一管理,相当于给外部一个统一的接口,这就是网关。
ps:分布式属于微服务,而微服务不一定属于分布式;因为微服务是把业务拆成独立的单元,并通过接口实现数据交换。但是微服务不一定会分在多个服务器上,小业务在一个服务器也行,所以就没有了分布式的那种多个服务器干一件事的情况。这是他们之间细小的差别。