ToB企服应用市场:ToB评测及商务社交产业平台
标题:
微服务治理方案之Dubbo+zookeeper
[打印本页]
作者:
灌篮少年
时间:
2024-11-25 23:38
标题:
微服务治理方案之Dubbo+zookeeper
一.三种微服务治理方案
Dubbo+Zookeeper、Spring Cloud Alibaba以及Spring Cloud Netflix是三种常见的微服务治理方案,它们各自具有独特的特点和上风。以下是对这三种方案的详细分析:
dubbo+zookeeper
dubbo
:
简介
:dubbo是阿里巴巴自主研发的RPC(Remote Procedure Call,远程过程调用)框架,它提供了面向接口的远程方法调用、智能容错和负载平衡以及服务自动注册和发现等核心能力。
特点
:dubbo使用原生的RPC技术来举行服务调用,相比使用REST API的框架,dubbo在性能上更具上风。然而,dubbo对于service接口的依靠较重,需要有效的工具或方法来管理这些依靠关系。
zookeeper
:
简介
:zookeeper是Apache组织的顶级开源项目之一,主要用于服务于大数据生态圈。在dubbo中,zookeeper起到服务注册中心的作用,它同一管理注册服务,并基于观察者模式设计,可以或许在服务提供者模块发生变化时即时关照消耗者。
特点
:zookeeper具备高可用性,当集群中的某一台机器出现故障时,dubbo会自动访问zookeeper集群中的其他主机。此外,zookeeper还提供了同一的命名服务、配置维护、集群管理以及分布式消息同步和协调机制等功能。
Spring Cloud Alibaba
简介
:Spring Cloud Alibaba是阿里巴巴提供的基于Spring Cloud的微服务解决方案,它整合了阿里巴巴开源的微服务相关组件,并提供了简单易用的编程模子和工具,以帮助开辟者快速构建基于Spring Cloud的微服务应用。
特点
:Spring Cloud Alibaba提供了丰富的微服务治理功能,如服务限流降级、服务注册与发现、分布式配置管理、消息驱动能力等。此外,它还支持Nacos作为服务注册与发现中心,以及Sentinel作为流量防卫组件,为微服务应用提供了全面的保护和治理。
Spring Cloud Netflix
简介
:Spring Cloud Netflix是Spring Cloud的一套实现,它基于Netflix开源组件来构建微服务架构。Spring Cloud Netflix提供了服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态等微服务治理功能。
特点
:Spring Cloud Netflix接纳Eureka作为服务注册与发现中心,并使用Hystrix作为断路器来防止服务的雪崩效应。此外,它还支持Ribbon举行负载平衡以及Zuul或Gateway作为API网关来提供路由和过滤功能。Spring Cloud Netflix的功能完备且组件浩繁,为微服务应用提供了全方位的治理和保护。
对比分析
性能
:dubbo+zookeeper在性能上更具上风,由于它使用原生的RPC技术来举行服务调用。而Spring Cloud Netflix和Spring Cloud Alibaba则接纳HTTP协议举行远程调用,性能上可能稍逊于dubbo。
生态
:Spring Cloud Alibaba和Spring Cloud Netflix依托于Spring平台和Netflix开源组件,具备更加美满的生态体系。而dubbo虽然性能良好,但生态相对匮乏,需要开辟者自行探求相应的解决方案。
组件
:dubbo+zookeeper的组件较少,但功能相对完备(可以自己探求解决方案)。而Spring Cloud Netflix和Spring Cloud Alibaba则提供了丰富的微服务治理组件和功能,可以或许满意开辟者在微服务应用中的各种需求。
二.Dubbo+zookeeper
1 Dubbo介绍
Dubbo 作为一款微服务框架,最重要的是向用户提供跨历程的 RPC 远程调用能力。
如上图所示,服务提供者(Provider)启动后,会将自身的服务注册到注册中心(zookeeper)中,包罗服务地点、版本号等信息。
服务消耗者(Consumer)想zookeeper中订阅所需服务。
注册中心(zookeeper)会监视服务提供者,服务提供者出现变动或故障时,就会关照消耗者。
Dubbo 可以帮助解决如下微服务实践题目:
微服务编程范式和工具
Dubbo 支持基于 IDL 或语言特定方式的服务界说,提供多种形式的服务调用形式(如同步、异步、流式等)
高性能的 RPC 通信
Dubbo 帮助解决微服务组件之间的通信题目,提供了基于 HTTP、HTTP/2、TCP 等的多种高性能通信协议实现,并支持序列化协议扩展,在实现上解决网络毗连管理、数据传输等基础题目。
微服务监控与治理
Dubbo 官方提供的服务发现、动态配置、负载平衡、流量路由等基础组件可以很好的帮助解决微服务基础实践的题目。除此之外,您还可以用 Admin 控制台监控微服务状态,通过周边生态完成限流降级、数据同等性、链路追踪等能力。
摆设在多种情况
Dubbo 服务可以直接摆设在容器、Kubernetes、Service Mesh等多种架构下。
2 Dubbo工作原理
Dubbo 的工作原理涉及多个层面,主要包罗服务注册与发现、服务调用、服务治理、以及高可用设计等方面。以下是Dubbo的核心原理构成部分:
服务注册与发现
:
当服务提供者启动时,它会将自己提供的服务接口、实现类、IP地点、端口号等元数据信息注册到注册中心(如Zookeeper、Nacos等)。
服务消耗者在启动时,会订阅并从注册中心拉取服务提供者的地点列表,并在本地缓存这些信息,后续直接使用本地缓存的信息举行服务调用,减少对注册中心的依靠。
服务调用
:
服务消耗者通过代理(Proxy)的方式调用服务,Dubbo会为服务生成客户端Stub和服务端Skeleton,使得调用过程对开辟者透明。
调用过程中,Dubbo支持多种负载平衡计谋(如随机、轮询、最小活跃调用数等),选择合适的服务提供者举行调用。
调用哀求会颠末一系列的过滤器(Filter),这些过滤器可以用来做日记记录、监控、权限控制、事件处理处罚等。
调用是基于Dubbo自界说的RPC协议举行的,支持多种序列化方式,如Hessian、Java自带序列化、Kryo等。
服务治理
:
Dubbo提供了服务路由、动态配置、服务降级、熔断、限流等服务治理功能,可以根据预设的规则对服务调用举行控制,进步体系的稳定性和弹性。
监控层负责网络服务调用的统计信息,如调用次数、响应时间等,便于运维职员监控体系状态。
3 Dubbo实现
3.1 情况摆设
下载zooKeeper。
docker run -d -e TZ="Asia/Shanghai" -p 2181:2181 -v /opt/zookeeper/data:/data --name zookeeper --restart=always
registry.cn-hangzhou.aliyuncs.com/vms_app/zookeeper:3.6.3
第一步:
打开文件 etc/docker/daemon.json
第二步
将下列代码加到文件中
{
"registry-mirrors":[
"https://registry.docker-cn.com",
"https://hub-mirror.c.163.com",
"https://docker.m.daocloud.io",
"https://9zp47653.mirror.aliyuncs.com"
]
}
第三步
重启docker
先后执行下列命令
sudo systemctl daemon-reload
sudo systemctl restart docker
复制代码
3.2 创建工程(zookeeper+spring boot+dubbo)
3.3 添加依靠
父
<properties>
<dubbo.version>3.2.0-beta.4</dubbo.version>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.12.RELEASE</spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- Dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-bom</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
复制代码
provider+consumer
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
<exclusions>
<exclusion>
<artifactId>slf4j-reload4j</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.beiyou</groupId>
<artifactId>dubbo-spring-boot-demo-interface</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
复制代码
interface接口提供工程,
无依靠!
3.4 项目介绍
3.4.1 interface
在interface工程在书写要提供的接口,接口不需要其他配置,普通的接口就行,后续围绕接口睁开。
3.4.2 provider
在启动类中开启Dubbo功能
实现接口并发布服务
填写配置信息
dubbo.protocol.name:
协议名称有许多种类,下面是协议名称及其简介:
dubbo
:
这是 Dubbo 默认的服务通信协议,使用 20880 端口。它是一个高性能的 RPC 协议,专为微服务架构设计,支持多种序列化方式(如 Hessian, Kryo 等)。
rest
:
RESTful 协议,支持 HTTP 和 JSON 数据格式。这对于需要与其他体系(如 Web 应用步伐)集成的服务特殊有效。
http
:
基于 HTTP 协议的服务暴露和消耗协议。它使用标准的 HTTP 哀求来调用远程服务,适合于 Web 服务场景。
https
:
类似于 http 协议,但是使用了 SSL/TLS 加密,增强了安全性。适合需要安全通信的应用场景。
hessian
:
使用 Caucho 公司的 Hessian 协议,这是一种基于 HTTP 的二进制协议,主要用于跨语言的服务调用。
webservice
:
基于 SOAP 协议的服务暴露和消耗协议,适用于需要兼容 SOAP 标准的企业级应用。
redis
:
使用 Redis 协议,可以将服务注册到 Redis 中,并通过 Redis 举行服务发现。
motan
:
Motan 是另一个高性能的 RPC 框架,Dubbo 可以通过 motan 协议与 Motan 服务交互。
thrift
:
Apache Thrift 是一个跨语言的软件框架,用于开辟可扩展的跨平台服务。Dubbo 支持使用 Thrift 协议举行服务间的通信。
bolt
:
Bolt 是一个轻量级的网络通信框架,提供了高性能的网络通信能力,可以作为 Dubbo 的一种传输协议。
dubbo.protocol.port:
Dubbo的协议端口设置为-1时,会探求默认端口,如果默认端口被占用就随机选用一个可用的端口。
dubbo.registry.address:
界说了注册中心的地点,Dubbo服务会向这个注册中心注册自己的信息,并发现其他服务。
${zookeeper.address:127.0.0.1}:2181 这个表达式意味着注册中心是一个Zookeeper实例,其默认地点是 127.0.0.1:2181。如果情况变量 zookeeper.address 被设置,则使用该情况变量的值作为地点的一部分。
3.4.3 consumer
application.properties
3.5 测试
3.5.1 假造机/本地启动zookeeper
3.5.2 启动项目
provider
表现provider启动成功,假造机启动zookeeper的时候,启动项目第一次创建毗连会很慢,不用在意,第二次会好一点点,不过有限。
consumer
3.5.3 观察效果
创建毗连,如果是假造机开启的zookeeper,选择假造机地点,如果是本地开启的zookeeper,选择默认地点
localhost:2181
具体布局
mapping
目次下是接口,接口的全类名文档中是他的实现类的项目名称
metadata
下说接口的全类名,全类名下有其发布者和消耗者的信息
config
: 这个目次包含了Dubbo服务的配置信息,如服务、路由规则等。
转换成json
provider具体状态信息
consumer具体状态信息
prettyzoo
毗连成功后
两者相差不大,只是prettyzoo多了数据的格式转化和一些基础设置。
3.6 通过控制器调用方法
3.6.1 在interface中界说其接口和参数
Test1
Product
ProductQuery
3.6.2 在provider中实现方法
3.6.3 在consumer中添加控制器
3.6.4 测试
4 Dubbo与Spring Cloud的区别
1 协议支持
Dubbo支持多种协议,Spring Cloud主要支持HTTP协议。
2 服务治理
Dubbo提供了丰富的服务治理功能,如服务注册与发现、负载平衡、服务降级、服务限流等。Spring Cloud通过
多个组件
协同实现服务治理功能,每个组件负责特定的功能。
3 性能
Dubbo 高
Spring Cloud 低
4 开辟难度(调试)
Dubbo 配置较为复杂,调试难度较高。
Spring Cloud 借助 Spring Boot 的自动配置和约定大于配置的理念,通过注解和简单的配置即可构建微服务应用,开辟相对较为简单。
5 完备代码
https://codeup.aliyun.com/62858d45487c500c27f5aab5/Java-ljj
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4