<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Apace dubbo學習筆記(一)

          共 4520字,需瀏覽 10分鐘

           ·

          2021-10-16 21:28



          Dubbo是阿里巴巴開發(fā)的一個開源的高性能、高可用、可擴展的分布式RPC調(diào)用框架,致力于提供高性能和透明化的 RPC 遠程調(diào)用服務解決方案。作為阿里巴巴 SOA 服務化治理方案的核心框架,目前已進入 Apache 孵化器項目。在單體應用時,不同業(yè)務模塊部署在同一個JVM 進程內(nèi),這時通過本地調(diào)用就可以解決不同業(yè)務模塊之間的相互引用;但在多體應用時,不同業(yè)務模塊大多部署到不同的機器上,這時一個高效、穩(wěn)定的RPC框架就顯得特別重要了。Apache Dubbo 作為阿里巴巴開源的分布式RPC 框架,在進入Apache 孵化器項目后現(xiàn)已畢業(yè)。就目前來說Dubbo是java這塊做分布式服務的流行方式。加之dubbo在云原生方面的探索都是我們作為java開發(fā)者應該且必須掌握的一門編程技術(shù)。就目前來說java的rpc框架包括hession都沒有像dubbo這樣支持負載均衡的功能。我們知道rpc調(diào)用其實相比http這種的各種json轉(zhuǎn)化方便很多,而且不用關(guān)注類似鑒權(quán)等一些操作,個人覺得或許不是最好的解決方案。諸如此,作者計劃學習一下dubbo,而本次學習本著深入了解的思路,盡量發(fā)掘dubbo的的設計方式,作為學習的開始,我們還是從demo開始吧。

          1.創(chuàng)建父工程,其pom.xml為


           <properties>        <maven.compiler.source>8maven.compiler.source>        <maven.compiler.target>8maven.compiler.target>        <my.version>2.7.6my.version>        <api.version>1.0api.version>        <web.version>2.3.3.RELEASEweb.version>        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>    properties>
          <dependencyManagement> <dependencies>
          <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> <version>${web.version}version> dependency>
          <dependency> <groupId>org.apache.dubbogroupId> <artifactId>dubbo-spring-boot-starterartifactId> <version>${my.version}version> dependency>
          <dependency> <groupId>org.apache.dubbogroupId> <artifactId>dubbo-dependencies-zookeeperartifactId> <type>pomtype> <version>${my.version}version> dependency>
          <dependency> <groupId>com.scaffold.learngroupId> <artifactId>my-apiartifactId> <version>${api.version}version> dependency>

          dependencies> dependencyManagement>

          ? ? ? ? ? ? ? ?

          2.創(chuàng)建my-api項目。


          public class Entity implements Serializable {

          private String name;

          private int age;

          public String getName() { return name; }

          public void setName(String name) { this.name = name; }

          public int getAge() { return age; }

          public void setAge(int age) { this.age = age; }

          @Override public String toString() { return "Entity{" + "name='" + name + '\'' + ", age=" + age + '}'; }}

          創(chuàng)建rpc接口


          public interface ShowApi {

          Entity show(String name, int age);}


          創(chuàng)建服務提供者

          主要的pom.xml

                                  org.springframework.boot            spring-boot-starter-web            2.3.3.RELEASE        
          org.apache.dubbo dubbo-spring-boot-starter
          org.apache.dubbo dubbo-dependencies-zookeeper pom
          com.scaffold.learn my-api

          服務提供者實現(xiàn)接口



          import com.scaffold.learn.api.ShowApi;import com.scaffold.learn.api.entity.Entity;import org.apache.dubbo.config.annotation.Service;

          @Servicepublic class ShowProvider implements ShowApi { @Override public Entity show(String name, int age) { System.out.println("request\tname="+name+"\tage="+age); Entity entity=new Entity(); entity.setName("dubbo-"+name); entity.setAge(age+1); return entity; }}

          啟動函數(shù)


          @SpringBootApplicationpublic class ProviderService {

          public static void main(String[] args) {

          SpringApplication.run(ProviderService.class,args); }}

          相關(guān)配置文件


          server.port=8333dubbo.scan.base-packages=com.scaffold.learn.providerdubbo.application.name=dubbo-providerdubbo.protocol.name=dubbo## Random portdubbo.protocol.port=-1## Dubbo Registrydubbo.registry.address=zookeeper://127.0.0.1:2181


          3.服務消費者pom.xml文件? ? ? ?

                                  org.springframework.boot            spring-boot-starter-web            2.3.3.RELEASE        
          org.apache.dubbo dubbo-spring-boot-starter
          org.apache.dubbo dubbo-dependencies-zookeeper pom
          com.scaffold.learn my-api

          對外接口:


          @RestControllerpublic class Api {

          @Reference private ShowApi showApi;

          @GetMapping(value = "/test") public String testDubbo(){ Entity entity = showApi.show("tianjingle",1); System.out.println(entity.toString()); return entity.toString(); }}


          啟動函數(shù)


          @SpringBootApplicationpublic class ConsumerService {

          public static void main(String[] args) { SpringApplication.run(ConsumerService.class,args); }}

          配置文件


          server.port=8334

          spring.application.name=consumer#dubbo.scan.base-packages=com.scaffold.learn.consumerembedded.zookeeper.port=2181## Dubbo Registrydubbo.registry.address= zookeeper://127.0.0.1:${embedded.zookeeper.port}


          4.啟動zookeeper

          5.啟動服務提供者和消費者

          在瀏覽器訪問服務消費者接口

          http://localhost:8334/test


          以上demo我們采用apache dubbo來整合springboot,整個過程比較簡單,要注意的是我們僅僅在配置文件中配置了dubbo的相關(guān)配置,項目就成功啟動了。而在spirngboot中類似這種的自動化的配置,其實依靠的spring.factories這個文件,我們大概找一下就在這里,也就是說dubbo-spring-boot這個包自動的將我們需要暴露的rpc接口和rpc接口的依賴暴露或者注入進來,同時dubbo對于自動化配置解析也是這塊做的。

          我們學習dubbo本質(zhì)上是為了更好的工作,了解dubbo中的一些特點和預留接口或許能夠讓解決很多未來潛在的業(yè)務難題,本次文章分享到這里。
          午安~

          瀏覽 73
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费手机av | 美女操B视频 | 女人18片毛片60分钟免费 | 操逼男人的天堂 | 一二三区|