この記事では、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>
スタートアップ クラスには次の注釈が導入されています:
@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("支付项目启动 "); } }
After変換
ただし、SpringBoot では Spring Boot Starter という新しい概念が導入されており、プロジェクト開発プロセスの複雑さを効果的に軽減し、開発操作の簡素化に非常に優れた効果をもたらします。
starter
starter の概念には、使用されるすべての依存関係が含まれ、開発者自身が依存関係を導入することによって引き起こされる問題を回避します。
異なるスターターは異なる依存関係を解決するように設計されているため、内部実装が大きく異なる場合があることに注意してください。たとえば、jpa のスターターと Redis のスターターでは実装が異なる場合があります。スターターの本質は、論理レベルでの抽象化の層である合成にあります。おそらく、この概念は Docker と多少似ています。なぜなら、Docker が解決する問題が何かを知っているなら、おそらく、この概念は Docker に似ているからです。 Docker と starter と類似することができます。
スターターの実装
スターターが異なれば実装も異なりますが、基本的には同じ 2 つの内容 (ConfigurationProperties と AutoConfiguration) を使用します。
Spring Boot は「構成よりも規約」の概念を強く信じているため、ConfigurationProperties を使用して構成を保存します。これらの構成にはデフォルト値を設定できます。つまり、元の構成を積極的に上書きしない場合です。を指定すると、デフォルト値が有効になり、多くの状況で非常に役立ちます。
さらに、スターターの ConfigurationProperties を使用すると、すべての構成プロパティを 1 つのファイル (通常はリソース ディレクトリ内の application.properties) に集めることができるため、Spring プロジェクトの XML 地獄に別れを告げることができます。
スターターの全体的なロジックは Dubbo と同じくらい強力です。もちろん、Spring Boot の人気に応えるために独自のスターターも作成します。 ここでは、Dubbo の新しいバージョンを使用します。pom.xml には次の内容が導入されています:
<!-- dubbo 替换 dubbox--> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.6.2</version> </dependency> <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <!-- curator-recipes 替换 zkclient--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.0.1</version> </dependency>
application.properties 構成:
## dubbo springboot 配置 spring.dubbo.application.id=springboot_pay spring.dubbo.application.name=springboot_pay spring.dubbo.registry.address=zookeeper://192.168.1.127:2181 spring.dubbo.provider.threads=10 spring.dubbo.provider.threadpool=fixed spring.dubbo.provider.loadbalance=roundrobin spring.dubbo.server=true spring.dubbo.protocol.name=dubbo
次のアノテーションをスタートアップ クラスに追加します。 :
@EnableDubboConfiguration @SpringBootApplication public class Application{ private static final Logger logger = Logger.getLogger(Application.class); public static void main(String[] args) throws InterruptedException, IOException { logger.info("支付项目启动 "); } }
関連する公開インターフェイス実装構成:
import org.springframework.stereotype.Component; import com.alibaba.dubbo.config.annotation.Service; @Service @Component public class AliPayServiceImpl implements IAliPayService { //省略代码 }
最後にサービスが開始され、サービスが正常に開始され、登録センターに登録されていれば、変換は成功です。
補足Dubbo 2.6.1 は、構造変更後にリリースされた最初のバージョンで、Dangdang.com が提供する Dubbox ブランチを統合しました。
Dubbo のバージョン戦略: 2 つのメジャー バージョンが並行して開発されており、2.5.x は安定版、2.6.x は新機能を備えた実験版です。 2.6 での実験が安定したら、2.5 に移行します。
概要#オリジナルの Dangdang Dubbox 2.8.4 は、Dubbo 2.6.2
#元の Zookeeper 3.4.6 は Zookeeper 3.5.3
以上がSpringBoot 開発における Dubbo 分散サービスの統合の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。