Dubbo

跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗?(源码感悟)

白昼怎懂夜的黑 提交于 2020-03-07 23:33:41
1 前言 由于现在微服务很流行,越来越多企业采用了SpringCloud微服务架构,而SpringBoot则是快速构建微服务项目的利器。于是 源码笔记 以此为切入点,将SpringBoot作为我们源码分析的第一个开源项目,之后还会对更多开源项目进行源码分析。要进行源码分析,笔者结合自身经历来跟大家聊聊 我们为什么要学习源码 这个话题,大家一起探讨学习。 我们程序员在开发代码时每天都在使用别人写好的框架,无论你是在使用Spring生态的Spring核心,SpringMVC,SpringBoot和SpringCloud等框架,还是在使用阿里系的Dubbo,RocketMQ,Seata,Druid等中间件框架,亦或你是搞大数据的,在使用Apache组织的Zookeeper,Hadoop,Hive,Spark等大数据组件框架,这些开源框架都给我们的项目编码带来了极大的方便,促进了我们的开发效率。是的,这些都是开源大神们帮我们造好的轮子,我们直接使用即可,而且用起来很少出bug,因为这些框架一般都是经过考验的才能流行起来。 可能大部分人会认为,这些轮子都已经造好了,我们直接用即可。是的,这些开源框架对我们使用来说是透明的,它们就像一个个黑盒子。至于这些黑盒里面装的是什么东西,里面是怎样构造的,如果没有去探究这些黑盒的话,我们无从得知。但是,我们做开发的天天跟这些黑盒打交道

分析开源项目源码,我们该如何入手分析?(授人以渔)

点点圈 提交于 2020-03-07 23:27:37
1 前言 本文接上篇文章 跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗? ,那么本篇文章再继续跟小伙伴们聊聊源码这个话题。 在工作之余开始写SpringBoot源码分析专栏前,跟小伙伴们聊聊“ 分析开源项目源码,我们该如何入手分析? ”这个话题,我们就随便扯皮,反正是跟小伙伴们一起学习交流,没必要太正式。 小伙伴们看完本文后,若有自己的源码阅读心得可以在下面进行评论或私聊我进行分享, 让我从小伙伴们身上GET多点源码阅读的一些技巧 ,嘿嘿。 2 学习开源框架源码到底难不难? 那么,先跟小伙伴们聊聊学习开源框架源码的感受,请问你们认为学习开源框架源码到底难不难?这是一个开放的话题,可谓仁者见仁,智者见智。有一些开源大牛们会说, So easy! ;有一些有源码阅读习惯且工作多年的小伙伴们会说, 还好。 ;有一些刚开始学习源码的小伙伴们会说, 太难了! 。是的,不同工作经验不同技术层次的人的回答是不一样的。 那么刚开始学习开源项目源码难不难呢?应该对绝大部分小伙伴们来说应该是偏难的。为什么呢? 可能有以下四点原因 : 一个能流行起来的成熟的开源项目必定功能齐全,可扩展,而功能齐全可扩展的开源项目必定很复杂,代码量大 。比如Spring5框架的源码行数达到了六七十万行,SpringBoot的源码行数达到了25万行左右,Dubbo和RocketMQ的源码行数达到了10万行

zookeeper和dubbo安装与搭建(2)

∥☆過路亽.° 提交于 2020-03-07 18:59:58
Zookeeper+Dubbo 安装与搭建(2) (原创:黑小子-余) 一、环境配置:zookeeper3.6.0 + dubbo3.5.4 + maven3.6.1 + jdk1.8 + tomcat8.5 1、Zookeeper下载与配置 (1)Zookeeper3.6.0官网下载: -> 点击 <- 。 (2)解压打开,新建两个目录:logs和data(名字随意)。 (3)打开conf,复制一份zoo_sample.cfg,并改名zoo.cfg。 (4)打开zoo.cfg,来修改一下配置。 (5) windows 启动zk: 直接双击zkServer启动,可能会闪退;或者打开cmd窗口,进入到zk的bin目录,输入:zkServer.cmd即可。 (6)可以通过cmd命令:“netstat -ano” 或 通过 “netstat -ano | findstr 2181” 更快的查看zk的进程。 (7)粗鲁一点:关闭zk,直接×掉cmd窗口即可。 2、Dubbo下载与配置 (1)dubbo-admin-2.5.x.war官网下载: -> 点击 <- dubbo源码提供了两个下载地址,一个是dubbo官网,一个是GitHub上,我们推荐从GitHub上下载。 原因: dubbo官网提供的源码版本,都是2.6版本之后的源码,没有2.6版本之前的源码,而2.6之后的版本

