무엇 두보 그?
두보는 고성능, 경량의 오픈 소스 자바 RPC 프레임 워크입니다.
그 세 가지 핵심 :
위한 통신, 원격 메소드 호출 인터페이스
지능형 부하 분산 및 내결함성
자동 등록 및 검색 서비스
개념
서비스 제공 업체 (공급자) : 서비스를 제공하는 서비스 제공 업체, Qidong의에서 서비스 제공자는 레지스트리 서비스로 자신을 등록합니다.
서비스 소비자 (소비자) : 시작시 원격 서비스 소비자 서비스, 고객 서비스로 전화가 서비스 레지스트리에 등록 할 필요가 서비스 소비자, 밸런싱 알고리즘 소프트웨어 부하에 따라 목록에서 주소를 제공하는 선택 대만 공급자는 호출이 실패 할 경우, 다른 통화를 선택, 호출합니다.
레지스트리 (등록) : 레지스트리 서비스 제공자의 주소 목록의 변경이있는 경우, 레지스트리는 소비자에게 데이터 연결을 변경하는 긴 푸시 기반으로합니다, 소비자에게 돌아왔다.
센터 (모니터) 모니터링 : 메모리에, 호출의 누적 수를 서비스 소비자와 제공자와 시간을 전화 모니터링 센터, 분당 1 회의 전송 통계 데이터의 정의.
설치 두보 모니터링
두보 서비스 자체는 항아리 같은 소프트웨어 패키지 자체가 아닙니다. 귀하의 역할은 서비스를 제공하기 위해, 사육사 소비자 사용을 달성, 자바 프로그램은 사육사에 연결하는 것입니다.
필요한 도구와도 압축 해제
구성 파일의 내용
참고 : 사육사로 레지스트리를 사용하는 경우, 사육사 시작을 사전에 !
달리기
먼저 실행 zookepper
zookepper 파일을 실행하기 전에 구성 파일을 복사하고 이름을 바꿉니다. 그렇지 않으면, 시작 시간은 현상을 다시 깜박입니다
구체적인 이유는 zoo.cfg 파일 zoo_simple.cfg 대신 찾고 시작하는 시간입니다. 다시 깜박시 파일을 찾을 수 없습니다.
출발
자신의 환경에 따라, 운영의 적절한 방법을 선택합니다.
성공적으로 실행 한 후
실행 두보
사육사가 작동 한 후 성공적으로 두보.
이 경우 명령 cmd를 항아리 패키지 실행
성공의 로그인
로그인 확인
홈 로그인 화면
국가 레지스트리
두보 통합 springboot (이것은 아 아 아 아 텍스트입니다)
프로젝트 : 아래 그림과 같이
이 가운데 소비자와 서비스 제공자에 의해 엔티티 클래스와 서비스 인터페이스에 의존하고 있습니다.
엔티티 수준의 서비스 및 인터페이스 아키텍처
pom.xml 파일 코드
<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>com.bc</groupId>
<artifactId>spring-user-interface</artifactId>
<version>1.0</version>
<properties>
<lombok.version>1.18.8</lombok.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
패킷 도메인 엔티티 클래스 코드
package com.bc.domain;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable{
private static final long serialVersionUID = 1L;
private Integer id ;
private String name ;
private String address ;
}
서비스 패키지의 인터페이스 코드
는 OrderService
package com.bc.service;
import java.util.List;
import com.bc.domain.User;
public interface OrderService {
public List<User> initOrder(Integer id) ;
}
UserService
package com.bc.service;
import java.util.List;
import com.bc.domain.User;
public interface UserService {
public List<User> getUserList();
}
서비스 제공과 관련된 구조 및 코드
pom.xml 파일 코드
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.bc</groupId>
<artifactId>springboot-service-provider</artifactId>
<version>1.0</version>
<name>springboot-service-provider</name>
<description>springboot与dubbo的集成服务提供者(白茶弟弟)</description>
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<dubbo.version>2.6.5</dubbo.version>
</properties>
<dependencies>
<dependency>
<groupId>com.bc</groupId>
<artifactId>spring-user-interface</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Dubbo Spring Boot Starter -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</dependency>
<!-- curator-framework -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
UserServiceImpl 코드
package com.bc.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.dubbo.config.annotation.Service;
import com.bc.domain.User;
import com.bc.service.UserService;
//注意此时的service为dubbo的注解
@Service
public class UserServiceImpl implements UserService{
public static List<User> user=new ArrayList<>();
static {
user.add(new User(1,"白菜弟弟","安徽"));
}
@Override
public List<User> getUserList() {
// TODO Auto-generated method stub
return user;
}
}
클래스 코드 시작
package com.bc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
@SpringBootApplication
@EnableDubbo //注意需要这个注解
public class SpringbootServiceProviderApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootServiceProviderApplication.class, args);
System.out.println("服务者启动成功");
}
}
프로필 코드 application.Properties
#Dubbo config
dubbo.application.name=springboot-service-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
제공하는 서비스가 완료 될 때까지, 시작 클래스보기를 실행
브라우저보기
소비자 관련 부분과 코드
코드
pom.xml 파일
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.bc</groupId>
<artifactId>springboot-service-consumer</artifactId>
<version>1.0</version>
<name>springboot-service-consumer</name>
<description>springboot与dubbo的集成服务消费者(白茶弟弟)</description>
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<dubbo.version>2.6.5</dubbo.version>
</properties>
<dependencies>
<dependency>
<groupId>com.bc</groupId>
<artifactId>spring-user-interface</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Dubbo Spring Boot Starter -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</dependency>
<!-- curator-framework -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
프로필 코드 application.Properties
#Dubbo
dubbo.application.name=springboot-service-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
server.port=8888
있으며, OrderServiceImpl 구현 클래스
package com.bc.service;
import java.util.List;
import org.springframework.stereotype.Service;
import com.alibaba.dubbo.config.annotation.Reference;
import com.bc.domain.User;
@Service//此时的这个是spring下的
public class OrderServiceImpl implements OrderService {
@Reference //这个是dubbo下的
private UserService userService ;
@Override
public List<User> initOrder(Integer id) {
// TODO Auto-generated method stub
return userService.getUserList();
}
}
제어 장치
package com.bc.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.bc.domain.User;
import com.bc.service.OrderService;
@RestController
public class CusController {
@Autowired
private OrderService orderSrvice ;
@RequestMapping("getUser")
public List<User> getUser(){
return this.orderSrvice.initOrder(1);
}
}
시작 클래스
package com.bc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
@SpringBootApplication
@EnableDubbo
public class SpringbootServiceConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootServiceConsumerApplication.class, args);
System.out.println("消费者启动成功");
}
}
다음은 코드 섹션입니다
시작 소비자
브라우저보기
지금까지이 완료되었습니다.