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

news/2024/4/19 1:20:24

在昨天的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的快速入门就完成了,大家可以进行这样的一个练习!

今天想要给大家分享的课外知识小课堂是关于幸福的话题:

        关于幸福,不同的人有不同的定义,人们对幸福的主观认同不同,所得出的结论也各不一样,有人认为富可敌国、腰缠万贯此乃幸福,因为少了普通人拼命为生活奋斗的努力与担忧;有人认为万众瞩目、受人膜拜是幸福,因为多了普通人所不曾享受的关注,但是在芸芸纵生中,也不乏有名利双收者坦言不知幸福是何物,一贫如洗者面对眼前的苟且仍然面带微笑。关于幸福,沙哈尔教授将其分成了四个象限,不同象限代表了不同的人生态度和行为模式。

第一种幸福价值取向是:“我现在很幸福,但是未来不幸福”的及时享乐型。这一种价值取向的人在现实生活中很常见,例如:爱好熬夜的人明明知道长时间的熬夜会对身体造成不可修复的损伤,但是碍于夜晚娱乐的即时满足感和快乐感,仍然选择黑夜的孤独!

第二种幸福价值取向是:“我现在不幸福,将来也不会幸福”的无助型。这里面会涉及到习得性无助,意思是无助不是天生的,而是后天习得的。小编在这里列举一个大象的例子,方便大家理解。在一只大象很小的时候,人们将其绑在一颗很粗壮的木桩上,刚开始小象会试图挣脱约束,但是经过几次尝试之后,便放弃了挣扎。当它后面成长为大象,拥有足够的力量摆脱木桩的束缚,它还是会认为自己无法摆脱,这就是习得性无助。对于习得性无助的情况,大家非常容易陷入这样的情形并且没有察觉,对于这样的情况,事实上,只要你愿意学习,愿意改变,情况就会有所改善。

第三种幸福的价值取向是:“我现在不幸福,但是将来我会变的幸福”的忍辱负重型,这样的情况也是非常常见的,拿我自己来说吧!因为小编是来自农村的家庭,父母也没有接受过什么太好的教育,在自己的成长过程中,父母为了家庭情况的改善也是做了比较多的努力,但是家庭有一个关于非常错误的教育观念就是只要我们家的孩子上了大学,家庭情况就会好转,我再等等,我相信大部分农村家庭的是会存在这样的思想观念,这就是忍辱负重型的显著体现,但是这样的价值取向真的可以获得幸福吗?答案是否定的,因为人的欲望是无穷无尽的,当你的最初的目标实现之后,新的更高最求也困扰着这一类人,任何期望通过外在环境的改变来实现自己的幸福状态都是不切实际的。

第四种幸福的价值取向是:“我现在很幸福,将来也会很幸福”的幸福型,这一类幸福的显著体现就是有的人会追忆过去,有的人会憧憬未来,但是对于这两种情形我们都是无法实现的,我们唯一可以关注的地方就是现在,如果在目前的当下,此时此刻,你感觉不到快乐,过去和未来都于事无补,但是并不是说憧憬未来或者怀念过去是无用之举,但是对于幸福的提升来说,我们所能够做的只有在为未来努力奋斗的同时,感受此刻的快乐,沙哈尔教授认为只有第四种价值取向是真正的幸福。

小伙伴们,你们是那种幸福呢?希望大家都可以在编程学习道路上追逐自己的第四种幸福价值取向!


http://www.ppmy.cn/news/894895.html

相关文章

人物肖像速写_骄傲家庭:肖像项目

人物肖像速写 2020 has been a solemn, transformative year. Pride month takes place in the context of a groundswell up-rising against racism and police brutality and in the continued isolation of COVID-19. 2020年是庄严&#xff0c;变革的一年。 骄傲月的发生是在…

集成学习案例一 (幸福感预测)

