微服务 SOA、RPC、Zookeeper

微服务思想

3.1 SOA思想

3.1.1 什么是SOA思想

面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
作用: 程序构建的代码结构
在这里插入图片描述

3.2 RPC调用

3.2.1 什么是RPC

RPC是远程过程调用(Remote Procedure Call)的缩写形式。SAP系统RPC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。

解释: 在分布式系统中由于项目个数众多有些业务逻辑的处理自己不能独立的完成(独立完成叫做本地过程调用),需要通过其他的服务器才能完成(远程过程调用)

3.3 微服务

说明: 在分布式的环境下,程序可以自动的实现故障的迁移,无需人为的干预.

3.3.1 传统结构分析

在这里插入图片描述

3.3.2 微服务调用方式

在这里插入图片描述
步骤实现:
1.当服务生产者启动时,将服务数据写入到注册中心. 注册中心接收到数据之后动态进行维护.
2.当服务消费者启动时,首先链接注册中心获取数据.
3.注册中心将自己的服务列表信息传给消费者并且保存到消费者本地(内存中)
4.当用户调用服务时,需要通过负载均衡的机制实现业务(RPC)访问
5.注册中心有心跳检测机制 当发现服务器宕机时 则动态的维护服务列表.之后全网广播,通知所有的客户端更新服务列表数据.

3.4 注册中心-Zookeeper

3.4.1 Zookeeper介绍

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在$zookeeper_home\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。(概述图片来源: [1] )
简述: zookeeper 是一款服务"调度"的软件

3.5 关于zk集群说明

3.5.1 搭建集群最小单位?

原则: 剩余节点的数量 > n/2 集群才能正常工作
测试:
1台 1-1 > 1/2 假的 1台不能搭建集群
2台 2-1 > 2/2 假的 2台不能搭建集群
3台 3-1 > 3/2 真的 3台可以搭建集群
最小单位就是3台.

3.5.2 集群为什么是奇数台?

从容灾性角度考虑问题:
3台的集群 最多允许宕机1台 集群可以正常工作 2 > 3/2
4台的集群 最多允许宕机1台 集群可以正常工作 3 > 3/2

结论:从容灾性的角度考虑 发现奇数和偶数的容灾能力相同.所以搭建奇数台.

3.5.3 什么是脑裂

说明: 在集群中如果连续3次出现平票,则有可能发生脑裂的现象.
计算题: 3台节点出现脑裂的现象的概率是多少?
建模: 2台机器(硬币) 进行选举投票 连续 3次出现平票则可能发生脑裂
排列组合: 1/8=12.5%
第一次: 正正,正反,反正,反反 1/2
第二次: 正正,正反,反正,反反 1/2
第三次: 正正,正反,反正,反反 1/2

如何有效降低脑裂的发生: 增加节点的数量一般5-7台

posted @ 2021-02-04 09:55  Liang-shi  阅读(156)  评论(0编辑  收藏  举报