boot分布式计算 spring_springboot05-分布式系统理念

分布式系统理念

RPC

RPC(Remote Procedure Call)远程过程调用;是一种进程间通信方式,也是一种思想,而不是规范。允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数。

RPC的两个核心:通讯、序列化

序列化:将数据进行转换

dubbo

dubbo就是高可用,高性能的RPC框架,采用全是 Spring 配置方式,

提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。

服务注册实战

前提:zookeeper服务已开启

1.提供者提供服务

​ 1)导入依赖

com.alibaba.boot

dubbo-spring-boot-starter

0.1.0

com.github.sgroschupf

zkclient

0.1

​ 2)配置注册中心的地址,以及服务发现名,和要扫描的包

dubbo.application.name=privide-ticket

dubbo.registry.address=zookeeper://192.168.1.10:2181

dubbo.scan.base-packages=com.mjh.privideticket.service

​ 3)在想要被注册的服务上面增加一个注解@Service(Dubbo的)

service层和Impl层

package com.mjh.privideticket.service;

public interface TicketService {

public String getTicket();

}

package com.mjh.privideticket.service;

import org.springframework.stereotype.Component;

import org.springframework.stereotype.Service;

@Component

@Service//将服务发布出去

public class TicketServiceImpl implements TicketService {

@Override

public String getTicket() {

return "《厉害了,我的国》";

}

}

package com.mjh.privideticket;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubboConfig;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

/**

* 将服务提供者注册到注册中心

* 1.引入dubbo和zkclient相关服务依赖

* 2.配置dubbo的扫描包和注册中心地址

* 3.使用@Service发布服务

*/

@EnableDubboConfig

@SpringBootApplication

public class PrivideTicketApplication {

public static void main(String[] args) {

SpringApplication.run(PrivideTicketApplication.class, args);

}

}

2.消费者如何消费

​ 1)导入依赖

com.alibaba.boot

dubbo-spring-boot-starter

0.1.0

com.github.sgroschupf

zkclient

0.1

​ 2)配置注册中心的地址,配置自己的服务名

dubbo.application.name=privide-user

dubbo.registry.address=zookeeper://192.168.1.10:2181

​ 3)从远程注入服务 @Reference

(要使用远程的服务,就要跟远程的服务接口一致)

package com.mjh.privideticket.service;

public interface TicketService {

public String getTicket();

}

自己的service层

package com.mjh.privideuser.service;

import com.alibaba.dubbo.config.annotation.Reference;

import com.mjh.privideticket.service.TicketService;

import org.springframework.stereotype.Service;

@Service

public class UserService {

@Reference//远程引用

TicketService ticketService;

public void hello(){

String ticket = ticketService.getTicket();

System.out.println("买到票了:"+ticket);

}

}

package com.mjh.privideuser;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubboConfig;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

/**

* 引入依赖

* 配置dubbo的注册中心地址

* 引用服务

*/

@EnableDubboConfig

@SpringBootApplication

public class PrivideUserApplication {

public static void main(String[] args) {

SpringApplication.run(PrivideUserApplication.class, args);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值