1. 背景介绍 ​ 幸福感是一个古老而深刻的话题&#xff0c;是人类世代追求的方向。与幸福感相关的因素成千上万、因人而异&#xff0c;大如国计民生&#xff0c;小如路边烤红薯&#xff0c;都会对幸福感产生影响。这些错综复杂的因素中&#xff0c;我们能找到其中的共性&#…

这5种家庭,最容易培养出优…

写的不错&#xff0c;&#xff0c;&#xff0c; 原文地址&#xff1a;这5种家庭&#xff0c;最容易培养出优秀的孩子&#xff01;越早看到越好 作者&#xff1a;光明 如何培养出一个优秀的孩子呢&#xff1f;很多人的第一反应是——让孩子好好学习&#xff0c;考入重点中学、重…

springboot+mysql创意家庭装修平台-计算机毕业设计源码81002

目 录 摘要 1 绪论 1.1研究意义 1.2开发背景 2 1.3JavaScript 运行模式 2 1.4系统开发技术的特色 3 1.5 springboot框架介绍 3 1.6论文结构与章节安排 4 2 创意家庭装修平台系统分析 5 2.1 可行性分析 5 2.2 系统流程分析 5 2.2.1数据增加流程 5 2.2.2数据修改流程 6 2.2.3…

(十四)集成学习(下)——幸福感预测

参考&#xff1a;DataWhale教程链接 集成学习&#xff08;上&#xff09;所有Task&#xff1a; &#xff08;一&#xff09;集成学习上——机器学习三大任务 &#xff08;二&#xff09;集成学习上——回归模型 &#xff08;三&#xff09;集成学习上——偏差与方差 &…

HTML中使背景图片自适应浏览器大小

解决办法&#xff1a; 1、图片不够大&#xff0c;又background属性不能拉伸图片&#xff1b; 2、只能用个div&#xff0c;把其z-index值设为负&#xff0c;并使这个div大小为整个body大小&#xff0c;在div里用<img> &#xff1b; 3、body的background属性去掉&#xff…

(附源码)springboot家庭装修管理系统 毕业设计 613205

Springboot家庭装修管理系统 摘 要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科&#xff0c;要高效率地把装修活动有机地组织起来&#xff0c;就必须加强装修资源管理&#xff0c;建立与自身特点…

有一个会做饭的男朋友幸福么?

顾小燕 &#xff0c;靠卖老公在知乎生存的人 10294 人赞同 强行来秀恩爱^ω^ 直接上图吧&#xff0c;我曾经男朋友&#xff0c;现在老公&#xff0c;90后。上班给小朋友看病&#xff0c;下班就回家做饭。 有时候也做甜点。 炒酸奶&#xff0c;好好吃&#xff0c;又健康&#x…

基于android的家庭理财app系统(android毕业设计)

每个家庭都希望过幸福美满的生活&#xff0c;但大多数人可能一生都无法满足。现代生活中我们除了追求精神上的财富不可缺少的也要追求房子、车子、高档理财等这些象征物质财富的东西。生活质量的保证&#xff0c;还是多数人努力追求的目标。这样一来家庭理财在家庭生活中就是必…

让人幸福的图片

我们总是抱怨 生活的压力 太大&#xff0c;工作&#xff0c; 家庭 &#xff0c; 金钱 &#xff0c;甚至 爱情 &#xff0c;本来该是生活的 快乐 所在&#xff0c;却变成了背上的枷锁。 习惯 面无表情的生活&#xff0c;习惯让自己的心很硬很硬。甚至忘记了这个世界…

小学生图片_2020中秋节对家人的祝福语 送手抄报小学生图片大全简单又漂亮

吃着月饼&#xff0c;我想起了嫦娥奔月的故事&#xff0c;如果我能当上宇航员该多好啊!一定要好好学习&#xff0c;长大以后发愤图强&#xff0c;去月球上看望嫦娥和玉兔。以下是小编整理了关于中秋节对家人的祝福语&#xff0c;希望你喜欢。 中秋节对家人的祝福语篇一 1、八月…

