firemail

标题: 让你一分钟了解分布式服务框架 [打印本页]

作者: java    时间: 2018-5-3 09:42
标题: 让你一分钟了解分布式服务框架
本帖最后由 java 于 2018-5-3 09:54 编辑

让你一分钟了解分布式服务框架

程序员的日常那些事 2018-05-02 19:07:00
[size=13.3333px]
1:应用架构的演进过程
说到分布式架构,首先需要了解一下应用架构的整个演进过程,如下图所示

第一代:MVC架构 :当业务规模很小时,将所有功能都部署在同一个进程中,通过双机或者前置负载均衡实现负载分流;此时,用于分离前后逻辑的Mvc架构是关键。
Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写
第二代:RPC架构:当垂直应用越来越多,应用之间交互不可避免,将核心和公共业务抽取出来,作为独立的服务,实现前后台逻辑分离、此时,用于提高业务复用和拆分的RPC框架是关键。
RPC(Remote Promote Call)远程过程调用 一种进程间通信方式。允许像调用本地服务一样调用远程服务。
第三代:SOA架构:随着业务发展,服务数量越来越多,服务生命周期管控和运行态的治理成为瓶颈,此时用于提升服务质量的SOA服务治理是关键。
SOA (面向服务的架构)Service-Oriented Architecture
第四代:微服务架构:随着敏捷开发,持续交付,DEVOPS理论的发展和实践,以及基于docker等轻量级容器部署应用和服务的成熟,微服务架构开始流行,逐渐成为应用架构的未来演进方向。通过服务的原子拆分,以及微服务的独立打包,部署和升级,小团队敏捷交付,应用的交付周期将缩短,运维成本也将大幅下降。
随着大型应用的不断发展,新的业务需求和功能不断增加,技术也在不断演进,不同团队构建的功能子系统采用的技术架构五花八门,子系统之前的开发,部署和运维模式也存在较大差异。传统垂直架构已经不能适应业务发展的需求,服务化改造才是最有效的方式。而改造的核心就是分布式服务架构。
2:分布式诞生的背景:
应用从集中式走向分布式。大规模系统架构的设计一般规则就是尽可能的拆分,以达到更好的独立扩展与伸缩,更灵活的部署,更好的隔离和容错,更高的开发效率。具体的拆分策略大体分为横向拆分和纵向拆分。
使用WEB服务或者rpc架构对业务进行拆分后,随着服务数的增多,急需一个服务治理框架,有效管控服务,提升服务运行期质量,防止业务服务代码架构腐化。服务治理主要有以下几点:
3:分布式服务框架设计
尽管不同的分布式架构实现细节存在差异,但是核心功能差异不大。通常,分布式服务框架的架构可以抽象为三层。
1)RPC层:包括底层通信框架(例如NIO框架),序列化和反序列化框架,用于屏蔽底层通信协议细节和序列化方式差异的Remoting框架。
2)Filter Chain层:服务调用职责链,提供多种服务调用切面提供框架自身和使用者扩展,例如负载均衡,服务调用性能统计,服务调用完成通知机制,失败重发等。
3)Service层:主要包括java动态代理,消费者使用,主要用于将服务提供者的接口封装成远程服务调用:java反射,服务提供者使用,根据消费者请求消息中的接口名,方法名,参数列表反射调用服务提供者的接口本地实现类。
从功能角度看,分布式服务框架通常会包含另外两个重要功能:服务治理中心和服务注册中心,业务需求不同,具体实现细节也存在很大差异。以服务注册中心为例,HSF使用的是基于数据库的ConfigServer,Dubbo默认使用的是Zookeeper。
服务注册中心负责服务的发布和通知,通常支持对等集群部署,某一个服务注册中心当机并不会导致整个服务注册中心集群不可用。
服务治理中心通常包含服务治理接口和服务治理Portal,架构师,测试人员和系统维护人员通过服务治理Portal对服务的运行状态,历史数据,健康度和调用关系等进行可视化的分心和维护,目标就是要持续优化服务,防止服务架构腐化,保证服务高质量运行。
4:分布式架构的功能特性
1)服务订阅发布:
2)服务路由:
3)集群容错
4)服务调用
5)多协议
私有协议:支持二进制等私有协议,支持私有协议定制和扩展
公有协议:提供 Web Service等公有协议,用于外部服务对接
6)序列化方式
7)统一配置
5:分布式架构的性能特性
1)高性能:在同等资源占用情况下,单服务提供者的TPS要尽量高
2)低时延:在同等资源下,服务调用时延要尽量低
3)性能线性增长:扩展服务提供者,性能要能够线性增长
6:分布式架构的可靠性
应用有单机调用演进到分布式部署之后,由于网络故障,会导致业务失败率增加,分布式框架需要具备很强的可靠性来保证业务的成功率。
1)服务注册中心:
2)消除单点故障:
7:服务治理
1)服务运行态管控:
2)服务监控:
3)服务生命周期管理
4)故障快速定界定位
5)服务安全
目前,开源的分布式架构有阿里的dubbo,spring的spring cloudy。都是很不错的。大家有空可以研究一下源码,一定会有收获。









欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3