分析开源项目源码,我们该如何入手分析?(授人以渔)

送分小仙女□ 提交于 2020-03-07 17:04:47
1 前言 本文接上篇文章 跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗? ,那么本篇文章再继续跟小伙伴们聊聊源码这个话题。 在工作之余开始写SpringBoot源码分析专栏前,跟小伙伴们聊聊“ 分析开源项目源码,我们该如何入手分析? ”这个话题,我们就随便扯皮,反正是跟小伙伴们一起学习交流,没必要太正式。 小伙伴们看完本文后,若有自己的源码阅读心得可以在下面进行评论或私聊我进行分享, 让我从小伙伴们身上GET多点源码阅读的一些技巧 ,嘿嘿。 2 学习开源框架源码到底难不难? 那么,先跟小伙伴们聊聊学习开源框架源码的感受,请问你们认为学习开源框架源码到底难不难?这是一个开放的话题,可谓仁者见仁,智者见智。有一些开源大牛们会说, So easy! ;有一些有源码阅读习惯且工作多年的小伙伴们会说, 还好。 ;有一些刚开始学习源码的小伙伴们会说, 太难了! 。是的,不同工作经验不同技术层次的人的回答是不一样的。 那么刚开始学习开源项目源码难不难呢?应该对绝大部分小伙伴们来说应该是偏难的。为什么呢? 可能有以下四点原因 : 一个能流行起来的成熟的开源项目必定功能齐全,可扩展,而功能齐全可扩展的开源项目必定很复杂,代码量大 。比如Spring5框架的源码行数达到了六七十万行,SpringBoot的源码行数达到了25万行左右,Dubbo和RocketMQ的源码行数达到了10万行

LR12调用dubbo接口笔记

纵饮孤独 提交于 2020-03-07 10:28:12
这两天礼拜在测试额度中心单系统的几个交易,是通过dubbo直接调用服务的方式去访问,于是也学习了包括dubbo调用,复习了java基础等方面的知识,这篇文章做一个总结,把其中实现的关键点记录下来,以便以后工作需要。 1、dubbo一般是整合了spring框架的,因此要调用dubbo上的服务,必须准备好相关的jar包和配置文件。当然JDK1.8以上的开发环境也是必须的。 jar包: 主要包括了dubbo和spring运行所需。列表如下:包括但不限于红框部分,有些需要根据项目要求来。 配置文件 :主要是消费者配置文件,因为服务需要采用spring框架控制反转的形式去获取java bean对象。 主要配置要素包括:注册中心地址,应用服务器集群组名,以及各个接口的服务ID(group中配置的名称),前面的id可以自己命名 2、 先在eclipse中调通脚本,新建工程,注意目录存放方式: 新建resouce文件夹(在bulid path中配置成默认路径,脚本运行时会自动去读取),config里面存放bootstrap.properties文件,该文件可能没有作用,但是由于该程序运行需要加载,因此必须存在。dubbo-consumer.xml也存放在里面(如果是loadrunner里面,只要跟脚本路径一致即可) 3、程序代码结构: package dubbo_test; import java

搭建一套简单的dubbo框架

