集群和分布式的区别
- 为了理解分布式集群这个概念,我们先说说这两个概念:“集群”和“分布式”。艺术来源于生活,计算机科学亦是如此。我们先通过例子,来了解一下现实生活中的“集群”和“分布式”。
- 从开餐馆说起:你开了一家餐馆,自己掌勺后厨(即做菜)。随着生意越来越好,发现自己忙不过来。于是你聘请了两个厨师,你们三位厨师就是一个“集群”。主要的职责是:洗菜、配菜、炒菜。你们关系如下:
- 随着生意越来越好,两种方式增加后厨的生产力:
- (1)继续增加厨师—相当于扩大集群;
- (2)引入流水线的机制,精细化分工。找人分担厨师洗菜、配菜等工作。类似下图
+ 其实,流水线提现了分而治之的思想。即将一个大任务分解为多个小任务,提高小任务的生产力,从而提高了整体的生产力。而 “分布式”解决问题的思路:正是吸取了将大任务分步为多个小任务的思想,才得到通过跨地域的分布解决大问题.
为什么要使用分布式
- (1、为了性能扩展——系统负载高,单台机器无法承载,希望通过使用多台机器来提高系统的负载能力(更多是局部服务的负载能力,比如商品查询服务相对支付服务更需要负载);
- (2、为了增强可靠性——软件不是完美的,网络不是完美的,甚至机器本身也不可能是完美的,随时可能会出错,为了避免故障,需要将业务分散开保留一定的冗余度(一个服务暂时不用,不影响到其他服务正常使用。比如支付服务暂时不可用,不影响账单流水查询服务);
RPC
RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务
RPC原理
RPC协议的底层原理,就是对象的序列化、反序列化以及序列化后数据的传输。
RPC协议的核心组成部分
- 网络传输协议:http,tcp(推荐使用tcp);
- 序列化和反序列化:可以使用Java原生的序列化和反序列化,也可以使用高性能序列化/反序列化工具,如Hessian,FST等,还可以使用表单序列化。
常见的RPC框架
- Dubbo
- Thrift
- Motan
- gRPC
- 自己开发的;
注册中心的作用
- 1.服务端服务的注册和客户端服务的发现
- 2.提高系统的可用性
- 3.提高系统的可伸缩性
- 4.集中管理服务 ;
常见的注册中心:zookeeper,Redis;
服务的发现方式
-
- 直接调用服务地址;
-
- 引入注册中心;