来自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异步上报的性能监控数据,对有风险的节点发出告警。

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
15天前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
30 2
|
1月前
|
消息中间件 架构师 NoSQL
咕炮课堂Java架构师课程
针对1-5年经验开发者,【Java架构师培训】聚焦互联网热门技术,如Redis、MongoDB、Dubbo、Zookeeper、Kafka,讲授高并发、高可用分布式解决方案。由资深讲师指导,提升技术水平。
30 2
咕炮课堂Java架构师课程
|
1月前
|
设计模式 架构师 前端开发
JavaEE企业级分布式高级架构师课程
本课程主要面向1-5年及以上工作经验的Java工程师,大纲由IT界知名大牛 — 廖雪峰老师亲自打造,由来自一线大型互联网公司架构师、技术总监授课,内容涵盖深入spring5设计模式/高级web MVC开发/高级数据库设计与开发/高级响应式web开发/分布式架构设计等主流核心技术。
22 1
JavaEE企业级分布式高级架构师课程
|
28天前
|
消息中间件 算法 Java
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
187 0
|
1天前
使用JWT的服务分布式部署之后报错:JWT Check Failure:
使用JWT的服务分布式部署之后报错:JWT Check Failure:
7 1
|
3天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
10天前
|
负载均衡 Java 开发者
细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
【4月更文挑战第17天】Spring Cloud是Java微服务治理的首选框架,整合了Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(熔断器)、Zuul(API网关)和Config Server(配置中心)。通过Eureka实现服务注册与发现,Ribbon提供负载均衡,Hystrix实现熔断保护,Zuul作为API网关,Config Server集中管理配置。理解并运用Spring Cloud进行微服务治理是现代Java开发者的关键技能。
|
22天前
|
消息中间件 安全 Java
解密 Java 后台架构设计之道
【4月更文挑战第5天】本文探讨了Java后台架构设计的最佳实践,包括分层架构、微服务、异步处理与消息队列、RESTful API设计、数据库优化、安全控制、容错高可用、配置管理、CI/CD和监控日志。强调了使用微服务、Spring Boot/Spring Cloud、异步消息队列、RESTful API、安全框架Spring Security等技术的重要性,以及监控和自动化部署在确保系统稳定性和效率上的关键角色。通过这些实践,开发者能构建高效、稳定且可扩展的后台系统。
|
1月前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
785 0
|
6天前
|
敏捷开发 监控 数据管理
构建高效微服务架构的五大关键策略
【4月更文挑战第20天】在当今软件开发领域,微服务架构已经成为一种流行的设计模式,它允许开发团队以灵活、可扩展的方式构建应用程序。本文将探讨构建高效微服务架构的五大关键策略,包括服务划分、通信机制、数据管理、安全性考虑以及监控与日志。这些策略对于确保系统的可靠性、可维护性和性能至关重要。

热门文章

最新文章