SOA思维

概念

soa思维即为面向服务开发;
倒退步骤:面向对象思维-->面向接口开发-->面向切面开发-->面向服务开发

概括:SOA思维要求依照业务将服务进行拆分,之后依照同一的中立的接口进行交互.

结构图

相比拟于上一篇文章的httpclient的近程调用,soa中将前端的service中httpclient局部以及后端的controller部门简化为一个公共中立的接口方便使用与调用.

RPC

概念

RPC为近程过程调用--简略了解:一个节点申请另一个节点提供的服务
1.本地过程调用:本地调用办法执行业务
2.近程过程调用:在服务之间,由第三方实现本人的工作的过程.

微服务调用原理

必要两点:
1.依据业务拆分的思维 进行了分布式的设计
2.当服务产生异样时能够主动的实现故障的迁徙(高可用)无需人为的干涉.

传统服务调用形式

因为nginx做负载平衡时须要依赖配置文件.然而当服务器新增/缩小时.都须要手动的批改配置文件.不能自动化的实现.所以临时达不到微服务的规范.

微服务调用形式

步骤:
**1.当服务的提供者启动时,会将本人的服务信息(服务名称/IP/端口号)进行记录
2.服务注册核心须要记录提供者的信息 保护服务列表
3.当服务消费者启动时会链接注册核心.
4.从注册核心中获取服务列表信息,不便下次调用
5.当消费者调用服务时,会依据负载平衡的机制筛选其中的一个服务提供者进行拜访.
6.当服务提供者宕机时,因为注册核心有心跳检测机制,会保护服务列表.当宕机的提供者标识为down
7.当服务列表保护之后,会全网播送告诉所有服务器的消费者更新服务列表信息.**

对于集群阐明

集群为何是奇数台

准则: 搭建集群必须满足公式 现有的节点数量 > N/2

为什么集群的最小单位是3台:
假如:
1台 1-1=0 > 1/2 false
2台 2-1=1 > 2/2 false
3台 3-1=2 > 3/2 true 3台是搭建集群的最小单位.
4台 4-1=3 > 4/2 true 只有大概3台都能够搭建集群.

集群中最多容许宕机的台数为多少:
3台最多容许宕机几台---最多宕机1台
4台最多容许宕机几台---最多宕机1台

从实用性的角度思考问题 发现搭建奇数台和偶数台的容灾能力雷同.所以选用奇数台.

zookeeper

总结:Zookeeper负责服务的协调调度.当客户端发动申请时,返回正确的服务器地址.

zookeeper即为微服务中咱们所要应用的注册核心,以下简称zk,装置运行/搭建集群过程不做赘述,请自行查阅.

zk集群选举的原理

原理阐明: zk集群的选举依据最大值优先的规定,进行选举. 如果集群一旦超过半数以上的票数批准,则入选主机,同时选举完结.

题目: 有1,2,3,4,5,6,7节点顺次启动.
问题1: 谁当主机? 4当主机
问题2: 哪几台永远不能入选主机? 1 2 3

Dubbo框架介绍

官网简介

Apache Dubbo |db| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大外围能力:面向接口的近程办法调用,智能容错和负载平衡,以及服务主动注册和发现

个性

工作原理

和上文中微服务调用过程基本一致

入门案例

1.定义第三方的公共接口我的项目:
消费者和提供者都会依赖此接口来进行传输,其中须要定义pojo类以及service接口

2.提供者阐明:
1).编辑Dubbo的service接口的实现类:
实现公共接口我的项目的service接口(前提我的项目要依赖)
实现类注解要写Dubbo的@Service而不是spring的注解

2).编辑YML配置文件:
端口号/数据源/MP/Dubbo配置(包门路/利用名称(一个服务一个名称)/注册核心/协定)

3.消费者阐明:
1).编辑controller:
注入service:利用dubbo的形式@Reference为接口创立代理对象,利用rpc调用;而不是@Autowired

2).编辑YML配置文件:
端口号/Dubbo配置(包门路/利用名称(一个服务一个名称)/注册核心)

4.启动测试业务

Dubbo题目

问题1: 如果将其中的一个服务的提供者敞开,问 用户拜访是否受影响---不受任何影响
问题2: 如果将dubbo中的注册核心全副敞开,问用户拜访是否受到影响---不受影响,因为消费者将服务列表数据保留到本地.