日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

(Java每日一谈:第四日——幸福的四象限)主流框架:Dubbo基础实战篇--Dubbo快速入门

發布時間:2024/3/12 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (Java每日一谈:第四日——幸福的四象限)主流框架:Dubbo基础实战篇--Dubbo快速入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在昨天的Dubbo基礎篇中,小編對Dubbo的相關基礎理論知識進行了一個詳細的解釋,如果大家對這一塊的知識感到好奇,推薦大家可以去閱讀一下小編昨天寫的Dubbo相關知識點,今天小編會進行Dubbo實用技術的講解,在之前的文章中,小編也說過自己的關于這一塊的知識會從基礎理論向實用技術這樣的一個延伸,今天所涉及到的就是Dubbo實用熱身這樣的一個知識模塊,對于昨天的基礎理論知識大家可以查看我的另外一篇嘔心瀝血文章,是這一篇文章的前篇。

(Java每日一談:第三日——人類生活的無法回避的三個問題)主流框架:Dubbo基礎篇--分布式系統中的相關概念

首先、什么是Dubbo呢?Dubbo是阿里巴巴公司開源的一個高性能、輕量級的Java PRC框架,致力于提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案,這意味著,使用Dubbo開發的微服務,將具備相互之間的遠程發現與通信能力,同時利用Dubbo提供的豐富服務治理能力,可以實現諸如服務發現、負載均衡、流量調度等服務治理訴求。同時Dubbo是高度可拓展的,用戶幾乎可以在任意功能點去定制自己的實現,以改變框架點默認行為來滿足自己的業務需求。

Dubbo快速入門

作為一個微服務架構,Dubbo sdk 跟隨著微服務組件被部署在分布式集群各個位置,為了在分布式環境下實現各個微服務組件間的通信,Dubbo定義了一些中心化的組件。

上述圖片完整地描述了Dubbo微服務組件與各個中心地交互過程

服務發現,即消費端自動發現服務地址列表的能力,是微服務框架需要具備的關鍵能力,借助于自動化的服務發現,微服務之間可以在無需感知對端部署位置與IP地址的情況下實現通信。

實現服務發現的方式有很多種,Dubbo提供的一種是Client-Based的服務發現機制,通常還需要部署額外的第三方注冊中心組件來協調服務發現過程,如常用的Nacos、Consul、Zookeeper等,Dubbo自身也提供了對多種注冊中心組件的對接,用戶可以靈活選擇。

zookeeper安裝

? ? ? ? Dubbo的官網支持很多種注冊中心,小編自己選擇使用的是zookeeper,至于zookeeper的安裝小編在這里不在詳細描述,這一塊的內容我相信大家可以從其他博主上面找到相應的知識點。

Dubbo快速入門

? ? ? ? 總體的實現步驟:

? ? ? ? ? ? ? ? 創建服務提供者Provider模塊

? ? ? ? ? ? ? ? 創建服務消費者Consumer模塊

? ? ? ? ? ? ? ? 在服務提供者模塊編寫UserServiceImpl提供服務

? ? ? ? ? ? ? ? 在服務消費者中的UserController遠程調用UserServiceImpl提供的服務

? ? ? ? ? ? ? ? 分別啟動兩個服務,測試

小編這里首先使用spring框架創建功能模塊:

第一步、新建一個空的工程項目文件

?第二步、使用maven新建兩個模塊分別是dubbo-service以及dubbo-web?

在以前的項目中,我們總是將這樣的兩個部分寫在一個模塊之中,現在我們將這樣的一個項目結構進行拆分,使其各自獨立地在一個單獨的模塊之中,使web模塊依賴與service模塊,最終成功運行,從而達到本次實驗的效果。

第三步、導入相關依賴

dubbo-web 模塊相關依賴,因為web模塊后面會打包成war包,所以在這里導入tomcat插件

<properties><spring.version>5.1.9.RELEASE</spring.version><dubbo.version>2.7.4.1</dubbo.version><zookeeper.version>4.0.0</zookeeper.version></properties><dependencies><!-- servlet3.0規范的坐標 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--spring的坐標--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><!--springmvc的坐標--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!--日志--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.21</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.21</version></dependency><!--Dubbo的起步依賴,版本2.7之后統一為rg.apache.dubb --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version></dependency><!--ZooKeeper客戶端實現 --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>${zookeeper.version}</version></dependency><!--ZooKeeper客戶端實現 --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>${zookeeper.version}</version></dependency></dependencies><build><plugins><!--tomcat插件--><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port>8000</port><path>/</path></configuration></plugin></plugins></build>

