来自BAT大厂JAVA架构师总结的 分布式服务框架学习笔记

简介: 分布式服务框架

分布式服务框架

一、RPC

二、SOA

三、业界服务治理方案

  (1)Dubbo:下图是Dubbo在服务治理方面的架构设计

  (2)JSF:下图是JSF在服务治理方面的架构设计

  (3)Motan:Motan是有名的轻量级服务框架,代码质量很高,下图是Motan在服务治理方面的架构设计

四、分布式服务框架主要模块名词释义
前言

分布式服务框架不仅仅包含核心的运行时类库,还包括服务划分原则、服务化最佳实践、服务治理、服务监控、服务开发框架等,它是一套完整的解决方案,用来协助应用做服务化改造,以及指导用户如何构建适合自己业务场景的服务化体系,将服务化的价值发挥到极致。.

基于分布式服务框架,业务终于可以把全部精力都放到应用层的逻辑开发,研发效率、系统可靠性都得到了极大的提升。目前,华为电信软件主要解决方案几乎所有的Java系统都基于分布式服务框架构建,底层的基础框架实现了统一。

分布式服务框架
一、RPC

  RPC(Remote Process Call),即远程服务调用,被广泛地应用在很多企业应用中,是早期主要的服务治理方案,其流程较为简单,客户端consumer携带参数发送RPC请求到服务提供方provider,provider根据参数路由到具体函数,方法,并将执行获得的结果返回,至此一次RPC调用完成。

  

  随着业务的发展,大数据时代的到来,服务提供方的压力也日益增大,单机应用的处理能力无论在软件,硬件上都受到限制,provider也不可能一直无限扩容,即使扩容,也存在着很多问题,即服务的路由,和Consumer的负载均衡问题。因此,分布式服务架构应运而生,RPC发展到一定阶段思考的变革,成为了分布式服务,云计算的计算机基础。
二、SOA

  由于简单的RPC调用已经不能随着时代发展满足需求,因此复杂的业务逻辑对于分布式应用架构体系的需求愈发强烈,业务希望自己的服务是分布式部署的,请求是分流的,对数据的操作是能读写分离的,同时能屏蔽许多复杂需要自己编写的底层服务,借助已有的公共服务,去快速的构建自己的应用,降低人力开发维护的成本和提高应用交付的效率,基因此,基于分布式服务思想的SOA(Service-Oriented Architecture)成了新的受追捧的架构。常见的SOA服务调用流程图如下: 

  

在这里小编为大家整理了一些Java分布式框架的学习笔记,以及Java核心知识点整理的文档,点我 免费领取 哦。 

三、业界服务治理方案

  业界的互联网巨头公司,都有属于自己的分布式服务框架,如阿里巴巴的Dubbo,HSF,腾讯的Tars,京东的JSF,新浪的Motan,都已经是业界非常成熟的解决方案,其中开源的Dubbo和Motan受到了广大开发者的研究对象。

  纵观这些服务框架,设计的基本思路都如上图,无非涉及provider发布注册,consumer订阅,调用发起,负载均衡,服务分流和监控等模块,并在此基础上增加了很多玩法,形成了各具特色的分布式服务框架设计,下面就Dubbo,JSF,Motan的设计做下简单的介绍。
  (1)Dubbo:下图是Dubbo在服务治理方面的架构设计

  初始化阶段:部署在Container的Provider启动后向服务中心Registry发布并注册自己的服务,客户端Consumer初始化时即向Registry订阅自己想要的服务,同时Registry对Consumer保持着一个长连接,当订阅的服务新增或减少节点时,会及时通知到客户端更新(此过程是异步进行的,不会影响Consumer的主流程),如此一来,客户端Consumer便有了Provider的所有实时信息,便可以发起服务调用了。

  invoke阶段:客户端Consumer从获得的所有Provider列表中通过负载均衡等策略选出最适合调用的服务提供者Provider并发起同步调用。

  Monitor阶段:Consumer和Provider通过异步的方式向监控中心上报自己的需要被监控的数据。

  
  (2)JSF:下图是JSF在服务治理方面的架构设计

  初始化阶段:Provider启动后向服务注册中心发布注册自己的服务

  invoke阶段:与Dubbo不同的是,JSF的注册中心不向Consumer推送Provider实时数据,而是在发起调用时Consumer向注册中心询问并获得对应的Provider,然后组织匹配JSF协议的报文发起调用。

  Monitor阶段:Provider定期向监控中心发送性能统计数据,同时Provider还会上报事件给事件中心。

  
  (3)Motan:Motan是有名的轻量级服务框架,代码质量很高,下图是Motan在服务治理方面的架构设计

  Motan的服务治理设计与Dubbo十分的相似,都是Provider发布注册,Consumer订阅与接受推送,之后发起调用。

  
