Spring高手之路5,Dubbo服务注册与发现(文末送书)

news2025/2/25 5:59:17

在这里插入图片描述

目录

    • 一、介绍
      • 1、介绍 Dubbo 服务注册与发现的基本概念和重要性
      • 2、阐述 Dubbo 服务注册与发现的实现方式和应用场景
    • 二、Dubbo 服务注册与发现的架构设计
      • 1、Dubbo 服务注册与发现的总体架构设计。
      • 2、Dubbo 服务提供方的注册与发现设计
      • 3、Dubbo 服务消费者端的注册与发现设计
    • 三、Dubbo 服务注册与发现的实现方式
      • 1、基于域名的 Dubbo 服务注册与发现实现
        • 步骤一:配置服务提供者
        • 步骤二:配置服务消费者
        • 步骤三:启动服务提供者和服务消费者
      • 2、基于客户端 IP 地址的 Dubbo 服务注册与发现实现
        • 步骤一:配置服务提供者
        • 步骤二:配置服务消费者
        • 步骤三:启动服务提供者和服务消费者
      • 3、基于端口号的 Dubbo 服务注册与发现实现
        • 步骤一:配置服务提供者
        • 步骤二:配置服务消费者
        • 步骤三:启动服务提供者和服务消费者
      • 4、基于 Spring Cloud 的 Dubbo 服务注册与发现实现
        • 步骤1:添加Spring Cloud依赖
        • 步骤2:添加Dubbo依赖
        • 步骤3:配置Dubbo
        • 步骤4:使用@DubboService注解发布Dubbo服务
        • 步骤5:启动Spring Boot应用
        • 步骤6:启动Eureka Server
        • 步骤7:测试Dubbo服务
      • Dubbo全家桶
    • 四、用户画像:平台构建与业务实践
      • 1、内容简介
      • 2、图表丰富,通俗易懂
      • 参与方式

大家好,我是哪吒。

文末送5本《用户画像:平台构建与业务实践》

前段时间,有个朋友跳槽找工作,去xxx大厂面试,被问到,项目中,服务注册是如何实现的?

他就如实回答了,用的Dubbo,巴拉巴拉说了一痛,很是痛快。

结果直接被录取了,还涨了20K。

后来才知道,他们公司就想招聘一个熟悉Dubbo的,真的是术业有专攻啊,面对这个问题,大家都在说nacos、Zookeeper、Eureka,殊不知,哎,不对口,再牛逼也白搭。

今天,借着这个机会,分享一下Dubbo是如何实现服务注册与发现的,咱们也涨个20K玩玩儿。

Dubbo是一款高性能、轻量级的分布式服务框架,它提供了丰富的服务治理能力,其中服务注册与发现是其中的重要组成部分。服务注册与发现允许服务提供者将自己的服务注册到注册中心,同时让服务消费者从注册中心发现并调用服务。本文将深入探讨Dubbo服务注册与发现的基本概念、架构设计、实现方式、应用场景和优化措施,希望能为读者提供更全面的理解和应用实践。

一、介绍

1、介绍 Dubbo 服务注册与发现的基本概念和重要性

在 Dubbo 微服务架构中,服务注册和发现是非常重要的基础组件之一。

服务注册是指服务提供方在启动时将自己提供的服务注册到注册中心中,服务消费者在启动时从注册中心中获取所需的服务列表。

服务发现是指在运行时,服务消费者从注册中心中发现服务提供者的 IP 地址和端口号,从而可以调用服务提供方提供的服务。

服务注册与发现的重要性在于可以解决微服务架构中的服务依赖问题。

在微服务架构中,每个服务都会暴露自己的接口供其他服务调用,但是服务之间的调用需要知道对方的地址和端口号,这对于大规模的服务调用来说是非常复杂和困难的。

服务注册与发现通过将服务提供方和服务消费方解耦,使得服务提供方可以随意修改自己的 IP 地址和端口号,而不会影响到服务消费方的调用。

2、阐述 Dubbo 服务注册与发现的实现方式和应用场景

