美文网首页
分布式服务框架--第一章:应用架构演进

分布式服务框架--第一章:应用架构演进

作者: celusing | 来源:发表于2020-10-13 00:04 被阅读0次

    第一章:应用架构演进


    image.png

    一.垂直应用(典型:MVC架构)
    1.基本架构


    image.png
    1)view:前段视图展示层。
    2)control:中间为调度控制层,用于web请求转发,调度后台业务逻辑执行。Eg:structs

    3)model:应用模型层,代表:业务数据和业务执行逻辑。
    备注:
    标准MVC不包含数据访问层。原生数据连接库JDBC访问比较麻烦,通过ORM(Object Relation Mapping:对象关系映射)框架,比如Hibernate、Mybatis等框架进行封装。
    2.特点
    1)部署方式:基于MVC架构等应用代码会:统一打包成war包,部署到tomcat等服务器中。不同应用之间通过:本地API进行调用,基本不存在跨进程通信。
    2)业务组网:
    1⃣️:小规模:热双机部署,服务端监听浮动IP,通过Watch Dog检测应用进程。判断应用进程宕机或僵死之后,将应用切换到备机中,然后尝试重新拉起主机。
    2⃣️:高并发,大流量:集群部署;组网方案:前段通过F5等负载均衡器做七层负载均衡,后段做对等集群部署。


    image.png
    3.缺点:
    1)复杂应用开发维护成本高,部署效率逐渐降低;
    2)团队协作效率差,部分公共功能重复开发;
    3)系统可靠性变差;
    4)维护和定制困难;
    5)上线周期长

    当垂直应用越来越多,应用之间交互不可避免。解决方法:
    1)将核心业务抽取出来,作为独立当服务,逐渐形成稳定当服务中心;
    2)将公共能力API抽取出来,作为公共当服务,供其他服务共享和重用;
    3)应用拆分之后按模块独立部署,接口调用由本地API演进到RPC调用;
    RPC框架应运而生

    二.RPC架构(典型:GRPC, RESTFUL等)
    RPC:Remote Process Call,远程过程调用,是一种进程间通信方式,允许像调用本地服务一样调用远程服务。
    1.原理
    RPC框架目标:让远程过程(服务)调用更加简单、透明。
    做法:RPC框架负责屏蔽底层的传输方式(TCP OR UDP),序列化方式(XML/JSON/二进制),通信细节。


    image.png

    一般有三种角色:
    1)服务提供者:运行在服务端,负责提供服务接口定义和服务实现;
    2)服务发布者:运行在服务端,负责将本地服务发布成远程服务,供其他消费者调用;
    3)本地服务代理:运行在客户端,通过代理调用远程服务提供者,然后将结果进行封装返回给本地消费者。

    2.挑战
    未大规模服务化之前,应用可能只是通过RPC框架,简单等暴露和引用远程服务,通过配置服务等URL地址进行远程服务调用。
    1)服务越来越多时:需要统一的服务注册中心,动态等注册和发现服务,使服务等位置透明。比如:ZK
    2)随着业务发展,服务之间依赖关系变等错综复杂:需要一个分布式消息跟踪系统可视化展示服务调用链,用于依赖分析,业务调用路径梳理。
    3)服务调用量越来越大时:服务容量问题暴露,需要容量规划,及时扩容与缩容。
    4)服务的统一生命周期管理。

    服务化之后,随之而来的就是服务治理问题。
    服务框架+服务治理成为发展方向。

    三.SOA服务框架(DUBBOL)
    SOA:Service Oriented Architecture 面向服务架构, 是一种粗力度,松耦合的以服务为中心的架构,接口之间通过定义明确的协议和接口进行通信。
    1.服务框架
    设计原则:
    1)服务可复用
    2)服务共享一个契约
    3)服务松耦合
    4)服务可组合,可编排
    5)服务是自治的
    6)服务是无状态的
    7)服务是可被自动发现的
    2.服务治理
    治理内容:
    1)服务定义
    2)服务生命周期管理
    3)服务版本治理
    4)服务注册中心
    5)服务监控
    6)运行期服务质量保障
    7)快速故障定位
    8)服务安全

    SOA服务框架中对服务是粗粒度对,为了最大限度利用服务化功能,对服务做进一步细粒度对拆分,形成MSA架构。
    四.微服务架构(MSA)
    MSA:Micro Service Architecture 微服务架构是一种服务化架构风格,通过将功能分散到各个离散到服务中以实现对解决方案对解耦。
    1.微服务特征
    1)原子服务,专注做一件事情
    2)高密度对部署:重要对服务可以独立进程部署,非核心服务可以合并打包,部署到一个进程。
    3)敏捷交付:粒度越小,越敏捷;
    4)微自治:服务足够小,功能单一,可以独立打包,部署,升级,回滚等,不依赖其他服务,实现局部自治。
    2.微服务架构对比SOA
    1)服务拆分粒度
    2)服务依赖
    3)服务规模
    4)架构差异
    5)服务治理
    6)敏捷交付
    总结:量变引起质变。

    相关文章

      网友评论

          本文标题:分布式服务框架--第一章:应用架构演进

          本文链接:https://www.haomeiwen.com/subject/jolmpktx.html