1.2 RPC架构
1.2.1 RPC框架原理
RPC框架的目标就是让远程过程调用更简单、透明,RPC框架负责屏蔽底层的传输方式(TCP或者UDP)、序列化和通信细节。
RPC框架实现的几个核心技术点总结如下:
1.远程服务提供者需要以某种信使提供服务调用相关的信息,包括但不限于服务接口定义、数据结构,或者中间态的服务定义文件;服务调用者需要通过一定的途径获取远程服务调用的相关信息,如jar包、idl文件等。
2.远程代理对象:服务调用者调用的服务实际是远程服务的本地代理,对于Java语言,它的实现就是JDK的动态代理,通过动态代理的拦截机制,将本地调用封装成远程服务调用。
3.通信:RPC框架与具体的协议无关。如HTTP、RMI等。
4.序列化:远程通信,需要将对象转换成二进制码流进网络传输,不同的序列化框架,支持的数据类型、数据包大小、异常类型及性能等都不同。
业界主流的RPC框架
- Apache Thrift
- Avro-RPC
- Hessian
- gRPC
1.3 SOA服务化架构
SOA是一种粗粒度、松耦合的以服务为中心的架构,接口之间通过定义明确的协议进行通信。
1.3.1 面向服务设计的原则
SOA面向服务的一般原则总结如下:
1.服务可服用;
2.服务共享一个标准协议,这个协议可以是一个IDL文件,java接口定义甚至是接口说明文档;
3.服务是松耦合的:服务被设计为功能相对独立、尽量不依赖其他服务的独立功能提供者。
4.服务是底层逻辑的抽象:只有经服务协议所暴露的服务对外部世界可见,协议之外底层的实现逻辑是不可见的。
5.服务是可组合、可编排的:
6.服务是自治的:逻辑由服务所控制,并位于一个清晰的边界内,服务已经在边界内被控制,不依赖于其他服务。
7.服务是无状态的:服务应当不需要管理状态信息,因此能够维持松耦合性。
7.服务是可被自动发现的:服务发布上线后,允许被其他消费者自动发现;当服务提供者下线后,允许消费接受服务下线通知。
1.3.2 服务治理
SOA服务治理主要包括如下几个方面:
1.服务定义:SOA治理最基础的方面就是监视服务的创建过程。必须对服务进行标识,描述其功能,确定其行为范围并设计其接口。
2.服务生命周期管理:服务需要进行规范、设计、实现、部署、维护,并最后下线开发生命周期通常都具有五个主要的阶段。
3.服务版本治理:
4.服务注册中心
5.服务监控
6.运气期服务质量保障
7.快读的故障定界定位手段
8.服务安全
1.4 微服务架构
微服务架构(MSA)是一种服务化架构风格,通过将功能分散到各个离散的服务中以实现对解决方案的解耦。
微服务架构的主要特征如下: 1.原子服务,专注于做一件事; 2.高密度部署; 3.敏捷交付:服务由小研发团队负责设计、开发、测试、部署、线上治理,灰度发布和下线,运维整个生命周期支撑,实现正真的DevOps。 4.微自治:服务足够下,功能单一,可以独立打包、部署、升级、回滚和弹性伸缩,不依赖其他服务,实现局部自治。