Dubbo、Nacos服务框架的介绍

TCP/IP五层协议:

  1. 应用层:HTTP、FTP等
  2. 传输层:
    TCP:向应用程序提供面向连接的服务,提供流量控制和拥塞控制
    UDP:无连接服务,不提供流量控制和拥塞控制
  3. 网络层
  4. 数据链路层
  5. 物理层

RPC:
在这里插入图片描述

  1. RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务
  2. 从通信协议的层面,大致可以分为:
    1)基于HTTP协议的(例如基于文本的SOAP(XML)、REST(JSON)、基于二进制Hessian(Binary));
    2)基于TCP协议的(通常会借助Mina、Netty等高性能网络框架)
  3. 调用服务一般过程:
    1)客户端需要告诉服务器,需要调用的函数(与进程ID存在一个映射)
    2)客户端把参数转换成字节流,传给服务端,然后服务端将字节流转换成自身能读取的格式,是一个序列化和反序列化的过程
    3)网络传输层把调用的ID和序列化后的参数传给服务端,然后把计算好的结果序列化传给客户端,因此传输层TCP层即可完成上述过程,gRPC(基于二进制流的消息协议,区别与REST采用JSON数据完成消息通信)中采用的是HTTP2协议

Web Service:
在这里插入图片描述

  1. 客户端和服务端通过 SOAP 消息(基于HTTP的XML数据格式,也是RPC协议)交换信息,客户端通过 UDDI 注册表(注册中心)查找服务,UDDI 指向 WSDL (描述服务端的服务信息)
  2. 符合 Web 服务体系架构:客户端-注册中心-服务端

Dubbo:
在这里插入图片描述

  1. Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架
  2. 核心部分包含:
    1)远程通讯: 提供对 NIO 框架 的抽象封装如 Netty
    ( NIO 即Non-blocking I/O,通过 SocketChannel 采用线程阻塞的方式监听 IO 事件变更,客户端无需等待IO,满足高并发下网络请求;Netty 作为 NIO 的实现,它对 NIO 进行封装,开发者不需要关注 NIO 的底层原理,并提供了线程池模式以及 Buffer 的重用机制等性能调优方式 用来开发高性能服务端和客户端); 采用二进制(TCP)的传输,相比于 Soap协议(HTTP+XML) 和 REST 形式服务(HTTP+JSON),占用带宽会更少
    2)负载均衡及集群容错机制: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡(默认是按权重设置随机,还可以采用轮询、最小活跃数、一致性哈希即固定发送等方式),失败容错,地址路由,动态配置等集群支持
    3)服务自动注册与发现:不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者
  3. 内置三种服务容器:
    Spring Container、Jetty Container、Log4j Container
  4. 采用分布式服务架构:
    1)分布式服务架构,当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的 分布式服务框架(RPC)是关键
    2)流动计算架构当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的 资源调度和治理中心(SOA)是关键

Nacos:

  1. Nacos ( Dynamic Naming and Configuration Service )是阿里的一个开源产品,它是针对微服务架构中的 服务发现、配置管理、服务治理 的综合性解决方案。微服务简单来说就是将一个项目拆分成多个服务。每一个微服务都是完整的应用,都有自己的业务逻辑和数据库
  2. 核心部分包括:
    1)配置中心:
    在这里插入图片描述
    在微服务架构中,将配置从各应用中剥离出来,对拆分后的各服务节点配置(文件)进行统一管理,应用自身不需要自己去管理配置( 如:用户在配置中心更新配置信息 A 服务和 B 服务及时得到配置更新通知,从配置中心获取更新 )
    配置的管理模型:命名空间(NameSpace)— 配置分组(Group)— 配置集(DataId)
    2)注册中心:
    在这里插入图片描述
    a)服务注册:如:服务端的各服务每5秒向nacos server发送一次心跳,心跳带上了服务名,服务ip,服务端口等信息。同时 nacos server 也会向各服务主动发起健康检查,支持tcp/http检查。如果15秒内无心跳且健康检查失败则认为实例不健康,如果30秒内健康检查失败则剔除实例。
    b)服务发现:消费方需要知道服务生产方的网络位置(IP地址和端口号),进行服务间的远程调用

Dubbo和Nacos:

  1. Dubbo:你能提供3种服务,我能提供4种,他能提供5种,我们组合一波服务搞点事情吧
  2. Nacos:你们的信息都来我这注册一下,由我负责管理,方便别的服务来获取(注册中心)

Nacos、Eureka和Zookeeper:

  1. 三者都可以实现分布式注册中心框架
  2. Zookeeper采用 CP 强一致性原则,在网络分区的产生了抖动情况下不允许注册服务实例;节点采用主从结构
  3. Eureka采用 AP 高可用性原则,在网络分区的的情况允许注册服务实例;节点采用去中心化结构
  4. Nacos选择AP和CP混合形式实现注册中心, 默认情况下采用 AP 高可用性原则
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值