Dubbo 服务注册与发现的实现方式主要有以下几种:

  • 基于域名的实现方式:服务提供方在启动时将自己的 IP 地址和端口号注册到域名解析服务器中,服务消费者在调用服务时通过域名解析服务器获取服务提供方的 IP 地址和端口号。
  • 基于客户端 IP 地址的实现方式:服务提供方在启动时将自己的 IP 地址和端口号注册到注册中心中,服务消费者在调用服务时通过自己的 IP 地址和端口号向注册中心请求获取服务提供方的 IP 地址和端口号。
  • 基于端口号的实现方式:服务提供方在启动时将自己的 IP 地址和端口号注册到注册中心中,服务消费者在调用服务时通过已知的端口号向注册中心请求获取服务提供方的 IP 地址和端口号。
  • 基于 Spring Cloud 的实现方式:Dubbo 和 Spring Cloud 结合使用,服务提供方和消费方都使用 Spring Cloud 提供的服务注册和发现功能。

Dubbo 服务注册与发现主要应用于以下场景:

  • 微服务架构:微服务架构中,服务提供方和消费方非常多,而且服务之间的调用比较复杂,Dubbo 服务注册与发现可以方便地解决服务之间的调用问题。
  • 分布式系统:分布式系统中,各个节点之间需要进行通信和调用,Dubbo 服务注册与发现可以帮助节点快速发现和使用其他节点提供的服务,从而提高分布式系统的效率和可靠性。

在实际应用中,Dubbo 服务注册与发现可以和其他技术一起使用,比如与 Spring Cloud、Kubernetes 等组合使用,以满足更加复杂的业务需求。

二、Dubbo 服务注册与发现的架构设计

1、Dubbo 服务注册与发现的总体架构设计。

Dubbo 服务注册与发现的总体架构设计如下所示:

Dubbo服务注册与发现的总体架构设计

在 Dubbo 服务注册与发现的总体架构中,包括以下几个组件和模块:

  • ServiceRegistry:服务注册组件,用于将服务提供方的服务注册到注册中心;
  • ServiceDiscovery:服务发现组件,用于从注册中心获取服务提供方的服务;
  • ServiceInstance:服务实例对象,包含服务提供方的实例信息,例如 IP 地址、端口号等;
  • DubboProvider:Dubbo 服务提供方,将服务实例注册到注册中心;
  • DubboConsumer:Dubbo 服务消费方,从注册中心获取服务实例并调用服务;
  • DubboRegistryFactory:Dubbo 注册中心工厂,用于创建注册中心的实例;
  • Application:Dubbo 应用,负责将 Dubbo 服务提供方和 Dubbo 服务消费方注册到应用中。

以上组件和模块之间的关系如下所示:

  • DubboProvider 将服务实例注册到 ServiceRegistry
  • DubboConsumerServiceDiscovery 获取服务实例,并调用服务;
  • DubboRegistryFactory 用于创建 ServiceRegistryServiceDiscovery
  • Application 用于将 Dubbo 服务提供方和 Dubbo 服务消费方注册到应用中。

Dubbo 服务注册与发现的架构设计清晰明了,模块化设计使得各个组件之间的耦合度降低,易于扩展和维护。

2、Dubbo 服务提供方的注册与发现设计

下面是 Dubbo服务提供方的注册和发现的过程及其流程图:

Dubbo服务提供方的注册和发现

如上图所示,服务提供方启动时会连接注册中心,并将自己提供的服务注册到注册中心上,注册中心返回注册结果。

3、Dubbo 服务消费者端的注册与发现设计

下面是 Dubbo 服务消费者端的注册和发现的过程及其流程图:

Dubbo服务消费者端的注册和发现的过程

如上图所示,服务消费者启动时会连接注册中心,并订阅自己所需的服务。注册中心返回可用的服务列表,服务消费者可以从中选择一个服务提供方调用所需的服务。

三、Dubbo 服务注册与发现的实现方式

1、基于域名的 Dubbo 服务注册与发现实现

