>  기사  >  Java  >  SpringBoot 개발에서 Dubbo 분산 서비스 통합 소개

SpringBoot 개발에서 Dubbo 분산 서비스 통합 소개

不言
不言앞으로
2018-10-15 15:23:022393검색

이 기사는 SpringBoot 개발에서 Dubbo 분산 서비스 통합에 대한 소개를 제공합니다. 이는 특정 참고 가치가 있으므로 도움이 필요한 친구에게 도움이 되기를 바랍니다.

서문

SpringBoot가 큰 인기를 끌던 시절, Alibaba의 분산 프레임워크인 Dubbo가 알 수 없는 이유로 N년 동안 중단된 후 마침내 유지 관리를 받았습니다. 이전 마이크로서비스에서는 Dangdang이 유지관리하는 Dubbox 버전을 사용하였고, 통합 방식 역시 xml 구성 방식을 사용하였습니다.

변형 전

이전에는 SpringBoot에서 Dubbox를 이렇게 사용했습니다. 먼저 Dubbox-2.8.4, zkclient-0.6, Zookeeper-3.4.6 버전을 간략하게 기록합니다.

프로젝트에 도입된 spring-context-dubbo.xml 구성 파일은 다음과 같다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        ">
    <!-- 记录监控信息 -->
    <dubbo:monitor protocol="registry"/>
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="spring-boot-pay" />
    <!-- 使用zookeeper注册中心暴露服务地址 subscribe 默认:true 是否向此注册中心订阅服务,如果设为false,将只注册,不订阅 check 默认:true 注册中心不存在时,是否报错    -->
    <dubbo:registry protocol="zookeeper" address="192.168.1.180:2181" check="false"/>
    <!-- 
               生产者配置 生产者  远程默认调用3次 参数 retries="2" async="true" 异步返回结果 默认是同步 timeout="10000" 毫秒
               用dubbo协议在20882端口暴露服务  固定线程池 10 启动时建立线程,不关闭,一直持有  负载均衡策略 轮询
     -->
    <dubbo:provider  timeout="10000"  threads="10" threadpool="fixed" loadbalance="roundrobin"/>
    <!-- name="dubbo" 协议名称   为防止被大量连接撑挂,可在服务提供方限制大接收连接数,以实现服务提供方自我保护。 host 部署外网设置为内网通信地址-->
    <dubbo:protocol name="dubbo" port="-1" dispatcher="all"  accepts="1000"   />
    
    <!-- 使用注解方式-->     
    <dubbo:annotation package="com.itstyle"/>
</beans>

Startup 클래스에서는 다음과 같은 어노테이션을 도입한다.

@SpringBootApplication
@ImportResource({"classpath:spring-context-dubbo.xml"})
public class Application{
    private static final Logger logger = Logger.getLogger(Application.class);

    public static void main(String[] args) throws InterruptedException,
            IOException {
        logger.info("支付项目启动 ");
    }

}

AfterTransformation

그러나 SpringBoot에서는 새로운 개념의 Spring Boot Starter를 도입한다. , 이는 프로젝트 개발 프로세스의 복잡성을 효과적으로 줄여 개발 작업을 단순화하는 데 매우 좋은 영향을 미칩니다.

스타터의 개념

스타터에는 사용된 모든 종속성이 포함되어 개발자가 직접 종속성을 도입하여 발생하는 문제를 방지합니다.

다른 스타터는 서로 다른 종속성을 해결하도록 설계되었으므로 내부 구현이 매우 다를 수 있습니다. 예를 들어 jpa의 스타터와 Redis의 스타터는 서로 다른 구현을 가질 수 있습니다. 이는 스타터의 본질이 다음과 같기 때문입니다. 논리적 수준의 추상화 계층인 합성. 둘 다 "패키징" 작업을 수행하기 때문에 이 개념은 Docker와 다소 유사할 수 있습니다. Docker가 해결해야 할 문제가 무엇인지 알고 있다면 Docker Make를 사용할 수 있습니다. 스타터와 비유.

스타터 구현

스타터마다 구현이 다르지만 기본적으로 ConfigurationProperties와 AutoConfiguration이라는 동일한 두 콘텐츠를 사용합니다.

Spring Boot는 "구성에 대한 관례" 개념을 굳게 믿기 때문에 ConfigurationProperties를 사용하여 구성을 저장하고 이러한 구성은 기본값을 가질 수 있습니다. 즉, 원래 구성을 적극적으로 덮어쓰지 않으면 기본값이 됩니다. 효과가 나타나며 이는 많은 상황에서 매우 유용합니다.

또한 스타터의 ConfigurationProperties를 사용하면 모든 구성 속성을 하나의 파일(일반적으로 리소스 디렉터리의 application.properties)로 수집할 수 있으므로 Spring 프로젝트의 XML 지옥에 작별을 고할 수 있습니다.

스타터의 전반적인 논리SpringBoot 개발에서 Dubbo 분산 서비스 통합 소개는 Dubbo만큼 강력합니다. 물론 Spring Boot의 인기에 부응하기 위해 자체 스타터도 생성합니다.

여기에서는 비교적 새로운 버전의 Dubbo를 사용합니다. 다음은 pom에 소개되어 있습니다. 스타트업이 성공하고 등록 센터에 등록되면 변환이 성공한 것입니다.

보충

Dubbo 2.6.1은 Dangdang.com에서 제공하는 Dubbox 브랜치를 병합하여 구조를 변경한 후 처음으로 출시된 버전입니다.

Dubbo의 버전 전략: 두 가지 주요 버전이 동시에 개발됩니다. 2.5.x는 안정적인 버전이고 2.6.x는 새로운 기능이 포함된 실험 버전입니다. 2.6에 대한 실험이 안정화되면 2.5로 마이그레이션될 예정입니다.

요약

원래 Dangdang Dubbox 2.8.4가 Dubbo 2.6.2로 대체되었습니다.

원래 spring-context-dubbo.xml 구성이 dubbo-spring-boot-starter 2.0.0으로 대체되었습니다.

  • 원래 zkclient 0.6은 curator-recipes 4.0.1로 대체되었습니다.

  • 원래 Zookeeper 3.4.6은 Zookeeper 3.5.3

  • 으로 업그레이드되었습니다.

위 내용은 SpringBoot 개발에서 Dubbo 분산 서비스 통합 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제