Spring Boot Dubbo 분포 식 서비스 구축 방법
노드 역할 설명
노드
역할 설명
Provider
노출 서비스 제공 자
Consumer
원 격 서비스 소비 자 를 호출 하 다.
Registry
서비스 등록 및 발 견 된 등록 센터
Monitor
서비스의 호출 횟수 와 호출 시간 을 통계 하 는 모니터링 센터
Container
서비스 실행 용기
호출 관계 설명
4.567917.서비스 용기 Container 는 서비스 제공 자 를 시작,로드,실행 하 는 것 을 책임 집 니 다4.567917.서비스 제공 자 Provider 가 시 작 될 때 등록 센터 Registry 에 자신 이 제공 하 는 서 비 스 를 등록 합 니 다
개발 환경 은 주로 다음 과 같은 부분 과 관련된다.
Dubbo API
서비스 인 터 페 이 스 를 정의 하고 jar 패키지 로 만들어 소비 자 를 의존 하 게 하 며 서비스 자 는 인 터 페 이 스 를 실현 합 니 다.이 프로젝트 는 인터페이스 정의 와 model 대상 만 있 습 니 다.@데 이 터 는 lombok 오픈 소스 라 이브 러 리 가 제공 하 는 특성 으로 개발 이 편리 합 니 다.
model 개체 정의:
@Data
public class User implements Serializable {
private Long id;
private String username;
}
provider 인터페이스 정의:
public interface UserProvider {
List<User> listUser();
}
공급 자 서비스 공급 자pom 의존:
spring-boot-starter 를 도입 합 니 다.dubbo-api 인 터 페 이 스 는 바로 우리 가 위 에서 언급 한 인터페이스 정의 jar,dubbo-spring-boot-starter,dubbo-dependencies-zookeeper 입 니 다.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>zero.springboot.study</groupId>
<artifactId>dubbo-api</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!--dubbo start-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.1</version>
</dependency>
<!-- Zookeeper dependencies -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>2.7.1</version>
<type>pom</type>
<exclusions>
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--dubbo end-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.57</version>
</dependency>
</dependencies>
프로필 Yml 정의:
spring:
application:
name: dubbo-provider
#
embedded:
zookeeper:
# zookeeper
port: 2181
# dubbo
dubbo:
#
registry:
id: dubbo-provider
address: zookeeper://127.0.0.1:${embedded.zookeeper.port}
group: local
application:
name: dubbo-provider
id: dubbo-provider
logger: slf4j
qosEnable: true
qosPort: 22224
qosAcceptForeignIp: false
# dubbo
protocol:
# -1
port: -1
name: dubbo
scan:
# dubbo
base-packages: com.zero.provider.impl
api 정의 인터페이스 구현@Service 는 Dubbo 입 니 다.Spring 을 가 져 오지 마 세 요.
import com.google.common.collect.Lists;
import com.zero.api.model.User;
import com.zero.api.provider.UserProvider;
import org.apache.dubbo.config.annotation.Service;
import java.util.List;
@Service(interfaceClass = UserProvider.class)
public class UserProviderImpl implements UserProvider {
@Override
public List<User> listUser() {
User user = new User();
user.setId(1L);
user.setUsername(" ");
return Lists.newArrayList(user);
}
}
Consumer Pom 정의:
spring-boot-starter-web 에 의존 하여 http rest 인 터 페 이 스 를 전단 에 호출 해 야 합 니 다.동시에 내부 적 으로 Dubbo 를 통 해 RPC 호출 서비스 제공 자 를 실현 한다.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>zero.springboot.study</groupId>
<artifactId>dubbo-api</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!--dubbo start-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.1</version>
</dependency>
<!-- Zookeeper dependencies -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>2.7.1</version>
<type>pom</type>
<exclusions>
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--dubbo end-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
yaml 정의:
server:
# web
port: 9005
spring:
application:
name: dubbo-comsumer
#
embedded:
zookeeper:
port: 2181
# dubbo
dubbo:
registry:
id: dubbo-comsumer
address: zookeeper://127.0.0.1:${embedded.zookeeper.port}
group: local
application:
name: dubbo-comsumer
id: dubbo-comsumer
logger: slf4j
qosEnable: false
qosPort: 22223
qosAcceptForeignIp: false
protocol:
port: -1
name: dubbo
#
consumer:
check: false
서비스 소비자 호출 서비스 생산자
import com.zero.api.model.User;
import com.zero.api.provider.UserProvider;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Reference
private UserProvider userProvider;
public List<User> listUser() {
return userProvider.listUser();
}
}
우 리 는 RESTfull 인 터 페 이 스 를 통 해 전단 호출 을 제공 합 니 다.
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public Object listUser() {
List<User> list = userService.listUser();
return list;
}
}
총결산각종 구체 적 인 협의,등록 센터,다 중 등록 센터,시간 초과 등 설정 은 공식 문 서 를 볼 수 있 습 니 다http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.