哈喽各位同学们大家好呀,小编今天带着开发者学院中课程“Dubbo分布式加与大规模服务集群治理”干货总结来了~一起学习新课程吧!
课程链接以及图谱地址小编已经为大家指路了,搭配学习效果更佳👇
课程名称:Dubbo 分布式服务治理实践
课程地址:https://developer.aliyun.com/learning/course/72/detail/1186
图谱名称:Alibaba Java 技术图谱
图谱地址:https://developer.aliyun.com/graph/java
Dubbo分布式加与大规模服务集群治理
一、Dubbo分布式架构
Dubbo架构主要分为两个部分:客户端与服务端,也可称为Dubbo消费者和Dubbo提供者。
例如电商网站,要调支付服务、物流服务、订单服务、监控服务、大数据服务等,服务是某些功能的封装,这些是提供者所提供的服务。作为客户端的话,用户要调用这些服务去完成某些业务功能,因为客户端和服务端是位于不同进程,位于分布式网络中不同的节点上,这是典型的一个架构。如果客户端和服务端两个都是单体的话,则为最简单的分布式架构。
随着业务的不断发展,架构也会不断演化。有些业务是大规模的集群,此时单点调用无法解决问题,这是由于服务端可能有10台、100台、1000台甚至更多。同样的服务有时候上线有时候下线,无法预估有多少台可能会上线,多少台会下线,此时需要使用集群的弹性收缩功能解决这个问题。
如果集群从上线到下线到运行一直都是10台,则正常情况就能满足需求。但如果在某些大型业务场景,例如双11时,平时10台可以满足的业务,在双11的时候可能需要1000台,甚至上万台进行支撑。因此,不同的业务集群规模是不一样的,小规模集群可能直接基于IP进行集群搭建就可以,大规模集群则需要对接多个不同的局域网,基于域名的方式进行调度的情况可能更多一点。
因此,Dubbo分布式架构不仅仅是客户端和服务端、消费者和提供者这样的调用关系,它解决的是大规模客户端与大规模服务端的管理问题。
简单的架构要解决技术问题的话,它还需要有一个注册中心,还有应用监控中心,这就是典型的Dubbo早期解决问题。
二、Dubbo分布式集群架构
在这个基础上,如果服务是不定数量的大规模集群,就需架构进一步去升级改造。
注册中心可能是个集群,监控中心可能是个集群,在大型业务场景下,服务可能也是个集群。
无论是支付服务、订单服务、商品服务、账号服务等,都可以根据自己的实际的并发需求,去部署不定规格、不定数量的大规模服务集群。Dubbo联合其他技术人员给用户提供快速上线、包括管理的服务。Dubbo不仅解决分布式调用的问题,还解决了多协议大规模集群的治理问题,这也是Dubbo在其他大型互联网公司中收到广泛好评的原因。
三、Dubbo核心组件
- Dubbo主要有以下核心组件:
- Provider:服务的提供方,通过Jar或者容器的方式启动服务
- Consumer:服务消费方
- Registry:注册中心
- Monitor:统计服务和调用次数,调用时间监控中心。(Dubbo的控制台页面中可以显示,目前只有一个简单版本)
- Container:服务运行的容器
四、Dubbo SOA服务治理
Dubbo诞生于SOA盛行的2008年,早期基于Web Service中心SOA服务治理,后面在这个基础上逐渐开始大规模的扩充,服务之间关系越来越复杂。此时需要治理中心,用来做大规模的流量调度、监控等,这些都是极具挑战性的问题,因此阿里开发了很多工具在内部去解决这些问题。
对于这些挑战性问题,Dubbo的许多观点思想与目前微服务架构Spring Cloud不谋而合。这是由于当微服务到了大规模集群的层次上,无论怎么拆,它终究会面临这些问题,例如熔断限流,负载均衡,流量调度,安全治理等。
2013~2017年Dubbo疏于维护,而这是Spring Cloud蓬勃发展时期,逐渐成为世界级微服务框架,但从某种程度上来说,Dubbo可以称为Spring Cloud的前辈。
五、Dubbo未来底层同步与异步架构
Dubbo从3.0版本开始,也在做服务高并发、协议等方面的改造。如云原生支持的改造,去支持底层的高并发高吞吐量,去对接K8s云原生的工具,协议层支持RPC等新的类型,从而让Dubbo整个通信协议更多样化,使用户在不同场景下可以选择不同的实践方式。
异步请求和同步请求各有优势,异步请求优势在于非阻塞,同步请求的优势在于即时性,但如果是阻塞操作、长时间操作的话,可能会导致线程卡死的状况,影响整体的并发。
Dubbo整个分布架构是更高层级的架构,它是大规模服务集群,不仅仅是开发落地,而且要大规模服务治理,它的实践经验给其他互联网公司的架构提供了很好的参考。
六、Dubbo分布式架构与Remoting
Dubbo分布式架构的远程通讯(Remoting)提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息交换方式。