TCP/IP五层协议:
- 应用层:HTTP、FTP等
- 传输层:
TCP:向应用程序提供面向连接的服务,提供流量控制和拥塞控制
UDP:无连接服务,不提供流量控制和拥塞控制 - 网络层
- 数据链路层
- 物理层
RPC:

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

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

- Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架
- 核心部分包含:
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地址,并且能够平滑添加或删除服务提供者 - 内置三种服务容器:
Spring Container、Jetty Container、Log4j Container - 采用分布式服务架构:
1)分布式服务架构,当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的 分布式服务框架(RPC)是关键
2)流动计算架构当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的 资源调度和治理中心(SOA)是关键
Nacos:
- Nacos ( Dynamic Naming and Configuration Service )是阿里的一个开源产品,它是针对微服务架构中的 服务发现、配置管理、服务治理 的综合性解决方案。微服务简单来说就是将一个项目拆分成多个服务。每一个微服务都是完整的应用,都有自己的业务逻辑和数据库
- 核心部分包括:
1)配置中心:

在微服务架构中,将配置从各应用中剥离出来,对拆分后的各服务节点配置(文件)进行统一管理,应用自身不需要自己去管理配置( 如:用户在配置中心更新配置信息 A 服务和 B 服务及时得到配置更新通知,从配置中心获取更新 )
配置的管理模型:命名空间(NameSpace)— 配置分组(Group)— 配置集(DataId)
2)注册中心:

a)服务注册:如:服务端的各服务每5秒向nacos server发送一次心跳,心跳带上了服务名,服务ip,服务端口等信息。同时 nacos server 也会向各服务主动发起健康检查,支持tcp/http检查。如果15秒内无心跳且健康检查失败则认为实例不健康,如果30秒内健康检查失败则剔除实例。
b)服务发现:消费方需要知道服务生产方的网络位置(IP地址和端口号),进行服务间的远程调用
Dubbo和Nacos:
- Dubbo:你能提供3种服务,我能提供4种,他能提供5种,我们组合一波服务搞点事情吧
- Nacos:你们的信息都来我这注册一下,由我负责管理,方便别的服务来获取(注册中心)
Nacos、Eureka和Zookeeper:
- 三者都可以实现分布式注册中心框架
- Zookeeper采用 CP 强一致性原则,在网络分区的产生了抖动情况下不允许注册服务实例;节点采用主从结构
- Eureka采用 AP 高可用性原则,在网络分区的的情况允许注册服务实例;节点采用去中心化结构
- Nacos选择AP和CP混合形式实现注册中心, 默认情况下采用 AP 高可用性原则

被折叠的 条评论
为什么被折叠?



