Dubbo

对@Reference 、@Resource和@Autowired的简单理解

北城余情 提交于 2020-08-11 08:53:03
主要谈一下对这三个注解的简单理解: 1.@Autowired org.springframework.beans.factory.annotation.Autowired SpringBoot项目中常用。简单来说就是引入由Spring容器管理的bean。 2.@Resource javax.annotation.Resource 作用相当于@Autowired,只不过@Autowired是byType自动注入,而@Resource默认byName自动注入。 3.@Reference @Reference是dubbo的注解,也是注入,他一般注入的是分布式的远程服务的对象,需要dubbo配置使用。 简单来说他们的区别: @Reference注入的是分布式中的远程服务对象,@Resource和@Autowired注入的是本地spring容器中的对象。 来源: oschina 链接: https://my.oschina.net/u/4280596/blog/4288085

天啦噜!生产机器连接数飙升到上万,背后发生了什么?

ⅰ亾dé卋堺 提交于 2020-08-11 08:28:16
0x00. 翻车现场 那是个月黑风高的夜晚,小黑哥成功将新版本发布到了生产,小心翼翼检查了应用日志,后续测试小姐姐验收成功。 恩,小黑哥我还是一如既往的稳~ 接着小黑哥就跑到楼下食堂吃个夜宵,谁知正吃到一半,线上运维同学发来几条告警信息,服务器连接数过多警告,连接数已经飙升到上万。 天啦撸,赶紧放下正在啃的鸡腿,火速跑到工位上查看问题。 0x01. 历尽艰辛,深入排查 打开电脑,首先确认生产交易一切还正常。查看这段时间日志,发现并没有什么异常情况,日志都是正常输出。没办法只好再次走查此次改动的代码,发现全是业务代码,并没有任何与网络连接有关的代码改动。 问题真的请奇怪,一时半会想不到解决方案,只好先实施重启大法。重启过后,连接数下降了,到达了正常阈值。但是不一会连接数持续升高,不一会还是升到上万。 这下重启解决不了办法,只好从应用出发,找找到底什么问题。 这个应用是一个路由服务,会根据上游系统指定路由编码,将交易分发到下游子系统。架构图如下: 之前在这篇文章 路由系统演化史 讲过,路由系统使用 Dubbo API ,代码如下: 由于我们还有另外一套系统,也部署这个应用,但是该系统生产机器连接数却很少。交叉比对了两套系统应用的系统配置值,只有 connections 设置不一样,当前有问题的系统设置为 1000 ,另外一个系统为 10 。 大致找到原因,也将 connections

你还在担心rpc接口超时吗

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-11 07:49:43
在使用dubbo时,通常会遇到timeout这个属性,timeout属性的作用是:给某个服务调用设置超时时间,如果服务在设置的时间内未返回结果,则会抛出调用超时异常:TimeoutException,在使用的过程中,我们有时会对provider和consumer两个配置都会设置timeout值,那么服务调用过程中会以哪个为准?橘子同学今天主要针对这个问题进行分析和扩展。 三种设置方式 以provider配置为例: #### 方法级别 <dubbo:service interface="orangecsong.test.service.TestService" ref="testServiceImpl"> <dubbo:method name="test" timeout="10000"/> </dubbo:service> #### 接口级别 <dubbo:service interface="orangecsong.test.service.TestService" ref="testServiceImpl" timeout="10000"/> #### 全局级别 <dubbo:service ="10000"/> 优先级选择 在dubbo中如果provider和consumer都配置了相同的一个属性,比如本文分析的timeout,其实它们是有优先级的,consumer方法配置

Apache Dubbo 被曝出“高危”远程代码执行漏洞