江枫思渺然 提交于 2020-03-07 04:38:08
初学dubbo,并且自己动手搭了一下,本篇博客主要讲解如何搭建一套简单的dubbo框架 一、zookeeper 运行dubbo框架的项目需要zookeeper的支持,所以首先需要下载zookeeper的安装包,然后放在本地解压就可以了。还可以下载一个zookeeper的管理( https://github.com/DeemOpen/zkui ),运行管理项目可以看到zookeeper后台信息。 二、创建dubbo项目 1、创建一个maven项目,然后再该项目中创建三个模块(consumer、provider、service) 2、在每个模块的pom文件中引入相关的maven依赖 consumer(controller层) < dependencies > < dependency > < groupId > com . qcby < / groupId > < artifactId > service < / artifactId > < version > 1.0 - SNAPSHOT < / version > < / dependency > < dependency > < groupId > org . springframework . boot < / groupId > < artifactId > spring - boot - starter - web < /

何时进行服务熔断、服务降级、服务限流?

回眸只為那壹抹淺笑 提交于 2020-03-07 02:13:42
伴随着微服务架构被宣传得如火如荼,一些概念也被推到了我们面前(管你接受不接受),其实大多数概念以前就有,但很少被提的这么频繁(现在好像不提及都不好意思交流了)。想起有人总结的一句话,微服务架构的特点就是:“一解释就懂,一问就不知,一讨论就吵架”。 服务熔断 在介绍熔断机制之前,我们需要了解微服务的雪崩效应。在微服务架构中,微服务是完成一个单一的业务功能,这样做的好处是可以做到解耦,每个微服务可以独立演进。但是,一个应用可能会有多个微服务组成,微服务之间的数据交互通过远程过程调用完成。这就带来一个问题,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。 熔断机制是应对雪崩效应的一种微服务链路保护机制。我们在各种场景下都会接触到熔断这两个字。高压电路中,如果某个地方的电压过高,熔断器就会熔断,对电路进行保护。股票交易中,如果股票指数过高,也会采用熔断机制,暂停股票的交易。同样,在微服务架构中,熔断机制也是起着类似的作用。当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。 在Spring

dubbo知识点

假装没事ソ 提交于 2020-03-06 16:47:39
Dubbo Dubbo 是基于 netty 框架的,最大的特性就是 NIO Dubbo 在 spring 中的启动加载过程 在 spring 启动过程中,通过 applicationContext 去扫描配置项,扫描到 Dubbo.xml ,这个时候的 dubbo 就会初始化成一个 bean 对象,和其他 bean 本身没有区别,并且此时的 dubbo 还没有注册到注册中心暴露出去,只是一个最普通的 bean 存在 而一切顺利完成后,接下来就是暴露的过程。会调用 bean 中的导出 export 方法。然后找到所有的 provide 端中的服务,既我们的 dubbo:service ,然后把里面的配置项,包括接口名,接口路径等一系列参数封装成一个 url 然后找到我们 dubbo 。 Xml 中的 protocol 配置,一般这里都配的是 zk 以及 zk 的注册地址 address ,然后发送暴露,而暴露及时把这些 url 数据,封装成一个 key-value 的结构,然后存入一个全局的 currentHashMap 中 完成上述步骤后,暴露就完成了。接下来就是启动一个 netty 服务监听消费者消费; Consumer 和 provide 的通信过程 首先明确一点, dubbo 是采用 socket 长连接双工模式的,传输方式的单连接 NIO 异步传输。 客户端发起 dubbo

JAVA最清晰的学习过程,适合正在努力的你

左心房为你撑大大i 提交于 2020-03-06 15:32:41
本文会从一个完整的电商系统作为切入点,带着大家看看,我们需要学些啥,我甚至还收集配套资料基本上算是麻雀虽小五脏俱全,我今天就用它开刀,一步步剖析,我会讲一下我们可能会接触的技术栈可能不全,但是够用,最后给个学习路线。 Tip:请多欣赏一会,每个点看一下,看看什么地方是你接触过的,什么技术栈是你不太熟悉的,我觉得还算是比较全的,有什么建议也可以留言给我。 不知道大家都看了一下没,现在我们就要庖丁解牛了,我从上到下依次分析。 前端 你可能会会好奇,你不是讲后端学习路线嘛,为啥还有前端的部分,我只能告诉你,傻瓜,肤浅。 我们可不能闭门造车,谁告诉你后端就不学点前端了? 前端现在很多也了解后端的技术栈的,你想我们去一个网站,最先接触的,最先看到的是啥? 没错就是前端,在大学你要是找不到专门的前端同学,去做系统肯定也要自己顶一下前端的,那我觉得最基本的技术栈得熟悉和了解吧,毕竟前端和后端相互忽悠的也不少,我现在也是偶尔会开发一下我们的管理系统主要是 VUE 和 React 。 在这里我列举了我目前觉得比较简单和我们后端可以了解的技术栈,都是比较基础的。 作为一名后端了解部分前端知识还是很有必要的,在以后开发的时候,公司有前端那能帮助你前后端联调更顺畅,如果没前端你自己也能顶一下简单的页面。 HTML、CSS、JS、Ajax 我觉得是必须掌握的点,看着简单其实深究或者去操作的话还是有很多东西的

Dubbo学习心得

与世无争的帅哥 提交于 2020-03-06 10:27:39
一、什么是Dubbo? Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。 参考资料: https://www.cnblogs.com/zeussbook/p/10454099.html 相关名词解释: 微服务架构:按功能拆分模块,每个模块有 服务消费者和服务提供者两个项目。 RPC:RPC(Remote Procedure Call):远程过程调用。 Spring框架:Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Zookeeper:ZooKeeper是一个 分布式 的,开放源码的 分布式应用程序 协调服务,是 Google 的Chubby一个 开源 的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 二、Dubbo的作用 1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由