ToB企服应用市场:ToB评测及商务社交产业平台

标题: 微服务治理方案之Dubbo+zookeeper [打印本页]

作者: 灌篮少年    时间: 2024-11-25 23:38
标题: 微服务治理方案之Dubbo+zookeeper
一.三种微服务治理方案

Dubbo+Zookeeper、Spring Cloud Alibaba以及Spring Cloud Netflix是三种常见的微服务治理方案,它们各自具有独特的特点和上风。以下是对这三种方案的详细分析:
dubbo+zookeeper


Spring Cloud Alibaba


Spring Cloud Netflix


对比分析


二.Dubbo+zookeeper

1 Dubbo介绍


Dubbo 作为一款微服务框架,最重要的是向用户提供跨历程的 RPC 远程调用能力。
如上图所示,服务提供者(Provider)启动后,会将自身的服务注册到注册中心(zookeeper)中,包罗服务地点、版本号等信息。
服务消耗者(Consumer)想zookeeper中订阅所需服务。
注册中心(zookeeper)会监视服务提供者,服务提供者出现变动或故障时,就会关照消耗者。
Dubbo 可以帮助解决如下微服务实践题目:

Dubbo 支持基于 IDL 或语言特定方式的服务界说,提供多种形式的服务调用形式(如同步、异步、流式等)

Dubbo 帮助解决微服务组件之间的通信题目,提供了基于 HTTP、HTTP/2、TCP 等的多种高性能通信协议实现,并支持序列化协议扩展,在实现上解决网络毗连管理、数据传输等基础题目。

Dubbo 官方提供的服务发现、动态配置、负载平衡、流量路由等基础组件可以很好的帮助解决微服务基础实践的题目。除此之外,您还可以用 Admin 控制台监控微服务状态,通过周边生态完成限流降级、数据同等性、链路追踪等能力。

Dubbo 服务可以直接摆设在容器、Kubernetes、Service Mesh等多种架构下。
2 Dubbo工作原理

Dubbo 的工作原理涉及多个层面,主要包罗服务注册与发现、服务调用、服务治理、以及高可用设计等方面。以下是Dubbo的核心原理构成部分:



3 Dubbo实现

3.1 情况摆设

下载zooKeeper。

  1. docker run -d -e TZ="Asia/Shanghai" -p 2181:2181 -v /opt/zookeeper/data:/data --name zookeeper --restart=always
  2. registry.cn-hangzhou.aliyuncs.com/vms_app/zookeeper:3.6.3
  3. 第一步:
  4. 打开文件  etc/docker/daemon.json
  5. 第二步
  6. 将下列代码加到文件中
  7. {
  8.     "registry-mirrors":[
  9.        "https://registry.docker-cn.com",
  10.        "https://hub-mirror.c.163.com",
  11.        "https://docker.m.daocloud.io",
  12.        "https://9zp47653.mirror.aliyuncs.com"
  13.     ]
  14. }
  15. 第三步
  16. 重启docker
  17. 先后执行下列命令
  18. sudo systemctl daemon-reload
  19. sudo systemctl restart docker
复制代码


3.2 创建工程(zookeeper+spring boot+dubbo)


3.3 添加依靠


  1. <properties>
  2.     <dubbo.version>3.2.0-beta.4</dubbo.version>
  3.     <java.version>1.8</java.version>
  4.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  5.     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  6.     <spring-boot.version>2.3.12.RELEASE</spring-boot.version>
  7. </properties>
  8. <dependencies>
  9.     <dependency>
  10.         <groupId>org.springframework.boot</groupId>
  11.         <artifactId>spring-boot-starter-web</artifactId>
  12.     </dependency>
  13.     <dependency>
  14.         <groupId>org.springframework.boot</groupId>
  15.         <artifactId>spring-boot-starter-test</artifactId>
  16.         <scope>test</scope>
  17.     </dependency>
  18. </dependencies>
  19. <dependencyManagement>
  20.     <dependencies>      
  21.         <!-- Dubbo -->
  22.         <dependency>
  23.             <groupId>org.apache.dubbo</groupId>
  24.             <artifactId>dubbo-bom</artifactId>
  25.             <version>${dubbo.version}</version>
  26.             <type>pom</type>
  27.             <scope>import</scope>
  28.         </dependency>
  29.         <dependency>
  30.             <groupId>org.apache.dubbo</groupId>
  31.             <artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
  32.             <version>${dubbo.version}</version>
  33.             <type>pom</type>
  34.         </dependency>
  35.     </dependencies>
  36. </dependencyManagement>
复制代码

provider+consumer
  1. <dependencies>
  2.     <dependency>
  3.         <groupId>org.springframework.boot</groupId>
  4.         <artifactId>spring-boot-starter</artifactId>
  5.     </dependency>
  6.     <dependency>
  7.         <groupId>org.apache.dubbo</groupId>
  8.         <artifactId>dubbo-spring-boot-starter</artifactId>
  9.     </dependency>
  10.     <dependency>
  11.         <groupId>org.apache.dubbo</groupId>
  12.         <artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>   
  13.         <exclusions>
  14.             <exclusion>
  15.                 <artifactId>slf4j-reload4j</artifactId>
  16.                 <groupId>org.slf4j</groupId>
  17.             </exclusion>
  18.         </exclusions>
  19.     </dependency>
  20.     <dependency>
  21.         <groupId>com.beiyou</groupId>
  22.         <artifactId>dubbo-spring-boot-demo-interface</artifactId>
  23.         <version>0.0.1-SNAPSHOT</version>
  24.         <scope>compile</scope>
  25.     </dependency>
  26. </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