首页>JAVA>正文

分布式服务架构原理和功能特性_上海java培训

时间:2018-08-10 15:38:13   来源:上海尚学堂   阅读:

一、分布式服务架构原理

尽管不同的分布式服务框架实现细节存在差异,但是核心功能差异不大,下面通过下图所示的逻辑架构图了解分布式服务框架的整体架构。


图: 分布式服务框架的逻样架构图

通常,分布式服务框架的架构可以抽象为三层。

1)RFC层:包括底层通信框架(例如NO框架的封装、公有协议的封装等)、序列化和反序列化框架、用于屏蔽底层通信协议细节和序列化方式差异的Remoting框架。

2)  Filter Chain层:服务调用职责链,提供多种服务调用切面供框架自身和使用者扩展,例如负载均衡、服务调用性能统计、服务调用完成通知机制、失败重发等。

3) Service层:主要包括Java动态代理,消费者使用,主要用于将服务提供者的接口封装成远程服务调用:Java反射,服务提供者使用,根据消费者请求消息中的接口名、方法名、参数列表反射调用服务提供者的接口本地实现类。再向上就是业务的服务接口定义和实现类,对于使用 Spring配置化开发的就是Spring Bean,服务由业务来实现,平台负责将业务接口发布成远程服务。

从功能角度看,分布式服务框架通常会包含另外两个重要功能:服务治理中心和服务注册中心,业务需求不同,具体实现细节也存在很大差异。以服务注册中心为例,HSF使用的是基于数据库的 ConfigServer, Dubbo默认使用的是 ZooKeeper

服务注册中心负责服务的发布和通知,通常支持对等集群部署,某一个服务注册中心宕机并不会导致整个服务注册中心集群不可用。即便整个服务注册中心全部宕机,也只影响新服务的注册和发布,不影响己经发布的服务的访问服务治理中心通常包含服务治理接口和服务治理 Portal,架构师、测试人员和系统运维人员通过服务治理 Porta对服务的运行状态、历史数据、健康度和调用关系等进行可视化的分析和维护,目标就是要持续优化服务,防止服务架构腐化,保证服务高质量运行。

二、分布式服务架构的功能特性

尽管不同的分布式服务框架实现细节存在差异,功能特性也不尽相同,但是一些公共能力是必须要具备的,下面我们对分布式服务框架的功能特性进行总结。

1、服务订阅发布

1) 配置化发布和引用服务,支持通过XML配置的方式发布和导入服务,降低对业务代码的侵入
2) 服务自动发现机制,支持服务实时自动发现,由注册中心推送服务地址,消费者不需要配置服务提供者地址,服务地址透明化。
3) 服务在线注册和去注册,支持运行态注册新服务,也支持运行态取消某个服务的注册。
 

2、服务路由

1)默认提供随机路由、轮循、基于权重的路由策略等。默认提供常用的路由策略,避兔每个框架使用者都重复开发。

2)粘带链接,总是向同一个提供方发起请求,除非此提供方挂按,再切换到另一台。

3)路由定制,支持用户自定义路由策略,扩展平台的功能。

3、集群容错

1)Failover,失败自动切换,当出现失败,重试其他服务器,通常用于读操作,也可用于幂等性写操作。
 
2)Failback,失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知操作。

3)Failfast,快速失败,只发起一次调用,失败立即报错,通常用于非幂等性的写操作。

4、服务调用

 
1)同步调用,消费者发起服务调用之后,同步阻塞等待服务端响应。
 
2)异步调用,消费者发起服务调用之后,不阻塞立即返回,由服务端返回应答后异步通知消费者。

3)并行调用,消费者同时对多个服务提供者批量发起服务调用请求,批量发起请求后,集中等待应答。

5、多协议


1) 私有协议,支持二进制等私有协议,支持私有协议定制和扩展。

2)共有协议,提供Web Service等公有协议,用于外部服务对接。

6、序列化方式


1)二进制类序列化,支持Thrift/Protocol buffer等二进制协议,提升序列化性能。
 
2)文本类序列化,支持JSON、XML等文本类型的序列化方式,提升通用性和可读性。

 

7、统一配置


1)本地静态配置,安装部署修改一次,运行态不修改的配置,可以存放到本地配置文件中。
 
2)基于配置中心的动态配置,运行态需要调整的参数,统一放到配置中心(服务注册中心),修改之后统一下发,实时生效。


最后:
上海尚学堂java培训整理编辑,参考文章《分布式服务框架原理与实践》。
获取java学习资料或预定免费试听名额请联系客服小姐姐。

更多推荐文章:《什么是微服务架构?微服务架构与SOA架构区别》、《RPC架构与原理,以及业界主流的RPC框架简介》、《经典的垂直应用框架-MVC框架介绍
分享:0

电话咨询

客服热线服务时间

周一至周五 9:00-21:00

周六至周日 9:00-18:00

咨询电话

021-67690939
15201841284

微信扫一扫