基于域名的Dubbo服务注册与发现,是指将服务提供者的IP地址解析成域名,将域名注册到注册中心,服务消费者从注册中心获取到域名后再解析成IP地址进行调用。

以下是详细的实现步骤:

步骤一:配置服务提供者

在服务提供者的Dubbo配置文件中,需要配置注册中心地址和服务提供者的IP地址,例如:

<dubbo:application name="provider-demo"/>
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
<dubbo:protocol name="dubbo" port="20880"/>
<dubbo:service interface="com.example.service.UserService" ref="userService" />
步骤二:配置服务消费者

在服务消费者的Dubbo配置文件中,需要配置注册中心地址和服务提供者的域名,例如:

<dubbo:application name="consumer-demo"/>
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
<dubbo:reference interface="com.example.service.UserService" id="userService" check="false" url="dubbo://userService.provider-demo"/>
步骤三:启动服务提供者和服务消费者

在服务提供者和服务消费者启动后,服务提供者会将自己的IP地址注册到注册中心,服务消费者从注册中心获取到服务提供者的域名,再解析成IP地址进行调用。

2、基于客户端 IP 地址的 Dubbo 服务注册与发现实现

基于客户端IP地址的Dubbo服务注册与发现,是指服务提供者注册到注册中心时将自己的IP地址和端口号注册到注册中心,服务消费者通过获取客户端IP地址和端口号进行远程调用。

以下是详细的实现步骤:

步骤一:配置服务提供者

在服务提供者的Dubbo配置文件中,需要配置注册中心地址和服务提供者的IP地址和端口号,例如:

phpCopy code<dubbo:application name="provider-demo"/>
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
<dubbo:protocol name="dubbo" port="20880"/>
<dubbo:service interface="com.example.service.UserService" ref="userService" />
步骤二:配置服务消费者

在服务消费者的Dubbo配置文件中,需要配置注册中心地址和服务提供者的接口信息,例如:

<dubbo:application name="consumer-demo"/>
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
<dubbo:reference interface="com.example.service.UserService" id="userService" check="false" />
步骤三:启动服务提供者和服务消费者

在服务提供者启动后,服务提供者会将自己的IP地址和端口号注册到注册中心,服务消费者从注册中心获取到服务提供者的接口信息,通过Dubbo框架进行远程调用。

3、基于端口号的 Dubbo 服务注册与发现实现

基于端口号的Dubbo服务注册与发现,是指服务提供者注册到注册中心时将自己的IP地址和端口号注册到注册中心,服务消费者通过获取端口号进行远程调用。

以下是详细的实现步骤:

步骤一:配置服务提供者

在服务提供者的Dubbo配置文件中,需要配置注册中心地址和服务提供者的IP地址和端口号,例如:

<dubbo:application name="provider-demo"/>
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
<dubbo:protocol name="dubbo" port="20880"/>
<dubbo:service interface="com.example.service.UserService" ref="userService" />
步骤二:配置服务消费者

在服务消费者的Dubbo配置文件中,需要配置注册中心地址和服务提供者的接口信息,例如:

<dubbo:application name="consumer-demo"/>
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
<dubbo:reference interface="com.example.service.UserService" id="userService" check="false" />
步骤三:启动服务提供者和服务消费者

在服务提供者启动后,服务提供者会将自己的IP地址和端口号注册到注册中心,服务消费者从注册中心获取到服务提供者的端口号,通过Dubbo框架进行远程调用。

4、基于 Spring Cloud 的 Dubbo 服务注册与发现实现

Dubbo和Spring Cloud是两个流行的Java微服务框架。在实现Dubbo服务注册与发现时,可以使用Spring Cloud的服务注册中心和服务发现机制。Spring Cloud提供了多种服务注册中心和服务发现机制的实现,例如Eureka、Consul和Zookeeper等。

下面是基于 Spring Cloud 的 Dubbo 服务注册与发现的流程图:

