Bu eğitimde, bir Apache Dubbo uygulaması için Microservices Engine (MSE) üzerinde bir hizmet kayıt defteri oluşturur ve bunu hizmet kaydı ile keşfi için kullanırsınız. İşlem sonunda, yerel makinenizde çalışan bir Dubbo tüketicisi, MSE Nacos kayıt defteri aracılığıyla keşfettiği bir sağlayıcıyı çağırır.
Mimari
Örnek uygulama, bir sağlayıcı ve bir tüketiciden oluşan bir Dubbo mikroservis uygulamasıdır. Bu iki rolü yerel makinenizde iki ayrı Maven projesi olarak geliştirirsiniz; her ikisi de genel uç noktası üzerinden MSE'deki aynı kayıt defteri örneğine bağlanır.
Sağlayıcı projesi —
com.alibaba.mse.IHelloServicearabirimini 28082 bağlantı noktasında bir Dubbo hizmeti olarak sunar ve hizmeti MSE'deki kayıt defteri örneğine kaydeder.Tüketici projesi — Aynı kayıt defteri örneği üzerinden
com.alibaba.mse.IHelloServicehizmetine abone olur ve sağlayıcıyı çağırır.MSE'deki kayıt defteri örneği — Sağlayıcının kaydolduğu ve tüketicinin abone olduğu hizmet kayıt defteri olarak işlev görür.
Kayıt defteri türleri
MSE, bir Dubbo uygulaması için Nacos, ZooKeeper veya Eureka hizmet kayıt defterini barındırabilir. Bu eğitimde MSE Nacos kullanılır ve bu konudaki tüm yapılandırma örnekleri bir MSE Nacos örneğini hedefler.
Nacos (bu eğitimde kullanılır) — Dubbo kayıt defteri adresini MSE Nacos örneğinizin genel uç noktasına ayarlayın. Başka bir kayıt defterine özel yapılandırmaya gerek yoktur.
ZooKeeper — Hizmet kayıt defteri olarak MSE ZooKeeper kullanıyorsanız, 2. Adımdaki kayıt defteri kodunu ZooKeeper için uygun kodla değiştirin. Daha fazla bilgi için bkz. Kullanım notları.
Ön koşullar
Maven dosyasını indirin ve ortam değişkenlerini ayarlayın.
Yerel makinenizde IntelliJ IDEA veya Eclipse gibi bir IDE yüklüdür.
Bir MSE Nacos örneğiniz vardır. Talimatlar için bkz. Nacos motor örneği oluşturma
Ad alanı oluşturma. Bu eğitimde varsayılan ad alanı olan
Publickullanılır.
1. Adım: Sağlayıcı projesini oluşturun ve hizmeti tanımlayın
Bu adımda, sağlayıcı için Maven projesini oluşturur ve sağlayıcının sunduğu hizmeti tanımlarsınız. Dubbo'da tüm hizmetler arabirim olarak sunulur.
IDE'nizde sağlayıcı için bir Maven projesi oluşturun.
-
pom.xmldosyasınadubbovenacos-clientbağımlılıklarını ekleyin.<dependencies> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.9</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.4.2</version> </dependency> </dependencies> src/main/javadizinindecom.alibaba.mseadlı bir paket oluşturun.-
com.alibaba.msepaketi içinde birsayHelloyöntemi içerenIHelloServiceadlı bir arabirim oluşturun.package com.alibaba.mse; public interface IHelloService { String sayHello(String str); } -
com.alibaba.msepaketi içinde arabirimi uygulayanIHelloServiceImpladlı bir sınıf oluşturun.package com.alibaba.mse; public class IHelloServiceImpl implements IHelloService { public String sayHello(String str) { return "hello " + str; } }
2. Adım: Kayıt defteri olarak MSE Nacos'u kullanmak üzere sağlayıcıyı yapılandırın
Bu adımda, IHelloService hizmetini bir Dubbo hizmeti olarak sunan ve sağlayıcıyı MSE Nacos örneğine yönlendiren provider.xml dosyasını oluşturursunuz. Kayıt defteri yapılandırması bu bilgiyi gerektirdiğinden öncelikle örneğin uç noktasını alın.
MSE konsolu üzerinde oturum açın ve MSE üzerinde oluşturduğunuz Nacos örneğinin genel uç noktasını görüntüleyin. Genel uç nokta, örnek listesinin Access Method sütununda gösterilir ve
mse.XX.nacos.mse.aliyuncs.combiçimindedir.Sağlayıcı projesinin
src/main/resourcesdizinindeprovider.xmladlı bir dosya oluşturun.-
Aşağıdaki yapılandırmayı
provider.xmldosyasına ekleyin.mse.XX.nacos.mse.aliyuncs.comdeğerini Nacos örneğinizin genel uç noktasıyla değiştirin.<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <dubbo:application name="demo-provider"/> <dubbo:protocol name="dubbo" port="28082"/> <dubbo:service interface="com.alibaba.mse.IHelloService" ref="helloService"/> <bean id="helloService" class="com.alibaba.mse.IHelloServiceImpl"/> <dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" /> </beans>
Aşağıdaki tabloda provider.xml dosyasındaki yapılandırma açıklanmaktadır.
| Öğe | Açıklama |
xmlns, xmlns:xsi, xmlns:dubbo ve xsi:schemaLocation |
Spring XML Ad Alanı (xmlns), XML Şema Örneği (xmlns:xsi), Dubbo Ad Alanı (xmlns:dubbo) ve Şema Örneğini (xsi:schemaLocation) bildirir. |
dubbo:application |
Sağlayıcı uygulamasının adı. Bu örnekte demo-provider kullanılır. |
dubbo:protocol |
Hizmeti 28082 bağlantı noktasında dubbo protokolü üzerinden yayınlar. |
dubbo:service ve bean |
IHelloService arabirimini ve IHelloServiceImpl uygulama sınıfını bir Dubbo hizmeti olarak sunar. |
dubbo:registry |
MSE üzerinde oluşturduğunuz Nacos örneğini hizmet kayıt defteri olarak belirtir. Adres, örneğin genel uç noktasıdır. |
3. Adım: Sağlayıcının MSE örneğine erişmesine izin verin
Sağlayıcı, MSE örneğinin genel uç noktası üzerinden kayıt defterine ulaşır; bu nedenle örneğin izin listesi trafiğe izin vermelidir. Sağlayıcıyı başlatmadan önce bu adımı tamamlayın. Aksi takdirde kayıt işlemi başarısız olur.
MSE konsolunda sol gezinme bölmesinden seçeneğini belirleyin. Instances sayfasında oluşturduğunuz MSE örneğini tıklayın.
Örneğin izin listesini temizleyin. Herhangi bir IP adresi veya alt ağ maskesi belirtmezseniz tüm adresler örneğe erişebilir. Bu eğitimde boş bir izin listesi örnek olarak kullanılır. Daha fazla bilgi için bkz. İzin listesi ayarlama.
Boş bir izin listesi, tüm adreslerin MSE örneğine erişmesine olanak tanır.
4. Adım: Sağlayıcıyı başlatın ve kaydı doğrulayın
Bu adımda sağlayıcıyı başlatır ve MSE konsolunda hizmetin Nacos örneğine kaydedildiğini onaylarsınız.
-
com.alibaba.msepaketi içindeProvideradlı bir sınıf oluşturun.Providersınıfınınmainyönteminde Spring bağlamını yüklemek ve yapılandırdığınız Dubbo hizmetini sunmak için aşağıdaki kodu kullanın.package com.alibaba.mse; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Provider { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"provider.xml"}); context.start(); System.in.read(); } } Hizmeti başlatmak için
Providersınıfınınmainyöntemini çalıştırın. Tüketici bu işlemi çağırdığından eğitimi tamamladığınız ana kadar işlemi çalışır durumda tutun.MSE konsolunda MSE örneğinizin ayrıntılar sayfasında sol gezinme bölmesinden seçeneğini belirleyin.
Hizmet listesinde
demo-provideruygulamasının sunduğucom.alibaba.mse.IHelloServicearabirimini doğrulayın.
Arabirim hizmet listesinde görünmeden sonraki adıma geçmeyin. Arabirim görünmüyorsa aşağıdaki yapılandırmaları kontrol edin:
İzin listesi — MSE örneğinin izin listesi yerel makinenizin adresine izin verir. Boş bir izin listesi tüm adreslere izin verir.
Kayıt defteri adresi —
provider.xmldosyasındakidubbo:registryadresimse.XX.nacos.mse.aliyuncs.comyer tutucusu yerine örneğinizin genel uç noktasını kullanır.Kayıt defteri türü —
dubbo:registryadresi, oluşturduğunuz örnek türünün şemasını kullanır (örneğin, bir MSE Nacos örneği içinnacos://).
5. Adım: Tüketiciyi oluşturun ve hizmete abone olun
Bu adımda tüketici için ikinci bir Maven projesi oluşturur, aynı MSE Nacos örneği üzerinden com.alibaba.mse.IHelloService hizmetine abone olur ve sağlayıcıyı çağıran sınıfı uygularsınız.
IDE'nizde tüketici için ikinci bir Maven projesi oluşturun.
Tüketici projesinin
pom.xmldosyasınadubbovenacos-clientbağımlılıklarını ekleyin. Bağımlılıklar, 1. Adımdaki sağlayıcı projesiyle aynıdır.src/main/javadizinindecom.alibaba.msepaketini oluşturun ve 1. Adımda tanımladığınızIHelloServicearabirimini ekleyin. Tüketici hizmete arabirimi üzerinden başvurduğu için bu arabirim tüketici projesinin sınıf yolunda bulunmalıdır.-
Tüketici projesinin
src/main/resourcesdizinindeconsumer.xmladlı bir dosya oluşturun.mse.XX.nacos.mse.aliyuncs.comdeğerini,provider.xmldosyasında yapılandırdığınız uç nokta ile aynı olan Nacos örneğinizin genel uç noktasıyla değiştirin.<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <dubbo:application name="demo-consumer"/> <dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" /> <dubbo:reference id="helloService" interface="com.alibaba.mse.IHelloService"/> </beans>dubbo:registryöğesi tüketiciyi sağlayıcıyla aynı kayıt defterine yönlendirir vedubbo:referenceöğesi sağlayıcının sunduğucom.alibaba.mse.IHelloServicearabirimine abone olur. -
com.alibaba.msepaketi içindeConsumeradlı bir sınıf oluşturun.Consumersınıfınınmainyönteminde Spring bağlamını yüklemek ve abone olunan hizmetinsayHelloyöntemini çağırmak için aşağıdaki kodu kullanın.package com.alibaba.mse; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Consumer { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"consumer.xml"}); context.start(); IHelloService helloService = (IHelloService) context.getBean("helloService"); System.out.println(helloService.sayHello("mse")); } }
6. Adım: Tüketiciden sağlayıcıya yapılan çağrıyı doğrulayın
Bu adımda tüketicinin sağlayıcıyı MSE Nacos kayıt defteri üzerinden keşfettiğini ve sayHello yönteminin yanıtını aldığını onaylarsınız. Tüketici bağımsız değişken olarak mse değerini iletir ve IHelloServiceImpl bu bağımsız değişkenin önüne hello ekleyerek döndürür.
Adımda başlattığınız sağlayıcı işleminin hala çalıştığını onaylayın.
Consumersınıfınınmainyöntemini çalıştırın.-
Tüketici projesinin konsol çıktısını kontrol edin. Aşağıdaki çıktı, tüketicinin sağlayıcıyı başarıyla çağırdığını gösterir:
hello mse
Çağrı başarısız olursa veya hiçbir çıktı döndürülmezse aşağıdaki yapılandırmaları kontrol edin:
Sağlayıcı kullanılabilirliği — Sağlayıcı işlemi çalışıyor ve
com.alibaba.mse.IHelloServiceMSE örneğinin hizmet listesinde görünüyor.Kayıt defteri adresi —
consumer.xmldosyasındakidubbo:registryadresi,provider.xmldosyasında yapılandırdığınız genel uç noktadır.Arabirim adı —
consumer.xmldosyasınındubbo:referenceöğesindeki arabirim,provider.xmldosyasınındubbo:serviceöğesindekicom.alibaba.mse.IHelloServicearabirimiyle eşleşir.İzin listesi — MSE örneğinin izin listesi yerel makinenizin adresine izin verir.