自古美人都是妖i 提交于 2020-08-11 07:44:35
击上方“朱小厮的博客”,选择“ 设为星标” 后台回复" 加群 ",加入组织 来源:22j.co/brUT 0x01 漏洞背景 2020年06月23日, 360CERT监测发现 Apache Dubbo 官方 发布了 Apache Dubbo 远程代码执行 的风险通告,该漏洞编号为 CVE-2020-1948,漏洞等级:高危。 Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 Apache Dubbo Provider 存在 反序列化漏洞,攻击者可以通过RPC请求发送无法识别的服务名称或方法名称以及一些恶意参数有效载荷,当恶意参数被反序列化时,可以造成远程代码执行。 该漏洞的相关技术细节已公开。 对此,360CERT建议广大用户及时安装最新补丁,做好资产自查以及预防工作,以免遭受黑客攻击。 0x02 风险等级 360CERT对该漏洞的评定结果如下: 威胁等级:高危 影响面:广泛 0x03 漏洞详情 Apache Dubbo Provider 存在 反序列化漏洞,攻击者可以通过RPC请求发送无法识别的服务名称或方法名称以及一些恶意参数有效载荷,当恶意参数被反序列化时,可以造成远程代码执行。 0x04 影响版本 Dubbo 2.7.0 – 2.7.6 Dubbo 2.6.0

最新四面京东拿offer回来分享面试经验总结(技术三面+HR面)

我是研究僧i 提交于 2020-08-11 07:27:07
正文 京东一面: 离职原因 Zookeeper在项目中的使用及原理; Springcloud的一些组件介绍; Redis实现方式: Redis是单线程还是多线程的 Redis集群是如何部署的 为什么使用setnx,或者说set 和setNx有什么区别 系统在10:05 设置一个值,并给出5分钟的过期时间,系统刚刚set完之后redis集群崩溃,10:11分系统重启成功,那么redis中set的值是否还存在? 多线程的创建方式 服务器CPU数量及线程池数量的关系? 说说Mysql的sql优化 你认为自己的技术怎么样? 二面: Mysql是集群还是单节点;最大的表中数据量大约是多少?3000w-4000w; Mysql主从配置是DBA去做还是自己去做?mysql主从同步的机制的原理?mysql主从复制主要有几种模式? Mysql的性能优化方案有哪些 Mysql的索引有哪些,缺省是哪个 Mysql的事务类型有哪些,缺省是那个 Redis持久化方式:rdb、aof;redis中哪个版本开始可以对分布式使用; Nginx的使用场景; Spark主要用来做什么的? 前端了解么:JavaScript有没有闭包的概念? 离职原因? 技术三面: Dubbo超时重试;Dubbo超时时间设置 tomcat的线程如何管理 都有几种消息队列,性能最好的是哪种 dubbo的理解 netty的理解 nio的理解

Dubbo测试环境服务调用隔离这么玩对么

五迷三道 提交于 2020-08-11 05:23:37
背景阐述 前几天,有位同学问我一个关于 Dubbo 的问题。他的诉求是这样子的: 诉求一 第一个诉求是本地开发的时候想自己调用自己的服务,比如自己在改 A 服务,然后出问题了,本地再启动一个 B 服务,A 服务调用 B 服务直接排查问题。 目前的问题是用的同一个注册中心,所以会调用到其他的服务实例。 还有就是去网上找了一些文章的资料,按照资料上的配置没有效果,也就是在@Reference 配置 url 来指定调用的服务地址。 配置如下: @Reference(url="dubbo://localhost:20880") 诉求二 目前他们的测试环境没有使用 Docker 来部署,而且每个服务只部署了一个实例。问题就是当一个项目并行开发时有多个分支,这些分支得合并后一起部署测试。经常会出现代码冲突等问题。 还有就是快要上线时,需要下掉其他的分支做回归测试。但是会出现其他团队也要同一天上线,就只能协商等待来解决。 最好的方式就是可以实现一个分支部署一个实例,对于他们目前的这个规模和投入这个暂时做不了。所以他向我请教,有没有什么更好更快的方式。 解决方案 既然找了我,我还是给出一些建议吧,不一定很好,仅供参考。 诉求一解决方案 @Reference 在@Reference 中指定 url 是可以的,只是那位同学配置的地址有问题,在地址后面应该加上接口和版本的信息。 @Reference

微服务学习与思考(04):微服务技术体系