上述流程中,服务提供者通过 Dubbo 提供的功能将自己注册到注册中心,注册中心将这些服务提供者的信息存储起来。服务消费者在需要调用某个服务时,首先从注册中心获取可用的服务提供者列表,然后根据负载均衡策略选择一台服务提供者进行调用。最终,服务消费者通过网络调用服务提供者提供的服务。

在实现上述流程时,涉及到以下组件、模块:

  • Dubbo:提供服务提供者注册、服务消费者调用等功能。
  • Spring Cloud:提供服务注册、服务发现等功能。
  • ZooKeeper:作为注册中心,用于存储服务提供者信息,并将这些信息提供给服务消费者。

除此之外,还需要进行一些配置,如服务提供者需要将自己注册到 ZooKeeper 上,服务消费者需要配置 Dubbo 与 Spring Cloud 的整合等。

以下是基于Spring Cloud的Dubbo服务注册与发现实现步骤:

步骤1:添加Spring Cloud依赖

在项目的pom.xml文件中添加Spring Cloud依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
步骤2:添加Dubbo依赖

在项目的pom.xml文件中添加Dubbo依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.7.8</version>
</dependency>
步骤3:配置Dubbo

在Spring Boot应用的配置文件中添加Dubbo配置:

dubbo:
  application:
    name: dubbo-demo-provider
  registry:
    address: http://localhost:8761/eureka/
  protocol:
    name: dubbo
    port: 20880
  scan:
    base-packages: com.example.dubbo.demo.provider.service
步骤4:使用@DubboService注解发布Dubbo服务

在Dubbo服务的实现类上添加@DubboService注解,例如:

@DubboService
@Service
public class UserServiceImpl implements UserService {
    @Override
    public User getUserById(Long id) {
        // ...
    }
}
步骤5:启动Spring Boot应用

在Spring Boot应用的入口类中添加@EnableDubbo注解,例如:

@SpringBootApplication
@EnableDubbo
public class DubboDemoProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(DubboDemoProviderApplication.class, args);
    }
}
步骤6:启动Eureka Server

在另一个终端窗口中启动Eureka Server:

$ java -jar eureka-server.jar
步骤7:测试Dubbo服务

在另一个Spring Boot应用中使用Dubbo服务:

@SpringBootApplication
@EnableDubbo
public class DubboDemoConsumerApplication {
    @DubboReference
    private UserService userService;
    
    public static void main(String[] args) {
        SpringApplication.run(DubboDemoConsumerApplication.class, args);
    }
    
    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getUserById(id);
    }
}

访问http://localhost:8080/users/1可以调用Dubbo服务并返回用户信息。

Dubbo全家桶

Dubbo高手之路1,Dubbo原理和机制,Dubbo的核心组件

Dubbo高手之路2,6种扩展机制详解

Dubbo高手之路3,Dubbo服务消费详解

Dubbo高手之路4,Dubbo服务提供者详解

四、用户画像:平台构建与业务实践

1、内容简介

这是一本从功能模块、技术实现、平台构建、业务应用4个层次由浅入深地讲解用户画像的著作。作者在某头部互联网公司经历了其用户画像平台从0到1并发展为画像中台的全过程,打下了扎实的技术功底,积累了丰富的业务经验,本书从技术和业务双重维度对整个过程进行了复盘。

具体来讲,本书主要包含如下内容:

(1)画像的作用、业界主流的4种商用画像平台的核心功能和实现逻辑;

(2)画像平台的主要功能、画像平台的技术架构与技术选型、画像平台的数据模型;

(3)画像平台4大功能模块:标签管理、标签服务、分群功能、画像分析的实现方案;

(4)从0到1搭建用户画像平台,包括环境搭建和前、后端工程框架搭建;

(5)画像平台在用户的不同生命周期阶段和各种业务场景中如何为业务赋能;

(6)画像平台的优化和最佳实践。

书中有200+设计图和原型图,可以帮助读者更加直观地了解平台的实现原理及功能形态。20+真实应用案例,技术方案和案例均来自真实的项目。本书提供可运行的代码,能帮助读者快速搭建并部署用户画像平台。
在这里插入图片描述

2、图表丰富,通俗易懂

在这里插入图片描述