心里窝火无语的图片_很无语的心情说说图片

1、如果爱情真伟大&#xff0c;我有什么好挣扎&#xff0c;难道我会比别人差吗&#xff1f; 2、会对第二个人说的话就不要对我说了. 3、参与是走向成功的开始&#xff0c;结果并不是最重要的! 4、上联心态良好千帆竞发帆帆顺风 5、初中三年那么多高分试卷都不如最后那个号学籍网…

java就是我的幸福,嫁给幸福

嫁给幸福 图片发自App 如何做一名幸福的教师? “没有教师生活状态的根本改变&#xff0c;没有对幸福生活的追求&#xff0c;教师学习将永远是外在的。” 一、在压力的空隙里寻找自己的幸福 诺贝尔文学奖获得者、法国存在主义小说家阿尔贝加缪写过一篇《西西弗斯的神话》。故事…

幸福家庭杂志幸福家庭杂志社幸福家庭教育部2022年第1期目录

幸福家庭杂志幸福家庭杂志社幸福家庭教育部2022年第1期目录 快乐入园 根植邗江沃土 践行幸福教育 王卉; 1-3 拥抱自然 快乐探究 王永玲; 4-6 自主进餐 快乐成长——幼儿园有效开展自主进餐活动的方法 陈晓晨; 7-9 让爱在融合教育中绽放——谈谈“爱满天下”教…

【GitOps系列】自动化构建Image

文章目录 使用 GitHub Action 构建镜像使用 GitLab CI 构建镜像使用 Tekton 构建镜像Tekton组件安装Tekton 简介创建 Tekton Pipeline创建 Task创建 Pipeline创建 EventListener创建 TriggerTemplate创建 Service Account 和 PVC设置 Secret 创建 GitHub Webhook触发 Pipeline …

‘authorizationStatus‘ is deprecated: first deprecated in iOS 14.0

‘authorizationStatus’ is deprecated: first deprecated in iOS 14.0 Replace ‘authorizationStatus’ with ‘authorizationStatus’ 我们的app系统最低支持ios14.0 出问题的代码&#xff1a; - (BOOL)isUserOpenLocationFunction {CLAuthorizationStatus status [CLLoc…

3d可视化城市设计

数字孪生智慧城市场景开发&#xff0c;增强现代化治理水平和能力      我国早前就提出了用信息化手段感知社会态势、畅通沟通渠道和辅助科学决策的智慧城市建设要求&#xff0c;随着数字孪生技术越发成熟&#xff0c;数字孪生智慧城市场景开发将达到这一要求。      数…

Simcity模拟城市(移动版)

游戏框架 移动端充分利用零碎时间的模拟经营游戏。玩家可以建造六种类型的建筑&#xff0c;公路&#xff0c;民居&#xff0c;商店&#xff0c;工厂&#xff0c;资源建筑与城市发展建筑&#xff0c;并通过这些东西让城市增加人口。公路不需赘述&#xff0c;升级会耗费许多的金币…

three.js建筑灯光秀效果(模拟城市灯光秀)

一, 看看效果 二, 实现思路 1、加载建筑模型,或者创建建筑模型 2、创建灯光秀的灯光设备 灯光设备是贴在建筑墙体上的一个一个小块儿,每个小块儿都可以随意更改颜色,来达到灯光的效果 3、灯光设备颜色随着视频联动 使用VideoTexture视频贴图,然后在shader中根据当前…

严肃游戏(中山大学3D游戏作业1)

严肃游戏&#xff08;中山大学3D游戏作业1&#xff09; “严肃游戏”的定义游戏示例&#xff1a;《模拟城市》 “严肃游戏”的定义 严肃游戏是现代游戏的一种&#xff0c;它最早诞生于上个世纪60年代但它制作的核心目的不是为了纯娱乐&#xff0c;而是教授专业知识、、提供专业…