合肥公司网站建设价格低2021网站建设前景怎么样
2026/5/18 19:13:52 网站建设 项目流程
合肥公司网站建设价格低,2021网站建设前景怎么样,深圳观澜网站建设,房产资讯最新消息大家好#xff0c;我是小悟。 一、Dubbo 简介 Dubbo 是阿里巴巴开源的一款高性能、轻量级的 Java RPC 框架#xff0c;主要功能包括#xff1a; 核心特性#xff1a; 面向接口的远程方法调用 - 透明化的远程调用#xff0c;像调用本地方法一样调用远程方法智能负载均衡…大家好我是小悟。一、Dubbo 简介Dubbo是阿里巴巴开源的一款高性能、轻量级的 Java RPC 框架主要功能包括核心特性面向接口的远程方法调用- 透明化的远程调用像调用本地方法一样调用远程方法智能负载均衡- 内置多种负载均衡策略随机、轮询、最少活跃调用等服务自动注册与发现- 支持多种注册中心Zookeeper、Nacos、Consul等高可用性- 集群容错、失败重试、服务降级运行期流量调度- 可基于路由规则实现灰度发布可视化的服务治理- 提供丰富的监控和管理界面核心组件Provider服务提供者暴露服务Consumer服务消费者调用远程服务Registry注册中心负责服务注册与发现Monitor监控中心统计服务调用次数和调用时间二、实战步骤环境准备JDK 1.8Maven 3.6Spring Boot 2.7.xDubbo 3.xZookeeper 3.6或使用 Nacos步骤1创建父工程可选!-- pom.xml -- ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 modelVersion4.0.0/modelVersion groupIdcom.example/groupId artifactIddubbo-demo/artifactId version1.0.0/version packagingpom/packaging modules moduledubbo-api/module moduledubbo-provider/module moduledubbo-consumer/module /modules parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.7.14/version /parent properties dubbo.version3.2.0/dubbo.version zookeeper.version3.8.0/zookeeper.version curator.version5.3.0/curator.version /properties /project步骤2创建 API 模块定义服务接口// UserService.java - 服务接口 package com.example.service; public interface UserService { UserDTO getUserById(Long id); ListUserDTO findAllUsers(); Long createUser(UserDTO user); } // UserDTO.java - 数据传输对象 package com.example.dto; import java.io.Serializable; public class UserDTO implements Serializable { private Long id; private String username; private String email; private Integer age; // 构造器、getter、setter省略 }!-- dubbo-api/pom.xml -- dependencies dependency groupIdorg.apache.dubbo/groupId artifactIddubbo/artifactId version${dubbo.version}/version /dependency /dependencies步骤3创建 Provider服务提供者!-- dubbo-provider/pom.xml -- dependencies !-- API 模块依赖 -- dependency groupIdcom.example/groupId artifactIddubbo-api/artifactId version${project.version}/version /dependency !-- Spring Boot -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter/artifactId /dependency !-- Dubbo Spring Boot Starter -- dependency groupIdorg.apache.dubbo/groupId artifactIddubbo-spring-boot-starter/artifactId version${dubbo.version}/version /dependency !-- Zookeeper 注册中心 -- dependency groupIdorg.apache.dubbo/groupId artifactIddubbo-registry-zookeeper/artifactId version${dubbo.version}/version /dependency !-- Zookeeper 客户端 -- dependency groupIdorg.apache.curator/groupId artifactIdcurator-framework/artifactId version${curator.version}/version /dependency dependency groupIdorg.apache.curator/groupId artifactIdcurator-recipes/artifactId version${curator.version}/version /dependency !-- 如果使用 Nacos替换为 dependency groupIdcom.alibaba.nacos/groupId artifactIdnacos-client/artifactId version2.1.0/version /dependency -- /dependencies# application.yml spring: application: name: dubbo-provider dubbo: application: name: ${spring.application.name} qos-enable: false # 关闭QoS服务避免端口冲突 protocol: name: dubbo port: 20880 registry: address: zookeeper://localhost:2181 # 如果使用Nacosnacos://localhost:8848 scan: base-packages: com.example.service.impl # 服务实现类扫描路径 provider: timeout: 5000 retries: 3// UserServiceImpl.java - 服务实现 package com.example.service.impl; import org.apache.dubbo.config.annotation.DubboService; import com.example.service.UserService; import com.example.dto.UserDTO; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentHashMap; DubboService(version 1.0.0, group user-service) public class UserServiceImpl implements UserService { private final ConcurrentHashMapLong, UserDTO userStore new ConcurrentHashMap(); private Long idGenerator 1L; Override public UserDTO getUserById(Long id) { return userStore.get(id); } Override public ListUserDTO findAllUsers() { return new ArrayList(userStore.values()); } Override public Long createUser(UserDTO user) { Long id idGenerator; user.setId(id); userStore.put(id, user); return id; } }// ProviderApplication.java - 启动类 package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; EnableDubbo // 开启Dubbo注解支持 SpringBootApplication public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); System.out.println(Dubbo Provider 启动成功!); } }步骤4创建 Consumer服务消费者!-- dubbo-consumer/pom.xml -- dependencies dependency groupIdcom.example/groupId artifactIddubbo-api/artifactId version${project.version}/version /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.apache.dubbo/groupId artifactIddubbo-spring-boot-starter/artifactId version${dubbo.version}/version /dependency dependency groupIdorg.apache.dubbo/groupId artifactIddubbo-registry-zookeeper/artifactId version${dubbo.version}/version /dependency dependency groupIdorg.apache.curator/groupId artifactIdcurator-framework/artifactId version${curator.version}/version /dependency /dependencies# application.yml spring: application: name: dubbo-consumer dubbo: application: name: ${spring.application.name} registry: address: zookeeper://localhost:2181 consumer: check: false # 启动时不检查提供者是否可用 timeout: 5000// UserController.java - REST控制器 package com.example.controller; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.web.bind.annotation.*; import com.example.service.UserService; import com.example.dto.UserDTO; import java.util.List; RestController RequestMapping(/users) public class UserController { DubboReference( version 1.0.0, group user-service, check false, timeout 3000, retries 2 ) private UserService userService; GetMapping(/{id}) public UserDTO getUser(PathVariable Long id) { return userService.getUserById(id); } GetMapping public ListUserDTO getAllUsers() { return userService.findAllUsers(); } PostMapping public Long createUser(RequestBody UserDTO user) { return userService.createUser(user); } }// ConsumerApplication.java - 启动类 package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; EnableDubbo SpringBootApplication public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); System.out.println(Dubbo Consumer 启动成功!); System.out.println(访问 http://localhost:8080/users 测试); } }步骤5配置注册中心使用 Docker 启动 Zookeeperdocker run -d --name zookeeper \ -p 2181:2181 \ -e ZOO_STANDALONE_ENABLEDtrue \ zookeeper:3.8或使用 Nacosdocker run -d --name nacos \ -p 8848:8848 \ -e MODEstandalone \ nacos/nacos-server:2.1.0三、高级配置示例1. 负载均衡配置DubboReference( version 1.0.0, loadbalance roundrobin // 轮询负载均衡 // 可选值random随机、leastactive最少活跃调用 ) private UserService userService;2. 集群容错配置DubboReference( version 1.0.0, cluster failover // 失败自动切换 // 可选值failfast快速失败、failsafe失败安全 ) private UserService userService;3. 多版本支持// Provider端 - 发布多个版本 DubboService(version 2.0.0, group user-service) public class UserServiceV2Impl implements UserService { // 新版本实现 } // Consumer端 - 引用指定版本 DubboReference(version 2.0.0) private UserService userService;4. 服务分组// Provider端 DubboService(group test, version 1.0.0) public class UserServiceTestImpl implements UserService { // 测试环境实现 } DubboService(group prod, version 1.0.0) public class UserServiceProdImpl implements UserService { // 生产环境实现 } // Consumer端 DubboReference(group test) // 引用测试环境服务 private UserService userService;四、Dubbo Admin 监控可选安装 Dubbo Admin# 使用 Docker docker run -d \ --name dubbo-admin \ -p 8080:8080 \ -e admin.registry.addresszookeeper://localhost:2181 \ -e admin.config-centerzookeeper://localhost:2181 \ -e admin.metadata-report.addresszookeeper://localhost:2181 \ apache/dubbo-admin:0.5.0访问http://localhost:8080默认账号root默认密码root五、总结整合要点接口共享通过独立的 API 模块实现接口契约共享注解驱动使用DubboService和DubboReference简化配置配置分离Provider 和 Consumer 配置独立管理注册中心统一使用注册中心进行服务治理优势高性能基于 Netty 的 NIO 通信序列化效率高透明调用远程调用像本地调用一样简单服务治理完整的服务注册、发现、监控体系生态丰富支持多种注册中心、配置中心、监控系统云原生友好支持 Dubbo Mesh与 Kubernetes 集成良好最佳实践接口设计接口应该粒度适中避免过于复杂的方法签名超时设置根据业务特点合理设置超时时间版本管理做好服务版本规划支持灰度发布监控告警配置完善的监控和告警机制熔断降级在 Consumer 端配置合适的容错策略注意事项确保网络连通性特别是注册中心的连接注意序列化兼容性特别是字段增减的情况生产环境建议开启 Dubbo QoS 进行服务治理合理设置线程池大小避免资源耗尽通过以上步骤可以成功将 Spring Boot 与 Dubbo 集成构建分布式微服务应用。谢谢你看我的文章既然看到这里了如果觉得不错随手点个赞、转发、在看三连吧感谢感谢。那我们下次再见。您的一键三连是我更新的最大动力谢谢山水有相逢来日皆可期谢谢阅读我们再会我手中的金箍棒上能通天下能探海

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询