由于service模塊不需要啟動,因此service模塊導入的依賴排除上面的tomcat插件,然后進行導入即可,小編在這里就不復制,湊字數了。

第四步、接下來是service模塊里面具體內容的編寫,因為小編這里只是一個測試,所以實現類比較簡單,大家可以從這樣的一個代碼結構可以看出,小編在項目結構中加入了一個UserService接口以及它的實現類,添加了兩個配置文件分別是applicationContext.xml以及日志的配置文件,service模塊的配置就完成了

?web模塊的配置

首先、由于web模塊會被打包成war包,因此需要在pom文件中,對打包方式進行一個說明,默認是jar,大家只需要在原來的配置文件中添加一行配置信息即可

?由于原來模塊的結構不是很完整,因此小編在web模塊進行了一個結構的完善,下面是web模塊的配置文件

小編的項目結構如下:

其中涉及到幾個配置文件

特此強調,因為controller模塊會調用service模塊,因此需要在pom文件中導入service模塊的相關依賴

springmvc.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://dubbo.apache.org/schema/dubbo"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><mvc:annotation-driven/><context:component-scan base-package="com.itheima.controller"/></beans>

?web.xml文件的配置如下

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5"><!-- spring --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:spring/applicationContext*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- Springmvc --> <servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 指定加載的配置文件 ,通過參數contextConfigLocation加載--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping></web-app>

第五步、安裝service模塊,啟動web模塊

?

項目成功運行,使用spring搭建的環境成功運行,環境配置完成,現目前是一種本地的調用資源,后面小編會在目前的環境上進行一個配置,使用dubbo進行遠程調用

在小編進行下一步的操作之前,小編首先在這里問大家一個問題,小編上面的項目已經將原本的項目進行拆飛成兩個模塊,這樣的模塊結構屬于分布式嗎?答案是否定的,因為分布式要求每個項目都要獨立的對外啟動項目和提供服務,因此小編上面的項目結構從本質上來說還是一個單體架構(controller可以被訪問到,但是service卻不能),只不過通過maven的分模塊將其進行了一個拆分。

?接下來會進行模塊改造

service模塊:

? ? ? ? pom文件的改造

? ? ? ? ? ? ? ? 1、添加相關依賴

<!--Dubbo的起步依賴,版本2.7之后統一為rg.apache.dubb --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version></dependency><!--ZooKeeper客戶端實現 --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>${zookeeper.version}</version></dependency><!--ZooKeeper客戶端實現 --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>${zookeeper.version}</version></dependency>

? ? ? ? ?????????2、將service模塊的打包方式改成war包,因為需要獨立運行

? ? ? ????????? 3、添加tomcat插件

<build><plugins><!--tomcat插件--><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port>9000</port><path>/</path></configuration></plugin></plugins></build>

? ? ? ? ?實現類的改造?,大家注意一下,這里使用的service注解是dubbo提供的注解,不是spring提供的注解? ?? ? ? ? applicationContext.xml文件的配置

? ? ? ? web.xml文件的配置 ,因為現在是一個web項目,所以需要補齊相應的web項目結構,web.xml配置文件只需要spring的配置內容即可

? ? ? ? ?啟動一下service模塊,沒有報錯,項目正常啟動,dubbo-service模塊的改造就完成了

?dubbo-web模塊的配置:

? ? ? ? pom文件依賴的配置,由于現在不需要使用service本地注入,因此將service模塊的依賴進行注釋

? ? ? ? 實現類的修改,由于現在需要使用到遠程注入,不在需要使用本地注入,因此在controller層的注入不再使用@Autowired,使用dubbo的注解@Reference進行遠程注入?

? ? ? ? ?springmvc.xml的文件配置,由于上面使用的是dubbo的原創注入,因此肯定是需要配置注冊中心相關信息,和上面service模塊的配置差不多

<!--dubbo的配置--><!--1.配置項目的名稱,唯一--><dubbo:application name="dubbo-web"><dubbo:parameter key="qos.port" value="33333"/></dubbo:application><!--配置一下注冊中心的地址--><dubbo:registry address="zookeeper://10.211.55.4:2181"/><!--配置dubbo包掃描--><dubbo:annotation package="com.itheima.controller"/>

? ? ? ? web.xml文件的配置只需要留下springmvc即可