参与方式

图书数量:本次送出 5 本《用户画像:平台构建与业务实践》 !!!

活动时间:截止到 2023-09-22 21:00:00

🏆抽奖方式:

⭐️⭐️点击下方名片,回复0922,即可参与⭐️⭐️

🏆哪吒会在朋友圈公布中奖名单。

名单公布时间:2023-09-22 21:10:00

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1027685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iTOP-2K1000开发板拷贝镜像到固态

在本章的刚开始&#xff0c;我们就提到了烧写系统到固态硬盘我们需要使用 U 盘启动作为桥梁&#xff0c;把系统镜像以及系统配置文件拷贝到固态硬盘里面。所以我们需要先准备一个可以成功系统的 U 盘来启动开发板。那此时 U 盘里面是不是就有系统呢&#xff1f;所以这一步我就要…

【python基础】变量

.变量-理解 编程本质就是通过一定的逻辑&#xff0c;去操纵数据&#xff0c;来达到我们的设想。 变量作为数据的载体&#xff0c;在程序中经常会被用到。与变量相联系的还有一个名词叫数据类型&#xff0c;如何理解数据类型-变量-数据三者之间的关系呢&#xff1f; 我们通过文…

进程同步与互斥

目录 进程同步与互斥&#xff08;1&#xff09; 第一节、进程间相互作用 一、相关进程和无关进程 二、与时间有关的错误 第二节、进程同步与互斥 一、进程的同步 二、进程的互斥 三、临界区 进程同步与互斥&#xff08;2&#xff09; 三、信号量与P、V操作的物理含义…

Git基础操作

前言 本文会向您介绍如何安装git&#xff0c;以及快速地上手add&#xff0c;commit&#xff0c;push&#xff0c;版本回退操作 基础配置 关于windous上的安装git官网已经介绍的很清楚了&#xff0c;您可以直接点入链接windows安装 如果你的平台是centos&#xff0c;以centos…

【树形 DP】树形 DP 的通用思路

题目描述 这是 LeetCode 上的 「310. 最小高度树」 &#xff0c;难度为 「中等」。 Tag : 「树形 DP」、「DFS」、「动态规划」 树是一个无向图&#xff0c;其中任何两个顶点只通过一条路径连接。 换句话说&#xff0c;一个任何没有简单环路的连通图都是一棵树。 给你一棵包含 …

24.(地图工具篇)geoserver热力图层SLD样式效果

地图之家总目录(订阅之前必须详细了解该博客) 示例效果 一:SLD代码 <?xml version="1.0" encoding="ISO-8859-1"?><StyledLayerDescriptor version="1.0.0"xsi:schemaLocation

【UE 粒子练习】05——创建光束类型粒子

效果 步骤 1. 新建一个材质&#xff0c;这里命名为“Mat_Beam” 设置材质域为表面&#xff0c;混合模式为半透明&#xff0c;着色模型为无光照 材质节点如下&#xff1a; 2. 新建一个粒子系统&#xff0c;命名为“P_Beam” 打开“P_Beam”&#xff0c;在发射器中新建一个光束数…

无线振弦采集仪应用隧道安全监测的方案解析

无线振弦采集仪应用隧道安全监测的方案解析 隧道是交通建设中重要的组成部分&#xff0c;安全监测是保障隧道使用安全的重要手段。无线振弦采集仪可以对隧道进行实时、连续的振动监测&#xff0c;提供精确的数据分析和预警&#xff0c;是隧道安全监测的有效工具。 无线振弦采…

DolphinDB x 龙蜥社区,打造多样化的数据底座

近日&#xff0c;浙江智臾科技有限公司&#xff08;以下简称“DolphinDB”&#xff09;正式签署 CLA 贡献者许可协议&#xff0c;加入龙蜥社区&#xff08;OpenAnolis&#xff09;。 DolphinDB 主创团队从 2012 年开始投入研发产品。作为一款基于高性能时序数据库&#xff0c;D…

mysql集群使用nginx配置负载均衡

