SpringBoot 통합 Dubbo+Zookeeper

5867 단어

linux에서 Zookeeper 설치


홈페이지에 가서 Zookeeper 압축 패키지를 다운로드하여 서버의 임의의 디렉터리에 압축을 풀다.conf 폴더에 들어갑니다.zoo_sample.cfg 파일, 편집을 위한 편집을 엽니다.
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
# 
4lw.commands.whitelist=*

그 중에서 데이터 디렉터리는 자신이 만든 디렉터리로 설정하여 스냅샷 정보를 저장할 수 있으며, 데이터 로그 디렉터리를 추가하여 로그 저장 경로를 설정할 수 있습니다. 기본적으로 데이터 디렉터리와 같은 위치입니다.마지막으로 4자 명령 설정을 켜서 서버 상태를 쉽게 볼 수 있도록 하세요.마지막 단계에서 편집된 파일을 이름을 바꾸거나 zoo라고 복사합니다.cfg의 파일은 설정 파일로 사용됩니다.(클러스터가 아닌 독립 실행형 구성임을 주의하십시오.)

Zookeeper 환경 변수 구성


/etc/profile 파일 편집을 열고 다음 문장을 추가합니다.
export ZOOKEEPER_HOME=/home/admin/apache-zookeeper-3.6.3-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin

저장 종료.

Zookeeper 시작


bin 디렉터리에 들어가서./zkServer.shstart는 서비스를 시작하고 stop,restart 등 다른 명령도 있습니다.

자체 클라이언트를 사용하여 Zookeeper 연결


bin 디렉터리에 들어가서./zkCli.sh, 서버에 연결할 수 있습니다.help 명령을 사용하면 명령을 볼 수 있고 노드를 만드는 등 작업을 할 수 있습니다.

Springboot 통합 Dubbo


provider로 SpringBoot 프로젝트를 만들고 pom에 다음과 같은 종속성을 추가합니다.

        
            org.apache.dubbo
            dubbo-spring-boot-starter
            2.7.8
        
        
        
        
            org.apache.curator
            curator-recipes
            5.2.0
        
        
        
            org.apache.curator
            curator-framework
            5.2.0
        

현재 이 버전의 Dubbo는curator의 의존이 필요합니다.응용 프로그램에 있습니다.properties에서 구성:
server.port=8080
spring.application.name=dubbo-provider-demo
# dubbo dubbo 
dubbo.scan.base-packages=com.guomz.springbootdubbo.dubboService
# dubbo , zookeeper
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

##  zookeeper 
## zookeeper address N/A, protocal
#dubbo.registry.address=N/A
dubbo.registry.protocol=zookeeper
dubbo.registry.address=zookeeper://39.105.145.179:2181

다음에 maven 프로젝트를 새로 만들고 서비스 인터페이스를 작성합니다. 예를 들어 다음과 같습니다.
public interface MyService {
    String sayHello();

    Student getStudent();
}

이후 마븐 설치 명령을 사용하여 로컬 마븐 창고 (자신의 원격 창고일 수도 있음) 에 넣으면 나중에 사용할 수 있습니다.인터페이스를 만든 후springbootprovider에 이 의존을 추가하고 서비스 클래스를 만들어서 이 인터페이스를 실현하고 Dubbo 주석을 추가합니다.
import org.apache.dubbo.config.annotation.DubboService;
import org.guomz.entity.Student;
import org.guomz.service.MyService;

@DubboService(version = "1.0.0")
public class MyServiceImpl implements MyService {
    @Override
    public String sayHello() {
        System.out.println(" ");
        return "hello";
    }

    @Override
    public Student getStudent() {
        Student student = new Student();
        student.setId(1L);
        student.setName("guomz");
        System.out.println(" ");
        return student;
    }
}

그 중에서 @DubboService 주석은 현재 클래스를dubbo 서비스로 표시하는 데 사용되며, 매개 변수version과group을 사용하여 서로 다른 실현 클래스를 구분할 수 있습니다.SpringBoot 프로젝트를 하나 더 만들어서consumer 소비자로서provider와 일치합니다.application.properties 설정 역시provider와 같고 포트와 서비스 이름을 구별합니다.controller 참조 서비스 만들기:
import org.apache.dubbo.config.annotation.DubboReference;
import org.guomz.entity.Student;
import org.guomz.service.MyService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @DubboReference(version = "1.0.0", url = "dubbo://127.0.0.1:20880")
    private MyService myService;

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello(){
        return "hello";
    }

    @RequestMapping(value = "/sayhello", method = RequestMethod.GET)
    public String callMyServiceHello(){
        String result = myService.sayHello();
        return result;
    }

    @RequestMapping(value = "/getstudent", method = RequestMethod.GET)
    public Student getStudent(){
        return myService.getStudent();
    }
}

그 중에서 @DubboReference는dubbo 서비스를 인용하는데 만약provider를 직접 연결하는 방식을 사용한다면 url 매개 변수에 값을 부여해야 합니다. 값 내용은provider 프로필에서dubbo입니다.프로토콜에 설정된 프로토콜 이름과 포트;zookeeper를 사용하면 이 인자를 설정할 필요가 없습니다.버전 매개 변수는provider에서 설정한 것과 일치해야 합니다.

좋은 웹페이지 즐겨찾기