Der Inhalt dieses Artikels ist eine Einführung in die Integration verteilter Dubbo-Dienste in die SpringBoot-Entwicklung. Ich hoffe, dass er für Sie hilfreich ist.
Vorwort
Als SpringBoot sehr beliebt war, wurde Alibabas verteiltes Framework Dubbo schließlich beibehalten, nachdem es aus unbekannten Gründen N Jahre lang ausgesetzt worden war. In den vorherigen Microservices wurde die von Dangdang verwaltete Version Dubbox verwendet, und die Integrationsmethode verwendete auch die XML-Konfigurationsmethode.
Vor der Transformation
So wurde Dubbox zuvor in SpringBoot verwendet. Notieren Sie zunächst kurz die Versionen Dubbox-2.8.4, zkclient-0.6, zookeeper-3.4.6.
Die Konfigurationsdatei spring-context-dubbo.xml wird wie folgt in das Projekt eingeführt:
<?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>
Die Startup-Klasse führt die folgenden Anmerkungen ein:
@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("支付项目启动 "); } }
Danach Transformation
SpringBoot führt jedoch das neue Konzept Spring Boot Starter ein, das die Komplexität des Projektentwicklungsprozesses effektiv reduziert und einen sehr guten Effekt auf die Vereinfachung von Entwicklungsvorgängen hat.
Das Konzept des Starters
Starter umfasst alle verwendeten Abhängigkeiten und vermeidet so die Probleme, die durch die Einführung von Abhängigkeiten durch Entwickler selbst verursacht werden.
Es ist zu beachten, dass verschiedene Starter zum Lösen unterschiedlicher Abhängigkeiten konzipiert sind, sodass ihre internen Implementierungen möglicherweise sehr unterschiedlich sind. Dies liegt daran, dass der Starter von JPA und der Starter von Redis unterschiedlich sein können Die Essenz von Starter liegt in der Synthese, einer Abstraktionsebene auf logischer Ebene. Möglicherweise ähnelt dieses Konzept Docker, da beide eine „Paketierungs“-Operation durchführen. Wenn Sie wissen, welches Problem Docker lösen soll kann eine Analogie zu Docker und Starter herstellen.
Implementierung des Starters
Obwohl verschiedene Starter unterschiedliche Implementierungen haben, verwenden sie grundsätzlich dieselben zwei Inhalte: ConfigurationProperties und AutoConfiguration.
Da Spring Boot fest an das Konzept „Konvention vor Konfiguration“ glaubt, verwenden wir ConfigurationProperties, um unsere Konfigurationen zu speichern, und diese Konfigurationen können einen Standardwert haben, das heißt, wenn wir die ursprüngliche Konfiguration nicht aktiv überschreiben , wird der Standardwert wirksam, was in vielen Situationen sehr nützlich ist.
Darüber hinaus ermöglichen die ConfigurationProperties des Starters auch die Zusammenfassung aller Konfigurationseigenschaften in einer Datei (normalerweise application.properties im Ressourcenverzeichnis), sodass wir uns von der XML-Hölle im Spring-Projekt verabschieden.
Die Gesamtlogik des Starters ist so stark wie Dubbo. Natürlich wird auch ein eigener Starter erstellt, um der Popularität von Spring Boot gerecht zu werden.
Hier verwenden wir die neuere Version von Dubbo. Die pom.xml führt Folgendes ein:
<!-- 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-Konfiguration:
## 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
Fügen Sie der Startup-Klasse die folgende Anmerkung hinzu :
@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("支付项目启动 "); } }
Relevante exponierte Schnittstellenimplementierungskonfiguration:
import org.springframework.stereotype.Component; import com.alibaba.dubbo.config.annotation.Service; @Service @Component public class AliPayServiceImpl implements IAliPayService { //省略代码 }
Starten Sie schließlich den Dienst. Wenn der Start erfolgreich ist und im Registrierungscenter registriert ist, ist die Transformation erfolgreich.
Ergänzung
Dubbo 2.6.1 ist die erste Version, die nach der Änderung der Struktur veröffentlicht wurde. Dubbo 2.6.0 hat den von Dangdang.com bereitgestellten Dubbox-Zweig zusammengeführt.
Dubbos Versionsstrategie: Zwei Hauptversionen werden parallel entwickelt, 2.5.x ist eine stabile Version und 2.6.x ist eine experimentelle Version mit neuen Funktionen. Nachdem die Experimente mit 2.6 stabil sind, wird es auf 2.5 migriert.
Zusammenfassung
Original Dangdang Dubbox 2.8.4 ersetzt durch Dubbo 2.6.2
Original Die spring-context-dubbo.xml-Konfiguration wird durch dubbo-spring-boot-starter 2.0.0 ersetzt
Der ursprüngliche zkclient 0.6 wird durch curator-recipes 4.0.1
ersetztUrsprünglicher Zookeeper 3.4.6 auf Zookeeper 3.5.3 aktualisiert
Das obige ist der detaillierte Inhalt vonEinführung in die Integration verteilter Dubbo-Dienste in die SpringBoot-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!