RPC
即远程过程调用, 主要解决远程通信间的问题,负责屏蔽底层的传输方式(TCP或者UDP)、序列化方式、以及通信细节。
- 如何实现远程调用:interface 通过向上转型并指向某个实例动态代理 通过Proxy.newProxyInstance()创建了一个实例InvocationHandler.invoke在该方法中完成远程方法调用并获取结果
网络通信 netty
注册中心 服务发现如何保持服务
序列化
负载的策略
RPC框架
- 服务层,Service,其中主要部分就是动态代理,主要用于将服务提供者的接口封装成远程服务调用。上层的服务接口用于 Spring 之类的业务框架使用,也是 Spring 的 bean.
- 过滤器层,服务调用职责链,提供多种调用切面供框架自身和使用者扩展,例如负载均衡,性能统计,服务调用完成通知,失败重试等。
- RPC 层,这里就是 RPC 框架的核心部分,包括通信框架,序列化框架,还有用于屏蔽底层通信框架和序列化框架的抽象接口。
- 服务注册中心:负责服务的发布和通知,通常支持对等集群部署,某个节点宕机不会影响整个集群不可用。即使全部宕机,只影响新的节点注册和发布,不影响现有的,因为客户端需要缓存服务路由信息。
- 服务治理中心: 服务治理中心通常包括服务治理接口和服务治理 Portal,架构师,测试人员和系统运维人员通过服务治理 Portal 对服务的运行状态,历史数据,健康度和调用关系等进行可视化的分析和维护,目标是要持续优化服务,防止服务架构腐化,保证服务高质量运行。
dubbo
RPC核心功能
虽然每个服务框架不尽相同,但是还有有一些核心功能是相同的,比如以下功能:
- 服务订阅发布:比如,配置化发布和引用服务,服务自动发现,服务在线注册和取消注册。
- 服务路由:比如,默认提供随机路由,轮询,基于权重的路由,粘滞连接,路由定制功能。
- 集群容错:比如,Failover(失败自动切换),Failback(失败自动恢复),Failfast(快速失败)。
- 服务调用:需要支持:同步调用,异步调用,并行调用。
- 多协议:包括私有协议,公有协议。
- 序列化方式:需要支持二进制和文本类序列化方式。
- 统一配置:支持本地静态配置,支持基于配置中心的动态配置。
分布式算法
TCP/IP
HTTP
HTTP 是一个超文本传输协议。它基于 TCP/IP 来传输文本、图片、视频、音频等 HTTP 不提供数据包的传输功能,也就是数据包从浏览器到服务端再来回的传输和它没关系。这是 TCP/IP 干的。HTTP只是规定了浏览器和服务器之间的通信交互的一种格式
HTTP演进历史
Http/3 QUIC
HTTPS
- http与https的区别,并具体说明https的原理
- https原理,数字签名,数字证书,非对称加密算法过程,有什么问题:超文本传输协议http以明文在客户端与服务器之间传递信息,不安全
https是基于http,通过ssl/tls协议进行文本加密传输;通过CA证书身份认证的协议.相比于http,网站加解密开销增大,使用端口不同,安全性提高.
https使用CA证书避免中间人伪造私钥,通过数字证书和数字签名. server拥有公钥,将公钥发给CA认证机构获取数字证书,server将数字证书以及公钥发给client 传输数据采用对称加密,建立连接采用非对称加密
- TLS 的密码套件命名格式为 密钥交换算法 + 签名算法 + 对称加密算法 + 摘要算法:ECDHE-RSA-AES256-GCM-SHA384
HTTPS涉及的计算环节
-
1、非对称密钥交换。比如RSA, Diffie-Hellman, ECDHE.这类算法的主要作用就是根据客户端和服务端不对称的信息,经过高强度的密钥生成算法,生成对称密钥,用于加解密后续应用消息。
-
2、对称加解密。服务端使用密钥A对响应内容进行加密,客户端使用相同的密钥A对加密内容进行解密,反之亦然。
-
3、消息一致性验证。每一段加密的内容都会附加一个MAC消息,即消息认证码。简单地说就是对内容进行的安全哈希计算,接收方需要校验MAC码。
-
4、证书签名校验。这个阶段主要发生在客户端校验服务端证书身份时,需要对证书签名进行校验,确保证书的真实性。