SpringBoot 통합 Dubbo+Zookeeper
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에서 설정한 것과 일치해야 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.