参考链接&#xff1a;https://mu-sl.com//archives/mysql%E9%9B%86%E7%BE%A4%E4%BD%BF%E7%94%A8nginx%E9%85%8D%E7%BD%AE%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1 配置文件nginx_tcp.conf 示例 load_module modules/ngx_stream_module.so;stream{upstream tcpssh{hash $remote_…

【css】如何实现自定义滚动悬浮置顶、固定表头

说到固定表头或者滚动置顶&#xff0c;我们需要认识css的两个api的2个属性&#xff1a; position: sticky; position: sticky; 是 CSS 中的一种定位方式。当应用于元素时&#xff0c;该元素在滚动时会固定在父容器的指定位置&#xff0c;直到滚动到达特定的位置或条件满足后&…

数据库设计与建模

数据库设计与建模 1 数据库设计的三范式2 数据库建模2.1 建模工具2.2 使用pd建模 1 数据库设计的三范式 三范式&#xff1a; 1.第一范式&#xff08;1NF&#xff09;&#xff1a;确保每一列的原子性&#xff08;做到每列不可拆分&#xff09;2.第二范式&#xff08;2NF&#xf…

从一到无穷大 #17 Db2 Event Store,A Purpose-Built IoT Database Engine

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言Architectural overviewData format and meta-dataEnsuring fast ingestionMulti…

【山河送书第十二期】:《巧用ChatGPT快速搞定数据分析》参与活动,送书两本!!

【山河送书第十二期】&#xff1a;《巧用ChatGPT快速搞定数据分析》参与活动&#xff0c;送书两本&#xff01;&#xff01; 关键亮点内容简介作者简介购买链接参与方式往期赠书回顾 关键亮点 用ChatGPT颠覆数据分析&#xff0c;1分钟生成数据分析结果&#xff01; 30多个精心挑…

山洪灾害监测预警系统解决方案

一、方案背景 近几年我国频繁发生山洪灾害现象&#xff0c;造成大量的人员伤亡&#xff0c;使得洪涝灾害死亡总人数呈上升趋势&#xff0c;群死群伤事件时有发生。为了提高山洪灾害监测预警能力&#xff0c;加强灾害发生时的快速反应能力&#xff0c;我司研发出了山洪灾害监测预…

C语言利用联合体判断大小端

#include<stdio.h>#define SIZE(a) (sizeof(a)) union {/* data */short s;char c[SIZE(short)];short b;int d;char f; }un; int main(int argc,char **argv) {un.s 0x0102;if(SIZE(short) 2)//表示short是16位{printf("\n");printf("c[0] %d,c[1…

QT:使用行编辑器、滑动条、滚动条、进度条、定时器

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QLineEdit> //行编辑器 #include <QSlider> //滑动条 #include <QScrollBar> //滚动条 #include <QProgressBar> //进度条 #include <QTimer> …

机器学习 day33(误差分析、添加数据、迁移学习)

误差分析 我们可以手动查看分类错误的子集样本&#xff08;通常为100个&#xff09;&#xff0c;并统计他们的错误类型在所有错误类型中&#xff0c;选择一种或几种最常见的错误&#xff0c;进行改进。这可以最高效的改进你的模型误差分析的一个限制是&#xff1a;它只能很好…

微服务08-认识和使用SpringAMQP

1.AMQP的认识 1.1 介绍 AMQP是什么&#xff1f;看完你就知道了_hello_读书就是赚钱的博客-CSDN博客_amqp 好处&#xff1a; 什么connection&#xff1a;消息队列的连接、channel&#xff1a;服务发送接收消息的通道、Queue&#xff1a;消息队列——>这些你都不需要自己编写…

Keil 5 或者Keil 4自定义主题颜色100%成功

文章目录 步骤一:代码内容解析&#xff1a;完整文件代码一效果图&#xff1a;黑主题Keil 原主题 步骤一: 找到keil 5或者Keil 4软件安装目录下的UV4文件夹下的global.prop文件&#xff0c;然后用记事本打开该文件&#xff0c;复制下面配置替换到global.prop文件里的所有内容保…