Açık kaynak Çin OSC başlık numarasını takip edin ve en son teknik bilgileri alın
Önsöz
Bu yılın başında, Alibaba'nın açık kaynaklı yüksek performanslı hizmet çerçevesi dubbo yeni bir güncelleme turu başlattı ve Apache kuluçka makinesine katıldı. Orijinal projede bahar bulutu kullanıldıktan sonra dubbo daha az kullanıldı. Şu anda, orijinal endüstri uygulama departmanına geri aktarılmıştır ve ayrıca servis çağrıları için dubbo kullanabilir. Öğrenmek için ders kitabı yazma fırsatından yararlanın. Ve şimdi Dubbo ayrıca bir springboot başlangıç projesi başlattı SpringBoot'un yardımıyla entegrasyon çok rahat, temelde bağımlı paketlerin giriş problemi. Saçma sapan konuşmayı bırak, başlayalım ~
Biraz bilgi
Dubbo ile iletişim halinde olmayan öğrenciler için öncelikle ilgili bilgileri anlayabilirsiniz.
Dubbo'ya Giriş
Dubbo, Alibaba'nın açık kaynaklı, yüksek performanslı bir hizmet çerçevesidir.Yüksek performanslı ve şeffaf RPC uzaktan servis çağırma çözümleri ve SOA servis yönetişimi çözümleri sunmayı taahhüt eder, böylece uygulamaların hizmet çıktı ve giriş işlevlerini ve Spring'i yüksek performanslı RPC aracılığıyla gerçekleştirebilir. Çerçeve sorunsuz bir şekilde bütünleşir. Dubbo üç temel bölümden oluşur: uzaktan iletişim, küme hatası toleransı ve otomatik keşif.
Yerel yöntemler gibi uzak yöntemlerin çağrılmasını gerçekleştiren şeffaf uzaktan yöntem çağrısı sağlar ve herhangi bir API saldırısı olmadan yalnızca basit yapılandırmaya ihtiyaç duyar. Aynı zamanda intranette F5 gibi donanım yük dengeleyicilerin yerini alabilen, maliyetleri düşüren ve tek noktaları azaltan soft bir yük dengeleme ve hata tolerans mekanizmasına sahiptir. Otomatik servis kaydı ve keşfi gerçekleştirebilir, servis sağlayıcının adresini yazmaya gerek yoktur, kayıt merkezi, arayüz adına göre servis sağlayıcının IP adresini sorgular ve servis sağlayıcıları sorunsuz bir şekilde ekleyebilir veya silebilir.
2011 yılının sonunda Alibaba, GitHub'da Java tabanlı dağıtılmış hizmet yönetişim çerçevesi Dubbo'yu açtı ve daha sonra Çin'de bu tür bir açık kaynak projesinin lideri oldu ve birçok geliştirici kendi iyiliklerini dile getirdi. Aynı zamanda pek çok firma uygulamada Dubbo'ya dayalı dağıtık sistem mimarisi uygulamıştır. Şu anda GitHub'da çatal ve yıldız sayısı 10.000'i aştı.
Dubbo temel işlevleri :
Dubbo mimarisi
Dağıtım aşaması
İşletme aşaması
Çağrı ilişkisi açıklaması
Dubbo özellikleri
Dubbo mimarisi, gelecekteki mimariye bağlanabilirlik, sağlamlık, ölçeklenebilirlik ve yükseltilebilirlik gibi aşağıdaki özelliklere sahiptir.
Bağlantı
Sağlamlık
Ölçeklenebilirlik
Yükseltilebilirlik
Hizmet kümelerinin ölçeği daha da genişletildiğinde ve BT yönetişim yapısı daha da yükseltildiğinde, dinamik dağıtım ve mobil bilgi işlem gerekir Mevcut dağıtılmış hizmet mimarisi direnç getirmeyecektir. Aşağıdaki şekil, gelecekte olası bir mimaridir:
Düğüm rolü açıklaması
Düğüm rolü açıklaması Dağıtıcının yerel aracı Depo deposu, hizmeti otomatik olarak dağıtır, hizmet uygulaması sürüm paketini depolamak için kullanılır. Zamanlayıcı dağıtım merkezi, hizmet sağlayıcısını otomatik olarak artırır veya azaltır Yönetici birleşik yönetim konsolu Kayıt hizmeti kaydı ve erişim basıncına dayalı keşif. Ve çağrı süresi izleme merkezi
Resmi web sitesi belgesini ziyaret edebilirsiniz: burada ayrıntılı talimatlar ve kullanım talimatları bulunmaktadır. Burada ayrıntıya girmeyeceğim.
Dubbo entegrasyonu ve kullanımı
Resmi kuluçka makinesi-dubbo-yay-önyükleme projesi projesine dayanarak, SpringBoot'a entegrasyon çok basittir.
Not: Bu seri açıklama için hala 1.5.x sürümünü kullandığından, kullanılan sürüm 0.1.x'tir. SpringBoot 2.x kullanıyorsanız, 0.2.x sürümünü kullanabilirsiniz.
Kolaylık sağlamak için, yaylı önyükleme-dubbo-api adlı bir arayüz projesi doğrudan burada oluşturulur.
IHelloService.java
/ ** * Bir arayüz tanımlayın * @author oKong * * / genel arayüz IHelloService { Dize merhaba (Dize adı); }Servis sağlayıcıları
Spring-boot-dubbo-provider projesi oluşturun. 0. Pom bağımlılığını tanıtın.
< ! - API'yi tanıtın - > < bağımlılık > < Grup kimliği > cn.lqdev.learning < /Grup kimliği > < artifactId > Spring-boot-dubbo-api < / artifactId > < versiyon > 0.0.1-SNAPSHOT < / version > < /bağımlılık > < ! - Dubbo bağımlılığını tanıtın - > < bağımlılık > < Grup kimliği > com.alibaba.boot < /Grup kimliği > < artifactId > dubbo-yaylı-başlatıcı < / artifactId > < versiyon > 0.1.1 < / version > < /bağımlılık > < ! - Redis'i kayıt merkezi olarak tanıtın - > < bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-data-redis < / artifactId > < /bağımlılık >Not: Redis, doğrudan kayıt merkezi olarak kullanılır. Varsayılan zookeeper'dır.
1. Arayüz uygulama sınıfını yazın. HelloServiceImpl.java
/ ** * Bir hizmet uygulama sınıfı tanımlayın * @author oKong * * / // Burada böyle bir @ hizmetin dubbo olduğunu unutmayın @Hizmet( version = "$ {demo.service.version}", // Sürüm application = "$ {dubbo.application.id}", // uygulama kimliği protokol = "$ {dubbo.protocol.id}", // protokol kimliği kayıt = "$ {dubbo.registry.id}") // Kayıt merkezi kimliği @Filmdenkare public class HelloServiceImpl, IHelloService { @Override public String hello (Dize adı) { log.info ("dubbo sağlayıcı, parametre adı: {}", ad); return "merhaba" + isim + ", bu bir dubbo sağlayıcısıdır!"; } }Açıklama: @Service, arabirim sürümü, protokol kimliği ve kayıt kimliği gibi temel bilgileri belirten com.alibaba.dubbo.config.annotation.Service paket yolu altındaki ek açıklama sınıfıdır. Burada sürüm numarasının hala yararlı olduğuna dikkat edin, çünkü bir arabirimin birden çok sürümünün bir arada bulunması sorunu olacaktır, bu nedenle sürüm bilgisi genellikle ayarlanır. 2. Yapılandırma dosyası bilgilerini ayarlayın, kayıt türü, adres vb. Gibi dubbo ile ilgili bilgileri ekleyin.
# Kolay tanımlama için uygulama adı dubbo.application.id = spring-boot-dubbo-provider dubbo.application.name = spring-boot-dubbo-provider server.port = 8686 # Sürümü ayarla demo.service.version = 1.0.0 #Protocol isteğe bağlı dubbo redis, http, tasarruf vb. dubbo.protocol.id = dubbo dubbo.protocol.name = dubbo dubbo.protocol.port = 20880 #Servis ve @Reference vb. Açıklamalı tarama yolunu ayarlayın. dubbo.scan.basePackages = cn.lqdev.learning.springboot.dubbo.provider.service # Kayıt merkezi yapılandırması dubbo.registry.id = okong-kayıt defteri #REGISTRATION CENTER TYPE Burada kayıt defteri olarak redis kullanın # zookeeper: //127.0.0.1: 2181 dubbo.registry.address = redis: //127.0.0.1: 6379 # Varsa kullanıcı adı ve şifreyi ayarlayın # dubbo.registry.username = oKong # dubbo.registry.password = oKong # Redis parametrelerini ayarlayın # Bağlantı havuzundaki en büyük ücretsiz bağlantı dubbo.registry.parameters.max.idle = 8 # Bağlantı havuzundaki maksimum bağlantı sayısı (sınır olmadığını belirtmek için negatif bir değer kullanın) dubbo.registry.parameters.max-active = 8 # Bağlantı havuzunun maksimum engelleme bekleme süresi (sınır olmadığını belirtmek için negatif bir değer kullanın) dubbo.registry.parameters.max-wait = -1 # Bağlantı havuzundaki en büyük ücretsiz bağlantı dubbo.registry.parameters.max-boşta = 8 # Bağlantı havuzundaki en küçük boşta bağlantı dubbo.registry.parameters.min-boşta = 0Not: Kolaylık sağlamak için Redis, doğrudan kayıt defteri olarak kullanılır. Redis bağlantısıyla ilgili yapılandırma parametreleri için, bunları dubbo.registry.parameters.xxx biçiminde ayarlayabilirsiniz Parametreler bir Map nesnesi olduğundan, eklenen anahtar büyük / küçük harfe dönüştürülmez. Belirli kayıt defteri yapılandırma nesneleri için com.alibaba.dubbo.config.RegistryConfig sınıfını görüntüleyebilirsiniz. Redis ile ilgili parametre yapılandırması için com.alibaba.dubbo.registry.redis.RedisRegistry sınıfını kontrol edebilirsiniz.
Diğer kayıt merkezleri benzerdir.Gerekli kayıt merkezi konfigürasyon sınıflarını com.alibaba.dubbo.registry paketinde bulabilirsiniz.
3. Sınıfta yazmaya başlayın.
DubboProviderApplication.java
/ ** * dubbo sağlayıcı * @author oKong * * / @SpringBootApplication @Filmdenkare public class DubboProviderApplication { public static void main (String argümanları) Exception {atar // Dubbo sağlayıcısı yalnızca hizmet sağladığından, web dışı bir ortam olabilir yeni SpringApplicationBuilder (DubboProviderApplication.class) .web (false) .run (değiştirgeler); log.info ("ilkbahar-önyükleme-dubbo-sağlayıcı başlat!"); } }4. Uygulamayı başlatın, redis servisine erişebilir ve servis listesi bilgilerini görebilirsiniz.
Hizmet tüketicisi
Spring-boot-dubbo-tüketici projesini oluşturun. 0. Pom bağımlılığını tanıtın
< ! - API'yi tanıtın - > < bağımlılık > < Grup kimliği > cn.lqdev.learning < /Grup kimliği > < artifactId > Spring-boot-dubbo-api < / artifactId > < versiyon > 0.0.1-SNAPSHOT < / version > < /bağımlılık > < ! - Dubbo bağımlılığını tanıtın - > < bağımlılık > < Grup kimliği > com.alibaba.boot < /Grup kimliği > < artifactId > dubbo-yaylı-başlatıcı < / artifactId > < versiyon > 0.1.1 < / version > < /bağımlılık > < ! - Redis'i kayıt merkezi olarak tanıtın - > < bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-data-redis < / artifactId > < /bağımlılık > < bağımlılık > < Grup kimliği > org.springframework.boot < /Grup kimliği > < artifactId > Spring-boot-starter-web < / artifactId > < /bağımlılık >1. Kayıt merkezi ve hizmet sürümüyle ilgili bilgileri yapılandırma dosyasına ekleyin
# Kolay tanımlama için uygulama adı dubbo.application.id = ilkbahar-önyükleme-dubbo-tüketici dubbo.application.name = ilkbahar-önyükleme-dubbo-tüketici server.port = 9696 #Servis ve @Reference vb. Açıklamalı tarama yolunu ayarlayın. dubbo.scan.basePackages = cn.lqdev.learning.springboot.dubbo.consumer # Kayıt merkezi yapılandırması dubbo.registry.id = okong-kayıt defteri #REGISTRATION CENTER TYPE Burada kayıt defteri olarak redis kullanın # zookeeper: //127.0.0.1: 2181 dubbo.registry.address = redis: //127.0.0.1: 6379 # Varsa kullanıcı adı ve şifreyi ayarlayın # dubbo.registry.username = oKong # dubbo.registry.password = oKong # Redis parametrelerini ayarlayın # Bağlantı havuzundaki en büyük ücretsiz bağlantı dubbo.registry.parameters.max.idle = 8 # Bağlantı havuzundaki maksimum bağlantı sayısı (sınır olmadığını belirtmek için negatif bir değer kullanın) dubbo.registry.parameters.max-active = 8 # Bağlantı havuzunun maksimum engelleme bekleme süresi (sınır olmadığını belirtmek için negatif bir değer kullanın) dubbo.registry.parameters.max-wait = -1 # Bağlantı havuzundaki en büyük ücretsiz bağlantı dubbo.registry.parameters.max-boşta = 8 # Bağlantı havuzundaki en küçük boşta bağlantı dubbo.registry.parameters.min-boşta = 02. Sınıf yazmaya başlayın
DubboConsumerApplication.java
/ ** * dubbo-tüketici örneği * @author oKong * * / @SpringBootApplication @Filmdenkare public class DubboConsumerApplication { public static void main (String argümanları) Exception {atar SpringApplication.run (DubboConsumerApplication.class, args); log.info ("ilkbahar-önyükleme-dubbo-tüketici başlangıcı!"); } }3. Servis çağrıları yapmak için bir restapi arayüz servisi yazın.
/ ** * Çağrı örneği * @author oKong * * / @Fotomac @Filmdenkare public class DemoController { / ** * Referans olarak beyan etmek aslında bir fasulye sınıfı belirlemektir, * Orijinal xml yapılandırmasını yorumlarla değiştirin * < dubbo: reference id = "xxxService" interface = "com.xxx.XxxService" / > * / @Reference (version = "1.0.0") IHelloService merhabaService; @GetMapping ("/ merhaba") public String hello (Dize adı) { log.info ("Çağrı sağlayıcı hizmeti, parametre adı: {}", ad); helloService.hello (ad) döndür; } }4. Uygulamayı başlatın ve şu adresi ziyaret edin: servis çağrısının başarılı olduğunu görebilirsiniz.
Arka planı izleme
Resmi izleme, varsayılan olarak zookeeper'ı destekler. Resmi belge ayrıca, redis köprü uygulamasının yalnızca açık kaynak sürümü için sağlandığını ve güvenilirliğinin Redis'in kendisinin güvenilirliğine bağlı olduğunu söyledi. Zookeeper kullanmanızı öneririm ve redis önbellek olarak kullanılmalıdır.
İstasyon adresini izleme: https://github.com/apache/incubator-dubbo-ops Derlemek ve çalıştırmak için talimatları kendiniz kurabilirsiniz.
Yeni izleme arayüzü:
Apache kuluçka makinesine katıldıktan sonra arayüz İngilizcedir. . . Orijinalinde hala rahat görünüyor!
Referans
sonuç olarak
Bu bölüm esas olarak dubbo'nun entegrasyonunu ve basit kullanımını tanıtmaktadır. Spesifik ve diğer kullanımlar aslında öncekiyle aynıdır ve hiçbir fark yoktur. Yine de resmi belgeleri kontrol etmenizi öneririm revizyondan sonra içerik çok daha zengin ve çok fazla kuru mal var, kontrol etmeniz önerilir. Bu nihayet Çince versiyonu. Okumaktan zarar gelmez,
Blog Yazarı: oKong
Günlük blog sütunu, her gün sizin için mükemmel blog yazarlarından yüksek kaliteli teknik makaleler önerir. Aynı zamanda, kullanıcılar katkıda bulunabilirler.Makale resmi hesaba dahil edildikten sonra, web sitesinin ana sayfasında önereceğiz. Dikkat Açık kaynak Çin OSC Her gün yüksek kaliteli itin, tıklayın " daha fazlasını anla "Orijinal makaleyi okuyun.