四、分布式服务框架主要模块名词释义

  无论是那种SOA的架构设计,都离不开几个模块的功能,即Provider,Consumer,Registry,Gateway,负载均衡,服务分流,监控等,通过上述所讲,应该对这些功能模块有了初步的认识,下面就这些名词再作下介绍。

  (1)Provider:服务提供者,无论是业务服务,还是一个系统中公用的SAAS,都属于Provider。

  (2)Consumer:即发起调用的客户端。

  (3)Registry:服务注册中心,是分布式服务系统中的一个重要组成模块,管理Provider的Manager,在实际的运行环境中,服务注册中心Registry被动通知或Consumer主动询问,在Provider有节点宕机或新增节点时,客户端也可实时感知到,从而避免了某个Provider被无限调用或是无限闲置。

  (4)Gateway:网关也是分布式服务框架中不可或缺的部分,每种系统与框架都有自己的一套协议,当异构系统互相调用时,网关的作用即显现出来,Gateway接受各种外部HTTP请求,完成相应的权限校验,报文适配,路由转发到对应的Provider,再将Provider返回的结果传递给异构系统的Consumer,完成异构系统的互相调用。

  (5)负载均衡,服务分流:Consumer从Registry获得具体的Provider列表后,如何选取合适的Provider,取决与一定的负载均衡算法,常见的算法有轮询法,随机法,源地址哈希,加权轮询,加权随机等。

  (6)监控:接收来自Consumer和Provider异步上报的性能监控数据,对有风险的节点发出告警。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
9月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
857 8
|
11月前
|
消息中间件 Java 数据库
Java 基于 DDD 分层架构实战从基础到精通最新实操全流程指南
本文详解基于Java的领域驱动设计(DDD)分层架构实战,结合Spring Boot 3.x、Spring Data JPA 3.x等最新技术栈,通过电商订单系统案例展示如何构建清晰、可维护的微服务架构。内容涵盖项目结构设计、各层实现细节及关键技术点,助力开发者掌握DDD在复杂业务系统中的应用。
1942 0
|
11月前
|
机器学习/深度学习 人工智能 Java
Java 技术支撑下 AI 与 ML 技术融合的架构设计与落地案例分析
摘要: Java与AI/ML技术的融合为智能化应用提供了强大支持。通过选用Deeplearning4j、DJL等框架解决技术适配问题,并结合Spring生态和JVM优化提升性能。在金融风控、智能制造、医疗影像等领域实现了显著效果,如审批效率提升3倍、设备停机减少41%、医疗诊断延迟降低80%。这种技术融合推动了多行业的智能化升级,展现了广阔的应用前景。
738 0
|
11月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
497 7
|
12月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
1572 0
|
缓存 Java 数据库
Java 项目分层架构实操指南及长尾关键词优化方案
本指南详解基于Spring Boot与Spring Cloud的Java微服务分层架构,以用户管理系统为例,涵盖技术选型、核心代码实现、服务治理及部署实践,助力掌握现代化Java企业级开发方案。
487 2
|
Java Windows 开发框架
Java初级笔记-第一章
第一章 Java概览 1.1 基本简介 Java是一种理想的面向对象的网络编程语言。 1991年,出现了Oak语言,旨在解决编程语言的选择和跨平台的问题。
1594 0
Java初级笔记-第二章
第二章 Java的基本数据类型、运算符及表达式 2.1 标识符 标识符是程序员对程序中的各个元素加以命名时使用的命名记号。
1369 0
|
存储 算法 Java
Java初级笔记-第三章
第三章 程序设计基础 3.1 流程图 3.1.1 什么是流程图: 流程图是通过箭头(流程线)相互连接的几何图形来表达程序运行的方法。
1553 0

热门文章

最新文章