瘦欲@ 提交于 2020-08-11 05:22:02
前面微服务3篇文章: 微服务学习与思考(01):什么是微服务?微服务的优势和劣势 微服务学习与思考(02):微服务实施前有哪些问题需要思考? 微服务学习与思考(03):微服务总体架构图解 一、微服务技术体系 下图列出了微服务的技术体系: 二、Golang微服务技术栈 微服务框架 go-micro go-kit 国内的bilibili和斗鱼也出了一个微服务框架: kratos bilibili出品 jupiter 斗鱼出品 网关 kong nginx +lua traefik apisix 服务注册和发现 consul etcd zookeeper 配置中心 Apollo , Nacos ... ... 服务治理 断路器: hystrix-go 流量控制: sentinel-golang 从限流、流量整形、熔断降级、系统负载保护等多个维度来帮助您保障微服务的稳定性。 链路监控 zipkin,pinpoint,skywalking,jaeger 日志、业务、系统监控 prometheus ELK CI/CD jenkins drone ...... golang技术学习和微服务学习, 这里有个学习路线图 ,可以去学习 三、java微服务技术栈 用java技术开发微服务,比较主流的选择有:Spring Cloud 和 Dubbo。 Spring Cloud Spring Cloud

替代 Hystrix,Spring Cloud Alibaba Sentinel 快速入门

痴心易碎 提交于 2020-08-11 04:50:34
提起 Spring Cloud 的限流降级组件,一般首先想到的是 Netflix 的 Hystrix。 不过就在2018年底,Netflix 宣布不再积极开发 Hystrix,该项目将处于维护模式。官方表示 1.5.18 版本的 Hystrix 已经足够稳定,可以满足 Netflix 现有应用的需求,所以接下来其会把焦点转向对于自适应的实现,更多关注对应用程序的实时性能做出响应。对于新应用的熔断需求,将采用其它项目实现,Netflix 推荐了 Resilience4j。 作为 Spring Cloud Netflix 重要套件,Hystrix已经成为保障微服务稳定性的首选应用。其实除了 Netflix 和 Resilience4j,限流降级还有一个新的选择,就是阿里巴巴的Sentinel组件。 一、阿里开源 Sentinel 简介 2018年8月,阿里巴巴宣布将 Sentinel 进行开源,同时推出了结合Dubbo的适配器,捐赠给了Apache Dubbo社区。 1.Sentinel 的历史 2012 年,Sentinel 诞生,主要功能为入口流量控制。 2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量归整场景以及生产实践。 2018 年,Sentinel 开源,并持续演进。 2

Dubbo服务调试管理实用命令

≯℡__Kan透↙ 提交于 2020-08-11 03:20:19
公司如果分项目组开发的,各个项目组调用各项目组的接口,有时候需要在联调环境调试对方的接口,可以直接telnet到dubbo的服务通过命令查看已经布的接口和方法,并能直接invoke具体的方法,我们可以利用telnet命令进行调试、管理。 Dubbo2.0.5以上版本服务提供端口支持telnet命令,下面我 通过实例抛砖引玉 一下: 1.连接服务 测试对应IP和端口下的dubbo服务是否连通,cmd命令如下 telnetlocalhost 20880 正常情况下,进入telnet窗口,键入回车进入dubbo命令模式。 dubbo> 2.查看服务列表 查看服务 dubbo>ls com.test.DemoService 查看服务中的接口 dubbo>ls com.test.DemoService queryDemoPageList insertDemolist uploadDemoList deleteDemolist ls (listservices and methods) ls 显示服务列表。 ls -l 显示服务详细信息列表。 lsXxxService 显示服务的方法列表。 ls -lXxxService 显示服务的方法详细信息列表。 3.调用服务接口 调用接口时,以JSON格式传入参数(这点很方便 😄),然后打印返回值和所用时间。 dubbo>invoke com.test

spring cloud 链路跟踪 sleuth

China☆狼群 提交于 2020-08-11 01:22:40
最近公司app后台奔溃的问题,更快的定位问题,就是用链路追踪技术,来追踪到是哪个节点出现问题。 SpringCloud之链路跟踪Sleuth Dubbo + Zipkin + Brave实现全链路追踪 SpringCloud--Sleuth日志跟踪(十四) 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth) JeeSite 4.2 Spring Cloud SpringCloudLearning 来源: oschina 链接: https://my.oschina.net/miaojiangmin/blog/4325715