赞
踩
Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。 -来自官方的介绍。
docker pull zookeeper:3.5.9
docker images
docker run --name zookeeper -p 2181:2181 --restart always -d zookeeper:3.5.9
docker ps
新建一个服务提供者和一个消费者 。目录结构如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- dubbo --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>3.0.7</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-zookeeper</artifactId> <version>3.0.7</version> <type>pom</type> </dependency> <!-- dubbo依赖 --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>3.0.2.1</version> </dependency> </dependencies>
server: port: 8020 #应用的名字 spring: application: name: OrderProviderApplication dubbo: application: name: order-provider protocol: name: dubbo port: -1 registry: id: zk-registry address: zookeeper://zookeeperip:2181?blockUntilConnectedWait=100000&timeout=100000 #需要加后边的串,不然容易报连接失败 config-center: address: zookeeper://zookeeperip:2181 metadata-report: address: zookeeper://zookeeperip:2181
/**
* 定义服务的接口
*/
public interface IOrderService {
/**
* 保存订单信息
* @return
*/
String getOrderInfo();
}
使用注解@DubboService 暴露服务,注解可以指定版本,组,超时等
version,group,timeout
/** * 提供方实现接口并暴露服务 */ @DubboService public class IOrderServiceImpl implements IOrderService { /** * 发送订单信息 * @return */ @Override public String getOrderInfo() { Order order = new Order(); order.setOrderId(1); order.setOrderNo(1); order.setProductId(1); order.setUserId(1); order.setOrderNum(5); order.setOrderAmt(new BigDecimal("100.0")); order.setOrderStatus("下单"); order.setPayStatus("未支付"); order.setCreateUser("elite"); order.setCreateTime(LocalDateTime.now()); return order.toString(); } }
@SpringBootApplication
@EnableDubbo //开启dubbo服务
public class OrderProviderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderProviderApplication.class,args);
}
}
同服务提供者。
server: port: 8019 #spring应用名字 spring: application: name: OrderConsumerApplication #dubbo配置 dubbo: application: name: order-consumer protocol: name: dubbo port: -1 registry: id: zk-registry address: zookeeper://192.168.5.130:2181?blockUntilConnectedWait=100000&timeout=100000 config-center: address: zookeeper://192.168.5.130:2181 metadata-report: address: zookeeper://192.168.5.130:2181
/**
* 接口类
*/
public interface IOrderService {
String getOrderInfo();
}
@RestController public class OrderController { /** * 引入接口直接调用 */ @DubboReference IOrderService orderService; @GetMapping("/getOrderInfo") public String getOrderInfo(){ return orderService.getOrderInfo(); } }
service 与 reference
service 与 reference 是 Dubbo 最基础的两个配置项,它们用来将某个指定的接口或实现类注册为 Dubbo 服务,并通过配置项控制服务的行为。
service: 服务提供者暴露服务配置。对应的配置类:org.apache.dubbo.config.ServiceConfig用于服务提供者端,通过 service 配置的接口和实现类将被定义为标准的 Dubbo 服务,从而实现对外提供 RPC 请求服务。
reference:服务消费者引用服务配置。对应的配置类: org.apache.dubbo.config.ReferenceConfig 用于服务消费者端,通过 reference 配置的接口将被定义为标准的 Dubbo 服务,生成的 proxy 可发起对远端的 RPC 请求。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。