当前位置: 首页 > wzjs >正文

网站服务器设置柳市网站制作

网站服务器设置,柳市网站制作,兼积做调查挣钱网站,唐山企业网络推广培训点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) AI炼丹日志-29 - 字节跳动 DeerFlow 深度研究框斜体样式架 私有…

点一下关注吧!!!非常感谢!!持续更新!!!

🚀 AI篇持续更新中!(长期更新)

AI炼丹日志-29 - 字节跳动 DeerFlow 深度研究框斜体样式架 私有部署 测试上手 架构研究,持续打造实用AI工具指南!📐🤖

💻 Java篇正式开启!(300篇)

目前2025年07月10日更新到:
Java-68 深入浅出 分布式服务 Netty实现自定义RPC 附详细代码
MyBatis 已完结,Spring 已完结,Nginx已完结,Tomcat已完结,分布式服务正在更新!深入浅出助你打牢基础!

📊 大数据板块已完成多项干货更新(300篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!
大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT案例 详解

请添加图片描述

Dubbo 服务调用机制详解

基本架构与交互原理

在 Dubbo 分布式服务框架中,所有的服务调用都是基于 Java 接口进行交互的。这种接口契约式设计确保了服务提供者和消费者之间的解耦。具体工作流程如下:

  1. 接口协定:服务提供方和消费方首先需要共同定义一套标准的服务接口(通常打包为独立的API模块)
  2. 服务注册:提供者实现这些接口后,将服务实例注册到注册中心(如Zookeeper、Nacos等)
  3. 服务发现:消费者从注册中心获取可用服务列表
  4. 远程调用:消费者通过动态代理发起对提供者的RPC调用

Maven 工程结构说明

Dubbo 项目通常采用多模块的Maven工程结构,典型布局如下:

dubbo-demo/
├── dubbo-api/         # 接口定义模块
│   ├── src/main/java
│   │   └── com/example/DemoService.java
│   └── pom.xml
├── dubbo-provider/    # 服务提供方
│   ├── src/main/java
│   │   └── com/example/DemoServiceImpl.java
│   └── pom.xml
└── dubbo-consumer/    # 服务消费方├── src/main/java│   └── com/example/ConsumerApp.java└── pom.xml

详细实现步骤

1. 创建API模块

<!-- dubbo-api/pom.xml -->
<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version>
</dependency>

接口定义示例:

package com.example;public interface DemoService {String sayHello(String name);
}

2. 实现Provider模块

<!-- dubbo-provider/pom.xml -->
<dependency><groupId>com.example</groupId><artifactId>dubbo-api</artifactId><version>1.0.0</version>
</dependency>

服务实现示例:

package com.example;import org.apache.dubbo.config.annotation.Service;@Service(version = "1.0.0")
public class DemoServiceImpl implements DemoService {@Overridepublic String sayHello(String name) {return "Hello " + name;}
}

注册中心配置(以Zookeeper为例):

# application.properties
dubbo.application.name=demo-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

3. 实现Consumer模块

<!-- dubbo-consumer/pom.xml -->
<dependency><groupId>com.example</groupId><artifactId>dubbo-api</artifactId><version>1.0.0</version>
</dependency>

消费方调用示例:

package com.example;import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class DemoController {@Reference(version = "1.0.0")private DemoService demoService;@GetMapping("/hello")public String sayHello(String name) {return demoService.sayHello(name);}
}

消费者配置示例:

# application.properties
dubbo.application.name=demo-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181

典型应用场景

  1. 微服务架构:将单体应用拆分为多个Dubbo服务
  2. 服务治理:通过注册中心实现服务的自动发现和负载均衡
  3. 分布式事务:配合Seata等框架实现分布式事务管理
  4. 多版本支持:通过版本号控制实现灰度发布
  5. 服务降级:在服务不可用时自动切换到降级逻辑

父工程

创建一个父级工程,用于管理所有的模块,移除src目录。
我们定义基础 POM,这里对所有的版本进行管理,方便后续的子模块,这样子模块就不用再控制和管理各自的版本了:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>icu.wzk</groupId><artifactId>dubbo-test</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>wzk-service-api</module><module>wzk-producer</module><module>wzk-consumer</module></modules><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><dubbo.version>2.7.5</dubbo.version></properties><dependencyManagement><dependencies><dependency><groupId>icu.wzk</groupId><artifactId>wzk-service-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-zookeeper</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-rpc-dubbo</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-remoting-netty4</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-serialization-hessian2</artifactId><version>${dubbo.version}</version></dependency></dependencies></dependencyManagement></project>

API模块

这个模块用于定义接口抽象类,不提供实际的实现。
后续的 Producer 和 Consumer 都将依赖这个模块,根据该模块定义出来的接口进行使用。

POM

该模块直接依赖 Dubbo,版本控制都交给了父级Maven项目控制。
后续的 Producer 和 Consumer 依赖这个模块,就不需要再单独控制 Dubbo 模块了:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>icu.wzk</groupId><artifactId>dubbo-test</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>wzk-service-api</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-zookeeper</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-rpc-dubbo</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-remoting-netty4</artifactId></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-serialization-hessian2</artifactId></dependency></dependencies>
</project>

项目的基本结构如该图所示:
在这里插入图片描述
接口定义
定义接口,只写了一个基本的方法:

package icu.wzk.service;public interface WzkHelloService {String sayHello(String name);
}

创建接口的提供者

<dependencies><dependency><groupId>icu.wzk</groupId><artifactId>wzk-service-api</artifactId></dependency>
</dependencies>

对应的内容如下所示:
在这里插入图片描述

http://www.dtcms.com/wzjs/491537.html

相关文章:

  • 有那些专门做外贸的网站呀中小型企业网站设计与开发
  • 大赛网站开发需求天津网站建设
  • 网站建设 十年今日最新新闻摘抄
  • 分享几款做淘客网站的服务器seo网站系统
  • 网站版权模板怎么建网站免费的
  • 用vs2012做网站首页百度怎么发自己的小广告
  • 怎么备份网站数据库免费seo教程分享
  • 上海网站设计建设公网络营销方式
  • 北京网站开发网站建设咨询软文客
  • 资溪县建设局网站seo搜索引擎优化招聘
  • wordpress建m域名网站安徽网络优化公司排名
  • 做网站3年3万站长工具名称查网站
  • 网站建设和实现西安seo关键词排名优化
  • 网站的用途今日热点新闻大事件
  • 找网站做编程培训机构
  • 宁波网站建设流程图今天刚刚发生的新闻事故
  • 抚松做网站企业网上的推广
  • 有什么免费ppt模板网站seo的中文名是什么
  • asp简单购物网站源码品牌公关
  • wordpress更新记录百度seo最成功的优化
  • 软件公司网站设计与制作谷歌浏览器直接打开
  • 深圳专业网站开发公司网站一般怎么推广
  • 免费建站系统有哪些中山排名推广
  • 设计商标的网站微平台推广
  • 寻找聊城做网站的公司网络营销推广的方法有哪些
  • 在国外做网站推广播放量自助下单平台
  • 企业做的网站开发费如何入帐湖南seo优化按天付费
  • 怎么使用创客贴网站做图广州网站优化推广
  • 网站服务器如何维护北京搜索排名优化
  • 昆山网站制作广告最多的网站