這是dubbo-web的配置,小編這里不進行測試,因為下面還有一部分內容需要進行配置,由于service模塊和web模塊都需要依賴UserService接口,因此可以將這樣的一個借口抽取成一個公共的模塊,確保各模塊的統一性,其他模塊依賴這一個公告模塊即可。

下面是公共接口模塊的抽取,比較簡單,不做演示,大家創建一個新的模塊,再將UserService接口放進這樣的一個模塊即可,添加完成之后,需要進行一個安裝

由于service和web模塊都要依賴這樣的一個公共模塊,因此分別在兩個模塊中導入公共模塊的依賴

<!--依賴公共的接口模塊--><dependency><groupId>com.itheima</groupId><artifactId>dubbo-interface</artifactId><version>1.0-SNAPSHOT</version></dependency>

最后進行這樣的一個結果測試,由于修改了回顯的內容,大家注意區分屏幕,大家測試的時候,需要分別運行service和web即可,項目成功運行

?這樣一個對于dubbo的快速入門就完成了,大家可以進行這樣的一個練習!

今天想要給大家分享的課外知識小課堂是關于幸福的話題:

? ? ? ? 關于幸福,不同的人有不同的定義,人們對幸福的主觀認同不同,所得出的結論也各不一樣,有人認為富可敵國、腰纏萬貫此乃幸福,因為少了普通人拼命為生活奮斗的努力與擔憂;有人認為萬眾矚目、受人膜拜是幸福,因為多了普通人所不曾享受的關注,但是在蕓蕓縱生中,也不乏有名利雙收者坦言不知幸福是何物,一貧如洗者面對眼前的茍且仍然面帶微笑。關于幸福,沙哈爾教授將其分成了四個象限,不同象限代表了不同的人生態度和行為模式。

第一種幸福價值取向是:“我現在很幸福,但是未來不幸福”的及時享樂型。這一種價值取向的人在現實生活中很常見,例如:愛好熬夜的人明明知道長時間的熬夜會對身體造成不可修復的損傷,但是礙于夜晚娛樂的即時滿足感和快樂感,仍然選擇黑夜的孤獨!

第二種幸福價值取向是:“我現在不幸福,將來也不會幸福”的無助型。這里面會涉及到習得性無助,意思是無助不是天生的,而是后天習得的。小編在這里列舉一個大象的例子,方便大家理解。在一只大象很小的時候,人們將其綁在一顆很粗壯的木樁上,剛開始小象會試圖掙脫約束,但是經過幾次嘗試之后,便放棄了掙扎。當它后面成長為大象,擁有足夠的力量擺脫木樁的束縛,它還是會認為自己無法擺脫,這就是習得性無助。對于習得性無助的情況,大家非常容易陷入這樣的情形并且沒有察覺,對于這樣的情況,事實上,只要你愿意學習,愿意改變,情況就會有所改善。

第三種幸福的價值取向是:“我現在不幸福,但是將來我會變的幸福”的忍辱負重型,這樣的情況也是非常常見的,拿我自己來說吧!因為小編是來自農村的家庭,父母也沒有接受過什么太好的教育,在自己的成長過程中,父母為了家庭情況的改善也是做了比較多的努力,但是家庭有一個關于非常錯誤的教育觀念就是只要我們家的孩子上了大學,家庭情況就會好轉,我再等等,我相信大部分農村家庭的是會存在這樣的思想觀念,這就是忍辱負重型的顯著體現,但是這樣的價值取向真的可以獲得幸福嗎?答案是否定的,因為人的欲望是無窮無盡的,當你的最初的目標實現之后,新的更高最求也困擾著這一類人,任何期望通過外在環境的改變來實現自己的幸福狀態都是不切實際的。

第四種幸福的價值取向是:“我現在很幸福,將來也會很幸福”的幸福型,這一類幸福的顯著體現就是有的人會追憶過去,有的人會憧憬未來,但是對于這兩種情形我們都是無法實現的,我們唯一可以關注的地方就是現在,如果在目前的當下,此時此刻,你感覺不到快樂,過去和未來都于事無補,但是并不是說憧憬未來或者懷念過去是無用之舉,但是對于幸福的提升來說,我們所能夠做的只有在為未來努力奮斗的同時,感受此刻的快樂,沙哈爾教授認為只有第四種價值取向是真正的幸福。

小伙伴們,你們是那種幸福呢?希望大家都可以在編程學習道路上追逐自己的第四種幸福價值取向!

總結

以上是生活随笔為你收集整理的(Java每日一谈:第四日——幸福的四象限)主流框架:Dubbo基础实战篇--Dubbo快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。