boot分布式计算 spring_springboot05-分布式系统理念
分布式系統(tǒng)理念
RPC
RPC(Remote Procedure Call)遠(yuǎn)程過程調(diào)用;是一種進(jìn)程間通信方式,也是一種思想,而不是規(guī)范。允許程序調(diào)用另一個(gè)地址空間(通常是共享網(wǎng)絡(luò)的另一臺(tái)機(jī)器上)的過程或函數(shù)。
RPC的兩個(gè)核心:通訊、序列化
序列化:將數(shù)據(jù)進(jìn)行轉(zhuǎn)換
dubbo
dubbo就是高可用,高性能的RPC框架,采用全是 Spring 配置方式,
提供了三大核心能力:面向接口的遠(yuǎn)程方法調(diào)用、智能容錯(cuò)和負(fù)載均衡,以及服務(wù)自動(dòng)注冊(cè)和發(fā)現(xiàn)。
服務(wù)注冊(cè)實(shí)戰(zhàn)
前提:zookeeper服務(wù)已開啟
1.提供者提供服務(wù)
? 1)導(dǎo)入依賴
com.alibaba.boot
dubbo-spring-boot-starter
0.1.0
com.github.sgroschupf
zkclient
0.1
? 2)配置注冊(cè)中心的地址,以及服務(wù)發(fā)現(xiàn)名,和要掃描的包
dubbo.application.name=privide-ticket
dubbo.registry.address=zookeeper://192.168.1.10:2181
dubbo.scan.base-packages=com.mjh.privideticket.service
? 3)在想要被注冊(cè)的服務(wù)上面增加一個(gè)注解@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//將服務(wù)發(fā)布出去
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "《厲害了,我的國(guó)》";
}
}
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;
/**
* 將服務(wù)提供者注冊(cè)到注冊(cè)中心
* 1.引入dubbo和zkclient相關(guān)服務(wù)依賴
* 2.配置dubbo的掃描包和注冊(cè)中心地址
* 3.使用@Service發(fā)布服務(wù)
*/
@EnableDubboConfig
@SpringBootApplication
public class PrivideTicketApplication {
public static void main(String[] args) {
SpringApplication.run(PrivideTicketApplication.class, args);
}
}
2.消費(fèi)者如何消費(fèi)
? 1)導(dǎo)入依賴
com.alibaba.boot
dubbo-spring-boot-starter
0.1.0
com.github.sgroschupf
zkclient
0.1
? 2)配置注冊(cè)中心的地址,配置自己的服務(wù)名
dubbo.application.name=privide-user
dubbo.registry.address=zookeeper://192.168.1.10:2181
? 3)從遠(yuǎn)程注入服務(wù) @Reference
(要使用遠(yuǎn)程的服務(wù),就要跟遠(yuǎn)程的服務(wù)接口一致)
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//遠(yuǎn)程引用
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的注冊(cè)中心地址
* 引用服務(wù)
*/
@EnableDubboConfig
@SpringBootApplication
public class PrivideUserApplication {
public static void main(String[] args) {
SpringApplication.run(PrivideUserApplication.class, args);
}
}
總結(jié)
以上是生活随笔為你收集整理的boot分布式计算 spring_springboot05-分布式系统理念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kali无限登录_Kali Linux没
- 下一篇: win10无法装载重装系统iso文件_w